postfixでバーチャルメールボックス
postfixとdovecotでバーチャルメールボックスを使用したメールサーバを構築する方法
バーチャルドメインの実装方法には幾つかあるようです。
1.追加する宛先ドメインを「mydestination」に追加するだけ
2.バーチャルエイリアスで設定する方法
Unixアカウントにメールアドレスのエイリアスを付けて実現します。
3.バーチャルメールボックスで設定する方法
Unixアカウントは使用せずvpopmailのように特定のUnixユーザーで仮想的に実行します。
ここでは「3.バーチャルメールボックスで設定する方法」で実現することにします。
メールアカウントの認証にはユーザー名@ドメイン名を指定します。
バーチャルメールボックスを使えるように設定を追加する
main.cfに以下の様にの設定を追加すにはる。
# 最終行へ追記 # 送受信メールサイズを100Mに制限 message_size_limit = 104857600 # メールボックスサイズを1Gに制限 mailbox_size_limit = 1073741824 # # バーチャルメールボックスの設定 # virtual_mailbox_domains = /etc/postfix/virtual-domains virtual_mailbox_base = /home/mail/virtual virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox virtual_uid_maps = static:10000 virtual_gid_maps = static:10000
メールが配信されるディレクトリを作成する
# mkdir /home/mail/virtual # chown -R 10000.10000 /home/mail/virtual
バーチャルドメインの設定
mydestinationという項目に、ここで追加したドメインと同じものがないようにしないとそのドメイン宛のメールはUnixアカウント宛に配送されてしまう。
# /etc/postfix/virtual-domains ドメイン名1 ドメイン名2 ドメイン名3
バーチャルドメインのユーザー設定
バーチャルメールボックスのユーザーの設定は「/etc/postfix/virtual-mailbox」で行う。
行末の「/」を忘れないように
「 status=deferred (delivery failed to mailbox Maildir: cannot open file: Is a directory)」と怒られます!!
foo@example.com example.com/foo/Maildir/ hoge@example.com example.com/hoge/Maildir/ hoge@example1.com example1.com/hoge/Maildir/
設定を反映させる。
# postmap /etc/postfix/virtual-mailbox # systemctl restart postfix
バーチャルドメインでのDovecotの設定
# vi /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp listen = *, :: dict { } !include conf.d/*.conf !include_try local.conf
# vi /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = no auth_mechanisms = cram-md5 plain login !include auth-passwdfile.conf.ext !include auth-static.conf.ext
# vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:/home/mail/virtual/%d/%n/Maildir namespace inbox { inbox = yes } first_valid_uid = 1000 mbox_write_locks = fcntl
# vi /etc/dovecot/conf.d/10-ssl.conf ssl = no ssl有効時は ssl = required ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem
# vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext passdb { driver = passwd-file args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users }
# vi /etc/dovecot/conf.d/auth-static.conf.ext userdb { driver = static args = uid=10000 gid=10000 home=/home/mail/virtual/%d/%n }
dovecotを起動
# systemctl restart dovecot
ユーザーの追加は
# doveadm pw -s CRAM-MD5 -p plantext {CRAM-MD5}ハッシュ値 # vi /etc/dovecot/users ユーザー名@ドメイン名:{CRAM-MD5}ハッシュ値
dovecotの設定確認
# doveconf -n # 2.2.10: /etc/dovecot/dovecot.conf # OS: Linux 3.10.0-693.21.1.el7.x86_64 x86_64 CentOS Linux release 7.4.1708 (Core) xfs auth_mechanisms = cram-md5 plain login disable_plaintext_auth = no first_valid_uid = 1000 mail_location = maildir:/home/mail/virtual/%d/%n/Maildir mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users driver = passwd-file } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } } ssl = no ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem userdb { args = uid=vmail gid=vmail home=/home/vmail/%d/%n driver = static }
***Tips グリーティングメッセージの変更
標準のままでPOP3で接続すると
+OK Dovecot ready.
と帰ってきますが以下のようにこのメッセージを変更することが可能です
# vi /etc/dovecot/dovecot.conf #login_greeting = Dovecot ready. ↓ login_greeting = POP3 Server ready. # systemctl reload dovecot
こうすると
+OK POP3 Server ready.
の様になります。
バーチャルドメインを追加する場合
Postfix側の設定
宛先ドメインの追加
「/etc/postfix/virtual-domains」に以下の様にの設定を追加
example.com example2.com example3.com example4.com
バーチャルドメインのユーザー追加
「/etc/postfix/virtual-mailbox」に以下の様にの設定を追加
foo@example2.com example2.com/foo/Maildir/
設定を反映させる。
# postmap /etc/postfix/virtual-mailbox # systemctl restart postfix
dovecot側の設定
# doveadm pw -s CRAM-MD -p plantext {CRAM-MD5}ハッシュ値 # vi /etc/dovecot/users ユーザー名@ドメイン名:{CRAM-MD5}ハッシュ値
Submission対応
OPB25対応する為Submission方式で対応する。
# vi /etc/postfix/master.cf -o syslog_name=postfix/submission -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
# systemctl restart postfix
AntiVirus+Spamの設定
予めSophos Anti Virus for Linux Free Editionとamavisd-new、spamassassinが必要です。
# vi /etc/postfix/master.cf # 最終行に追記 smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000
# systemctl restart postfix