Ubuntu16.0.4 メールサーバー構築設定(バーチャルメールボックス) Postfix + Dovecot
さくらVPSでメールサーバーを構築したときの手順です。
下記バージョンで設定しました。
バーチャルメールボックスで
info@mail.example.com
上記のメールアドレスを作成します。
バーチャルメールボックスを使えばUbuntuのユーザーアカウントを追加しなくて、メールアドレスを追加することができます。
必要パッケージのインストール
sudo apt-get install postfix dovecot-core dovecot-imapd dovecot-pop3d
Postfixのインストール中 Configuration画面で「No Configuration」を選択
Postfixの設定 (SMTP送信メールサーバー)
Postfixの設定ファイルを作成していきます。
設定ファイルのサンプルが "/usr/share/postfix/main.cf.dist" にあるので、それをコピーしてきて編集していくのもいいです。私は新規で以下の設定ファイルを作成しました。
> sudo vi /etc/postfix/main.cf ## 基本設定 ### # ホスト名指定 myhostname = mail.example.com # ドメイン名指定 mydomain = example.com # 受信を許可する宛先ドメイン名 mydestination = # 外部からのメール受信を許可 inet_interfaces = all # IPアドレスのプロトコル (IPV4のみ) inet_protocols = ipv4 # mynetworks_style = host, localhost # mynetworks = 127.0.0.0/8 # Maildir形式のメールボックス home_mailbox = Maildir/ # メールサーバーソフト名の隠蔽化 smtpd_banner = $myhostname ESMTP unknown # 送受信メールサイズ (10Mに制限) message_size_limit = 10485760 # メールボックスサイズ (1Gに制限) mailbox_size_limit = 1073741824 # alias_maps = hash:/etc/aliases ### sasl関連設定 ### smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname ### TLS関連設定### smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # 中継に関する設定、不正中継をされないために設定 smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination ### 仮想ドメイン/仮想ユーザの設定 virtual_mailbox_domains = mail.example.com virtual_mailbox_base = /home/vmail virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_uid_maps = static:10000 virtual_gid_maps = static:10000
メール送信はOP25B対策のため25番ポートを利用せずに、サブミッションポート(587番)を利用します。 "/etc/postfix/master.cf" のコメントを解除していきます。
> sudo vi /etc/postfix/master.cf submission inet n - n - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_relay_restrictions=permit_sasl_authenticated,reject . . #smtps inet n - y - - smtpd
Dovecotの設定 (受信メールサーバー)
> sudo vi /etc/dovecot/dovecot.conf # IPv4のみListen listen = *
> sudo vi /etc/dovecot/conf.d/10-master.conf unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
> sudo vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~/Maildir:INDEX=/home/vmail/%n valid_chroot_dirs = /home/vmail
> sudo vi /etc/dovecot/conf.d/10-mail.conf # メールディレクトリ指定 mail_location = maildir:~/Maildir:INDEX=/home/vmail/%n # メールプロセスのchroot先指定 valid_chroot_dirs = /home/vmail
> sudo vi /etc/dovecot/conf.d/10-ssl.conf # SSLを有効化 ssl = yes # 証明書設定(Ubuntu標準のものを指定) ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key # SSLプロコトル ssl_protocols = !SSLv2
> sudo vi /etc/dovecot/conf.d/10-auth.conf # PlainTextを無効化 disable_plaintext_auth = yes # 認証メカニズムに scram-sha-1 を利用 auth_mechanisms = plain login scram-sha-1 # auth-system.conf.ext のインクルードを停止 #!include auth-system.conf.ext # auth-passwdfile.conf.ext のインクルードを有効化 !include auth-passwdfile.conf.ext
> sudo vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext passdb { driver = passwd-file args = scheme=CRYPT username_format=%n /etc/dovecot/users } userdb { driver = passwd-file args = username_format=%n /etc/dovecot/users }
imap/pop3認証用のSCRAM-SHA-1パスワードの生成
ここで入力したパスワードはメールソフトのアカウント認証で使います。
> sudo doveadm pw -s scram-sha-1 Enter new password: Retype new password: {SCRAM-SHA-1}xxxxxxxxxxx
imap/pop3認証用のパスワードファイルを作成
パスワードファイルの書式は以下になります。
ユーザー名:{SCRAM-SHA-1}xxxxxxxxxxx:uid:gid::メールボックスのパス
> sudo vi /etc/dovecot/users info:{SCRAM-SHA-1}ea07d83fde6deee3...:10000:10000::/home/vmail/info
バーチャルメール用のアカウントとディレクトリ作成
所有者となるグループ、ユーザーの作成
グループ、ユーザー = vmail UID、GID = 10000
sudo groupadd -g 10000 vmail sudo useradd -u 10000 -g vmail -s /bin/false -d /home/vmail -m vmail
sudo mkdir /home/vmail sudo chown vmail:vmail /home/vmail sudo chmod 700 /home/vmail sudo mkdir -p /home/vmail/info/Maildir/{new,cur,tmp} sudo chown -R vmail:vmail /home/vmail/info
メールアドレスとディレクトリのマッピングファイル作成
メールアドレスとメールを保存するディレクトリとの対応ファイルを作成します。
書式は以下になります。
メールアドレス ユーザー名/Maildir/
> sudo vi /etc/postfix/vmailbox info@mail.example.com info/Maildir/
postmap コマンドでマッピングファイルを作成
> sudo postmap /etc/postfix/vmailbox
sudo systemctl restart postfix sudo systemctl restart dovecot
ポート開放 iptables の設定
メールを送受信するためにポートを開けます。
110番 = メール受信(IMAP)
143番 = メール受信(POP)
587番 = メール送信(SMTP)
> sudo vi /etc/iptables/iptables.rules -A INPUT -p tcp --dport 110 -j ACCEPT -A INPUT -p tcp --dport 143 -j ACCEPT -A INPUT -p tcp --dport 587 -j ACCEPT
変更の反映
sudo iptables-restore < /etc/iptables/iptables.rules
現在のルールの確認
sudo iptables -L -n -v --line-numbers
メールクライアントの設定(Thunderbird バージョン52)
Thunderbirdを起動して、「ファイル」 => 「新規作成」 => 「既存のメールアカウント」
名前、メールアドレス、パスワードを入力
この時のパスワードは、SCRAM-SHA-1のパスワードの生成のときに入力したのを使う。
下記のようにサーバーからアカウント設定が見かればおkです。