Postfix + Dovecotでメールサーバ構築
メールサーバを構築したので、その時の操作記録
ついでに、LetsEncryptでTLS化もしました。
MDAで使用するプロトコルは imapです。
(個人での利用ならPOP3は不要?)
環境
- OS : FreeBSD 11.1 ->(後に11.2にupgrade)
- MTA : Postfix-3.3.1_1,1
- MDA: Dovecot-2.3.2
- 使用するドメイン名 : <お好みで> (今回は example.com)
※ 今回設定ファイルが存在するディレクトリは /usr/local/etc 以下となる。
1. FreeBSDへのインストール
pkg install postfix-3.3.1_1,1 dovecot-2.3.2 procmail py36-certbot
2. Postfix設定
- 編集対象ファイル
main.cf master.cf
- main.cf
myhostname = mail.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 168.100.189.0/28, 127.0.0.0/8 relay_domains = $mydestination alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mailbox_command = /usr/local/bin/procmail #procmailを入れたい smtpd_banner = $myhostname ESMTP autherWorld #お好み # Dovecot-SASL Configuration smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname #TLS Configuration smtpd_use_tls = yes smtpd_tls_CAfile = /usr/local/etc/letsencrypt/live/mail.example.com/cert.pem smtp_tls_security_level = may ※1 smtp_tls_loglevel = 1 smtpd_tls_cert_file = /usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem smtpd_tls_key_file = /usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem smtpd_tls_session_cache_database = btree:/usr/local/etc/postfix/smtpd_scache
※1 TLSで通信を行うかの設定。 Gmailでやり取りするのに必須。詳しくは下記
http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html#smtp_tls_security_level
- mater.cf
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
3.Dovecot設定
- 編集対象ファイル
dovecot.conf conf.d/10-auth.conf conf.d/10-mail.conf conf.d/10-master.conf conf.d/10-ssl.conf conf.d/auth-passwdfile.conf.ext (編集なしでもよい)
- dovecot.conf
protocols = imap
- 10-auth.conf
auth_mechanisms = plain login cram-md5 (plainだけなので、 loginとcram-md5を追加) !include auth-passwdfile.conf.ext
- 10-mail.conf
mail_location = maildir:~/Maildir
- 10-master.conf
service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 ssl = yes } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
- 10-ssl.conf
ssl = yes ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem ssl_dh = </usr/local/etc/dovecot/dh.pem
3.SSL設定
上記の設定でTLS/SSL関連の設定時に必要となる証明書等の発行を以下で行う。
* LetsEncrypt
certbot (py27 or py36) installed( 1にて実行済み)
certbot-3.6 certonly --standalone -d mail.example.com -m <連絡が欲しいメールアドレス> ※上記で証明書が発行される
- dh.pem
openssl dhparam -out /usr/local/etc/dovecot/dh.pem 4096 dovecotで認証を行う際にDH鍵を使用するため、生成する
4. ユーザ作成
PostfixのSMTP-AuthはDovecot-SASLを利用する形にする
基本的には、/usr/local/etc/dovecot/usersを作成する
形式は
<username>:<password>(cram-md5):uid:gid::<home directory>
パスワードの作成は以下で行う
doveadm pw -s cram-md5 Enter new password: Retype new password: {CRAM-MD5}XXX
5.procmailrc
見よう見まねで書いたもののため、試行錯誤する余地がまだあります。
- 編集対象ファイル
procmailrc
- 内容
SHELL=/bin/sh PATH=/bin:/usr/bin:/usr/local/bin DROPPRIVS=yes MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ #LOGFILE=$MAILDIR/procmail.log #remove loan :0 * ^Subject: .*loan.* /dev/null
まとめ
上記の設定以外に、 DNSのMXレコードの設定やSPFレコードの設定が存在するが
またいずれ追記することにします。
ひとまずは、上記の設定でメールのやり取りができるようになりました。
また、バージョンが変化したりすることで設定の仕方が変わってしまう可能性はありますが
その時はその時です:p
(実際、Dovecotの設定方法は1.xと2.xでだいぶ異なる...)
あとは、clamAVとかの設定も必要ですね
以上、今後のための記録:)