(Debian)さくらのVPSでメールサーバー設定(postfix)

Debianでのメールサーバー設定の作業メモです。
以前CentOSで設定した内容とほとんど同じです。

(作業内容)

  • MTAをeximからpostfixへ変更し、SMTP-AUTHを設定する
  • SMTPを暗号化する
  • IMAPdovecotを使用して、暗号化する(POPは使わない)

postfix with SMTP-AUTH and SSL/TLS

1. パッケージのインストール
SMTP-AUTHにSASL2を使うので、postfixと一緒にインストールします。
postfixをインストールすると、exim関連のパッケージが削除されます。

$ sudo aptitude install postfix sasl2-bin libsasl2-modules

2. saslauthdデーモンの設定
SMTP-AUTHのためにsaslauthdデーモンを設定・起動します。
今回は、PAM認証します。

$ sudo vi /etc/default/saslauthd
START=yes
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
$ sudo /etc/init.d/saslauthd start

PAM認証できるか試してみます。

$ sudo /usr/sbin/testsaslauthd -u hogehoge -p fugafuga
0: OK "Success."

"-u"の後にユーザー名、"-p"の後にパスワードを指定します。

3. 鍵と証明書の作成

$ sudo sh -c "cd /etc/postfix/certs/; openssl genrsa -des3 -out server.key 1024"
$ sudo sh -c "cd /etc/postfix/certs/; openssl rsa -in server.key -out server.key"
$ sudo sh -c "cd /etc/postfix/certs/; openssl req -new -days 3650 -key server.key -out server.csr"
$ sudo sh -c "cd /etc/postfix/certs/; openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650"
$ sudo chmod 400 /etc/postfix/certs/server.*

4. postfixの設定
main.cfとmaster.cfの下記パラメータあたりを設定します。
(/etc/postfix/main.cf)

myhostname = wwwxxxxxx.sakura.ne.jp
mydomain = wwwxxxxxx.sakura.ne.jp
myorigin = /etc/mailname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

smtpd_tls_cert_file=/etc/postfix/certs/server.crt
smtpd_tls_key_file=/etc/postfix/certs/server.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

(/etc/postfix/master.cf)

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes              (コメントアウト)
  -o smtpd_sasl_auth_enable=yes              (コメントアウト)

5. Maildirの作成

$ mkdir -p ~/Maildir/{new,cur,tmp}
$ chmod -R 700 ~/Maildir

6. posftixの再起動

$ sudo /etc/init.d/postfix restart

7. iptablesの設定
smtp(25/tcp)とsmtps(465/tcp)の通信を許可します。

$ sudo vi /etc/iptables/iptables.rules
-A INPUT -p TCP --dport 25 -j ACCEPT
-A INPUT -p TCP --dport 465 -j ACCEPT
$ sudo iptables-restore < /etc/iptables/iptables.rules
$ sudo iptables -L
$ sudo iptables-save > /etc/iptables/rules

8. 第三者中継チェック
RBLなどを使って、第三者中継チェックを行います。

(参考) メール送信時に550エラーが出る場合

550 5.1.1 <送信先メールアドレス>: Recipient address rejected: 送信先ドメイン;

メール送信時に上記のエラーが出る場合は、"default_transport"パラメータが"error"となっている可能性があるので、"smtp"へ変更します。

$ sudo /etc/postfix/main.cf
default_transport = smtp
$ sudo /etc/init.d/postfix restart

"default_transport"パラメータはデフォルトで"smtp"みたいですが、postfixインストール時の設定で"Local only"を選ぶと、"error"に設定されるっぽいです。

dovecotは別エントリーで。


[追記](2012.05.02)
dovecotの設定について書きました。