2015/12/02

Macで smtp.gmail.com を使ったPostfixを設定する

DebianでExim4を使ってsmtp.gmail.com経由でメールを送信するための設定は前に書きましたが,今度は Mac OS X で postfix を使って smtp.gmail.com 経由でメールを送信するための設定です.なんで postfix が入ってるのか実は把握してませんが,

% mail naotaka.yamamoto@example.org

でメールを送ってみたら, /var/log/mail.log に postfix/smtp がメールを送信しているのが分かったというところです.で,そもそもですが OP25B なネットワークに当たって困ったのでいつでも送信できるようにしておこうというのが発端です.

いきなり修正するのは怖いので,RCSでまずはバックアップ:
% sudo ci -l /etc/postfix/main.cf

% sudo vi /etc/postfix/main.cf
まずは,relayhost の設定.[] で囲むのはMXレコードを参照させたい場合のようで,今は必要なさそう.

relayhost = smtp.gmail.com:587
(コメントアウトされたrelayhostの行が複数あるのでその最後にでも追加)
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
(設定ファイル末尾に追記)

次に,smtp_sasl_password_maps で設定したパスワードファイルを作成します.

% sudo vi /etc/postfix/sasl_passwd
  smtp.gmail.com:587 xxx@gmail.com:(password)

他から見えないようにします.
% sudo chmod 0600 /etc/postfix/sasl_passwd

仕上げにpostmapで覚えさせます
% sudo postmap /etc/postfix/sasl_passwd

postfix デーモンを動かしているなら,postmap で読み込ませたり postfix stop / start でデーモンの再起動が必要になるようですが,私の端末ではデーモンは動いていなかったようなのでこれで終了です.

最後の postmap を忘れていると(忘れてました),
warning: hash:/etc/postfix/sasl_passwd is unavailable. open database /etc/postfix/sasl_passwd.db: No such file or directory
こんな感じのエラーが /var/log/mail.log に記録されます.

(追記 2015.12.4)
cronで標準出力や標準エラー出力に何か出力されるとメールが送られますが,自分のホームに .forward を置いて設定した SMTP 経由で転送するようにしています.この時,ローカルのマシンなので,ホスト名はそれなりなものは付いてますが外からはアクセス出来ないので, From の書き換えがGmail / SMTP によってされていました.要するに,cronからメールの From が”自分”になっちゃってるんですね.驚かされたので追記メモです.

ちなみに,Gmailであれば,メールのソースを表示すると,
       X-Google-Original-From:
に元の From が記載されています.

OP25B ・・・ Outbound Port 25 Blocking(アウトバウンドポート25ブロッキング)の略で,インターネットに接続する時に25番ポートを塞いでいますよということ.つまり,25番というのはメールの送信(SMTP)に使われているので,メールが送信できなくなりますよということです.もちろん,プロバイダがマニュアル等に記載しているサーバの25番ポートには繋がるのでマニュアル通りなら問題ありません.最近では認証+SSLになっている場合も多いので25番は使っていない場合もありますが.

参考:
MacでPostfixを使ってGmail経由でテストメールを送信