さくらの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がオススメです。テストボタンもあるし、試験しやすいので。
やはり、メールのセットアップは大変です。これだけでも大変なのですが、まだまだやることがあります。それはまた今度の機会に。