Debian の Postfix で Gmail の SMTP を使う設定

設定資料
参考: http://mail.google.com/support/bin/answer.py?hl=jp&answer=13287
GmailSMTP ホストは smtp.gmail.com
SMTP 認証 (SASL) なので ポート 587 で STARTTLS (SMTP+SSL)
認証情報は Gmail アカウント


 接続のイメージはこんな感じ
[自ホスト Postfix ] ― STARTTLS ― port:587[ smtp.gmail.com ] ― inet


下記ページを参考に設定する。
OP25B対策(Outbound)
http://www.aconus.com/~oyaji/mail2/op25b.htm
Gmailにメールを送る - komamitsu.log
http://d.hatena.ne.jp/komamitsu/20090604/1244129409
Gmailにメール(Debian編) - komamitsu.log
http://d.hatena.ne.jp/komamitsu/20090801/1249140236


postfix のインストール

sudo aptitude install postfix

Debian のデフォルトの exim4 は削除される。


postfix の 設定は postconf -e で行ってみた。
※ postconf コマンドの -e で設定する場合、項目=設定値 の"="の前後にスペースを入れない様に注意


こんな感じ

sudo postconf -e relay_transport=smtp
sudo postconf -e relayhost=[smtp.gmail.com]:587
sudo postconf -e smtp_use_tls=yes
sudo postconf -e smtp_sasl_auth_enable=yes
sudo postconf -e smtp_sasl_password_maps=hash:/usr/local/etc/postfix/sasl_passwd
sudo postconf -e smtp_sasl_security_options=noanonymous
sudo postconf -e smtp_sasl_mechanism_filter=plain


Debian では postfix とかのデーモンの制御は /etc/init.d/ にあるスクリプトで行うので
/etc/init.d/postfix reload 又は restart
で設定変更を反映する。

おまけ(注意点)

/usr/local/etc/postfix/sasl_passwd
/usr/local/etc/postfix/sasl_passwd.db
にはパスワードがプレーンテキストで含まれているので

sudo chmod og-r /usr/local/etc/postfix/sasl_passwd*

しとくのが良さ気
ついでに設定後は
/usr/local/etc/postfix/sasl_passwd は削除するかパスワードを空欄にしてしまうのが吉


/usr/local/etc/postfix/sasl_passwd.db は db 化されていても
od -Ax -t x1z /usr/local/etc/postfix/sasl_passwd.db で確認出来るけどパスワードがそのまま見えてしまう。

さらにおまけ

GmailSMTP 接続を確認してみた。

$ telnet smtp.gmail.com 587
Trying 72.14.221.111...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 〜ハッシュ値
EHLO smtp.gmail.com ← こちらからの入力
250-mx.google.com at your service, [自グローバルIP]
250-SIZE 35651584  → 35MBまで
250-8BITMIME
250-STARTTLS     → SMTP+SSL
250-ENHANCEDSTATUSCODES
250 PIPELINING
rset ← こちらからの入力 リセットして
250 2.1.5 Flushed 〜ハッシュ値
quit ← こちらからの入力 接続を終了させる
221 2.0.0 closing connection 〜ハッシュ値
Connection closed by foreign host.

250-AUTH が無く認証方式がここで明示されていない、smtp_sasl_mechanism_filter は plain だけになるのかなぁ?