さくらのVPSをメールサーバとして利用する

さくらの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がオススメです。テストボタンもあるし、試験しやすいので。

やはり、メールのセットアップは大変です。これだけでも大変なのですが、まだまだやることがあります。それはまた今度の機会に。

Leave a Reply

Your email address will not be published.