2015/11/12

Debianで smtp.gmail.com を使ったExim4を設定する

Debianで smtp.gmail.com を使ってメール送信するように Exim4 を設定したかったのだけど,なかなか出来なかったのだが,DNSと設定の罠だった...

(結論)
SMTP-AUTH用の /etc/exim4/passwd.client に,
smtp.gmail.com:login-user-name:password
だけじゃなくて,
gmail-smtp-msa.l.google.com:login-user-name:password
も書く.

(以下,詳細)
% sudo dpkg-reconfigure exim4-config
で再設定.スマートホストのところでは,
smtp.gmail.com::587
を設定した(Google ヘルプ参照).

で,SMTP認証が必要なら Debian の README を読めとあったので
/usr/share/doc/exim4-config/README.Debian.gz
を読む.設定方法は,manを参照せよというので参照.
% man 5 exim4-config_files

/etc/exim4/passwd.client
というファイル(所有権注意.root:Debian-exim 0640から変更するなよと README.Debian に書いてある)に,
target.mail.server.example:login-user-name:password
で書けば良いらしい.

が,
% mail someone@example.org
とかでテストメールを送ってみると,Mailer-Daemon@localdomain さんからエラーメールが届く.

で,/var/log/exim4/mainlog を見てみると,
R=smarthost T=remote_smtp_smarthost X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com": SMTP error from remote mail server after MAIL FROM:<xxx@localdomain> SIZE=1429: host gmail-smtp-msa.l.google.com [74.125.23.108]: 530-5.5.1 Authentication Required. Learn more at\n530 5.5.1  https://support.google.com/mail/answer/14257 fx3sm11601723pbb.60 - gsmtp

というようなことが書いてある.これは Mailer-Daemon@localdomain さんからのメールと同じ内容.TLS はちゃんと出来ているようだが,認証で失敗しているのが分かる.ただ,パスワードが間違ってるとかではないので, /etc/exim4/passwd.client を読んでないとかなのだろうか?と悩んでいたのですが,,,,よく見るとエラーメッセージの中のホスト名が smtp.gmail.com じゃない!

% host smtp.gmail.com
smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com.
gmail-smtp-msa.l.google.com has address 74.125.23.108
gmail-smtp-msa.l.google.com has address 74.125.23.109
gmail-smtp-msa.l.google.com has IPv6 address 2404:6800:4008:c02::6c

で確認すると,gmail-smtp-msa.l.google.com が出てきた.
というわけで, /etc/exim4/passwd.client に,

smtp.gmail.com:login-user-name:password
だけじゃなくて,
gmail-smtp-msa.l.google.com:login-user-name:password
も書いてあげたら通った.

これで一応設定できたわけだけど,何かの気まぐれで smtp.gmail.com が gmail-smtp-msa.l.google.com じゃない名前を返してきたらまた認証に失敗することになってしまうのだろうか...自動転送を仕込みたいのでちょっと不安.