rcmdnk's blog

MAIL(1) (角川コミックス・エース)

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を書き換えます。

/etc/postfix/main.cf.diff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
667c667
< #imap_submit_cred_file =
---
> imap_submit_cred_file =
672c672
< #use_sacl_cache = yes
---
> use_sacl_cache = yes
681c681
< #mydomain_fallback = localhost
---
> mydomain_fallback = localhost
700d699
< smtp_sasl_mechanism_filter = plain

これでpostfixをリロードすればOK。

$ sudo postfix reload
postfix/postfix-script: refreshing the Postfix mail system
$

その他ちょっと上手くいかずにごちゃごちゃやったところ

上ではすぐに上手く行ったように書いてますが、 実は最初、GmailのSMTPサーバーを使ってるので、その認証が うまく行ってないせいだと思ってパスワードの再設定とかをしてました。

Googleでは二段階認証を使ってるので、 SMTPの認証に二段階認証を使えないので専用のパスワードを作る必要があって これを確認して作りなおしました。

アプリ パスワードでログイン - Google アカウント ヘルプ

取り敢えず以前作ったパスワードが丁度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のリロードとかが上手く行ってなかっただけだと思います。。。

Sponsored Links
Sponsored Links

« cVim: Google ChromeのVimperatorみたいな拡張 OctopressのGist表示の再調整 »

}