Yosemiteにアップデートしてから Macでコマンドラインからメールを送れるようにする の所で設定してあったメールがきちんと動いてないことに気づいたので直しました。
Macでコマンドラインメール
Macでコマンドラインベースでメールを送るのは Macでコマンドラインからメールを送れるようにする で書いたようにcronジョブのなかで使ったりevernote_mail というコマンドラインツールを使う時です。
特に、アップデート後に変更したりした設定ファイルとかをバックアップするのに Evernoteへ送ってたつもりだったんですが、それらが実際には送れて無くて、 Macのシステムから
You have new mail in /var/mail/user
とメールを貰って初めて気づきました。。。
Yosemiteで必要な設定
取り敢えず/var/log/mail.logをチェックしてみると
Oct XX XX:XX:XX mmbp.local postfix/smtp[37977]: XXXXXXXXXXXX: SASL authentication failed; cannot authenticate to server smtp.gmail.com[74.125.203.108]: generic failure
Oct XX XX:XX:XX mmbp.local postfix/smtp[37977]: XXXXXXXXXXXXX to=<[email protected]>, relay=smtp.gmail.com[74.125.203.109]:587, delay=190, delays=184/0.03/5.3/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.gmail.com[74.125.203.109]: generic failure)
みたいなエラーが出てました。
探してみると同じエラーにはまってる人が居るみたいで:
email - Mac OS X 10.10 Yosemite Postfix SASL authentication failed - Stack Overflow
YosemiteのPostfix設定: http://hkitago.com/2014/09/yosemite%E3%81%AEpostfix%E8%A8%AD%E5%AE%9A/
下のサイトにある設定のうち、 Macでコマンドラインからメールを送れるようにする で使っていなかった
smtp_sasl_mechanism_filter = plain
を/etc/postfix/main.cfに加える必要がある模様。 (どこか中でデフォルト値が変わった?)
これでpostfixをリロードすれば動く様になるはずですが、 リロードする際に
$ sudo postfix reload
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: use_sacl_cache=yes
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: imap_submit_cred_file=
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mydomain_fallback=localhost
postfix/postfix-script: refreshing the Postfix mail system
$
みたいなwarningが出てきました。
これらの変数は見てみると説明の所に(APPLE)
みたいに書いてあるので
OS X独自の設定項目の様ですが、
Yosemiteから外された項目、ということだと思います。
ので、上のsmtp_sasl_mechanism_filter
の追加と、
上記の変数をコメントアウトするので以下の様に/etc/postfix/main.cfを書き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
これでpostfixをリロードすればOK。
$ sudo postfix reload
postfix/postfix-script: refreshing the Postfix mail system
$
その他ちょっと上手くいかずにごちゃごちゃやったところ
上ではすぐに上手く行ったように書いてますが、 実は最初、GmailのSMTPサーバーを使ってるので、その認証が うまく行ってないせいだと思ってパスワードの再設定とかをしてました。
Googleでは二段階認証を使ってるので、 SMTPの認証に二段階認証を使えないので専用のパスワードを作る必要があって これを確認して作りなおしました。
取り敢えず以前作ったパスワードが丁度Yosemiteにアップデートする前の日に 最後に使われてたのでやはりYosemiteのアップデートから使えなくなっていたことを確認。
Macでコマンドラインからメールを送れるようにする にある手順で途中でパスワードを書いたファイルは消してるので、 もう一度パスワードを作りなおして再設定しました。
それから上のエラーで上手くいかなくて
smtp_sasl_mechanism_filter
を設定した利したのですが、
Oct XX XX:XX:XX xxxx.xxxx postfix/smtp[19575]: XXXXXXXXXXXX: to=<[email protected]>, relay=smtp.gmail.com[74.125.203.109]:587, delay=1521, delays=1518/0.05/2.5/0.3, dsn=5.5.1, status=bounced (host smtp.gmail.com[74.125.203.109] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 p1sm8294188pds.80 - gsmtp (in reply to MAIL FROM command))
な感じのエラー。
ここで何度かパスワードを作りなおしたりして上手くいかなくて、
上のページとかを見なおしてみるとSMTPサーバーの所に[]
が付いてたりしたので
/etc/postfix/main.cfで
-relayhost = smtp.gmail.com:587
+relayhost = [smtp.gmail.com]:587
として、gmail_passwdとかも[]
付きでSMTPサーバーのところを設定しなおしたりして
やった所上手く行きました。
ただ、この[]
を付けるのは
DNSでMX検索が必要な場合で1、
GoogleのSMTPサーバーはこれは必要ないはず。
で、もう一度[]
なしでやってみると今度は上手く行きました。
ということで、多分、単にpostfixのリロードとかが上手く行ってなかっただけだと思います。。。