メール設定まとめ
ServersMan@VPSでのメール設定のまとめ。
目標
Postfix
/etc/postfix/main.cf
Postfixのメイン設定ファイル。記述が有効な箇所のみを抜粋。
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix myhostname = mydomain.com mydomain = mydomain.com #myorigin = $myhostname myorigin = $mydomain inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost #mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain mydestination = unknown_local_recipient_reject_code = 550 #alias_maps = dbm:/etc/aliases alias_maps = hash:/etc/aliases #alias_maps = hash:/etc/aliases, nis:mail.aliases #alias_maps = netinfo:/aliases #alias_database = dbm:/etc/aliases #alias_database = dbm:/etc/mail/aliases alias_database = hash:/etc/aliases #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases #home_mailbox = Mailbox home_mailbox = Maildir/ #smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_banner = $myhostname ESMTP MyMTA(0.1) debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES # SMTP-Auth # smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination # message_size_limit (10M) # message_size_limit = 10485760 # virtual domain # local_transport = virtual virtual_transport = virtual virtual_mailbox_domains = mydomain.com virtual_mailbox_base = /home/vmail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 virtual_alias_maps = hash:/etc/postfix/virtual # smtp tls suppoert # smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
/etc/postfix/master.cf
Postfixのプロセス設定ファイル。重要な箇所のみを抜粋。
# # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd submission inet n - n - - smtpd # -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject tlsmgr unix - - n 1000? 1 tlsmgr
/etc/postfix/vmailbox
バーチャルドメインのメールディレクトリ設定を記述したファイル。
admin@mydomain.com mydomain.com/admin/Maildir/
更新したら/usr/sbin/postmapコマンドでdbファイルに反映する。
main.cfに「virtual_mailbox_base = /home/vmail/vhosts」という設定があるので,admin@mydomain.comの配送先は「/home/vmail/vhosts/mydomain.com/admin/Maildir」になる。
/etc/postfix/virtual
バーチャルドメインのメール転送設定を記述したファイル。使っていないので空のまま。更新したら/usr/sbin/postmapコマンドでdbファイルに反映する。
/etc/sasl2/smtpd.conf
smtpdの認証方式を記述するファイル。ここでは,SMTP-AUTH用に新しくアカウントDBを作ることにする。
pwcheck_method: auxprop # auxprop -> /etc/sasldb2 # saslauthd -> /etc/sysconfig/saslauthd mech_list: cram-md5 digest-md5 plain login # auxprop -> all mechanisms # saslauthd -> plain login
SMTP-AUTHでログインするアカウントは/usr/sbin/saslpasswd2コマンドによって追加できる。また,アカウントDBの内容は/usr/sbin/sasldblistusers2コマンドによって確認できる。
その他のハマりどころ
この辺のパッケージがないとSMTP-AUTHでコケる。
cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl-md5
Dovecot
/etc/dovecot.conf
Dovecotのメイン設定ファイル。記述が有効な箇所のみを抜粋。
#protocols = imap imaps pop3 pop3s protocols = imap imaps ssl_disable = no #ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem #ssl_key_file = /etc/pki/dovecot/private/dovecot.pem ssl_cert_file = /etc/pki/tls/certs/mail.pem ssl_key_file = /etc/pki/tls/certs/mail.pem #mail_location = mail_location = maildir:~/Maildir protocol imap { } protocol pop3 { } protocol lda { # Address to use when sending rejection mails. postmaster_address = postmaster@example.com } auth default { mechanisms = cram-md5 digest-md5 plain login passdb passwd-file { # Path for passwd-file args = /etc/dovecot/passwd } userdb passwd-file { # Path for passwd-file args = /etc/dovecot/passwd } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } dict { } plugin { }
Maildirの準備
/usr/sbin/useraddコマンドで次のようにしてMaildirにアクセスするユーザーを追加する。
useradd -u 1000 vmail
配送先のディレクトリをmkdirして,適宜chmod,chownしておく。
mkdir /home/vmail/vhosts/mydomain.com/admin/Maildir chmod -R 701 /home/vmail/vhosts chown -R vmail:vmail /home/vmail/vhosts
パーミッションを700にしたら何故かPostfix・Davecotにメール配送先に書き込めないと怒られました(Permission Denied)。
SSL関係の設定
メールサーバー間通信内容暗号化(OpenSSL+Postfix+Dovecot) - CentOSで自宅サーバー構築を参考に証明書を作成する。