さくらのVPSにドメインを割り当てたので、メールサーバの設定をすることにしました。しかし、いろいろとトラブルに見舞われました。
当たり前のことですが、設定内容をちゃんと理解してからメールサーバ設定をするようにすると、失敗が少なくなると思います。適当にあれこれ設定して、いろいろとミスしてしまいました。反省反省。
まずはメールの仕組みを把握することが重要です。これについては色々なサイトや本があるので、それを読んでおけばOKですね。中でも、SMTPで利用するSMTP AUTHの理解が重要です。こちらのサイトが非常によくまとまっています。設定については色々なサイトを参考にしましたが、特にこちらやこちらのサイトが参考になりました。
仕組みを理解したら設計します。
プライベートなので、頭の中で設計してもいいと思います。どのような構成にするかを考えます。特にセキュリティ。以下の構成にしました。
・送信サーバ=Postfixを利用。SMTP AUTHで認証。SASLでSASL独自のパスワードデータベースを利用します。サブミッションポートを使い、通信はTLSで暗号化。
・受信サーバ=Dovecotを利用。IMAP。Linuxユーザとパスワードで認証。通信はTLSで暗号化。
TLSを使うと決めたからには、まずは証明書を作成します。
make mail.pemしたら、促されるままにいろいろと設定すればオッケー。
$ cd /etc/pki/tls/certs
$ sudo make hogehoge.pem
続いてPostfixの設定をします。SASLとTLSを使うと。私はmaster.cfの設定が間違っていて(TLSをONにしていなかった)、かなりハマってしまいました。気をつけましょう。
$ sudo vi /etc/postfix/master.cf
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
main.cfではMaildir方式を用い、メールを10MBに制限します。
$ sudo vi /etc/postfix/main.cf
broken_sasl_auth_clients = yes
disable_vrfy_command = yes
home_mailbox = Maildir/
inet_interfaces = all
message_size_limit = 10485760
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = ほげほげ.com
myhostname = mail.ほげほげ.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP unknown
smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = reject_unknown_sender_domain
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:/var/lib/postfix/smtpd_scache
smtpd_use_tls = yes
Dovecotをインストールし、各種設定を行います。
$ sudo yum -y install dovecot
$ sudo vi /etc/dovecot/dovecot.conf
protocols = imap pop3
#imapsとかpop3sの設定は不要です。入れると起動時にワーニングが出ます。
$ sudo vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
$ sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
$ sudo vi /etc/dovecot/conf.d/10-master.conf
#ポート番号を適切に設定(コメントアウトを外す)
$ sudo vi /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/pki/tls/certs/hogehoge.pem
ssl_key = </etc/pki/tls/certs/hogehoge.pem
Maildir形式を使うので、スケルトンを作りつつ、既存ユーザ(sampleuser)に対してはMaildirを作ってあげます。
$ sudo mkdir /etc/skel/Maildir
$ sudo chmod 700 /etc/skel/Maildir
$ sudo mkdir /home/sampleuser/Maildir
$ sudo chmod 700 /home/sampleuser/Maildir
$ sudo chown sampleuser:sampleuser /home/sampleuser/Maildir
SMTP AUTHパスワードの設定。SASL独自のパスワードデータベースsasldbを使うので、「auxprop」を指定します。
$ sudo vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
mech_list: cram-md5 digest-md5 plain login
パスワード設定。
$ sudo saslpasswd2 -u ほげほげ.com -c sampleuser
$ sudo sasldblistusers2
sasldbのパーミッションを変更し、postfixグループとします。
$ sudo chmod 640 /etc/sasldb2
$ sudo chgrp postfix /etc/sasldb2
起動させる。
$ sudo chkconfig postfix on
$ sudo chkconfig saslauthd on
$ sudo chkconfig dovecot on
$ sudo service postfix start
$ sudo service saslauthd start
$ sudo service dovecot start
あとはテストです。
当たり前ですが、メーラを正しく設定しておかないとメール送受信できません。
SMTP AUTHを使うとか、TLSを使うとか、自分で決めたとおりにメーラに設定して送受信試験を行います。これもいろいろと間違っていて、時間かかってしまいました・・・。
MacだとAirmailがオススメです。テストボタンもあるし、試験しやすいので。
やはり、メールのセットアップは大変です。これだけでも大変なのですが、まだまだやることがあります。それはまた今度の機会に。