新規High Sierraと以前のアップグレード版は違う?
以前使っていたMacもHigh Sierraでしたがその前のバージョン (最初はMavericks) からのアップグレードで使っていました。
なので設定ファイルや中のソフトとかが一部新規High Sierraとは違う可能性があります。
ちょっとその辺も含めて今回やった設定などについてメモしておきます。
LaunchDaemons
postfix
を使ったメールサーバーを作りますが、
以前はLaunchDaemonsを使った自動機能が行われていましたが、
今回確認して見たところ
/System/Library/LaunchDaemons/org.postfix.master.plist がありませんでした。 実際、
$ sudo postfix status
postfix/postfix-script: the Postfix mail system is not running
と走っていません。
なので手動(sudo postfix start
)で立ち上げたりしてテストをしていましたが、
実は止まっている状態で
$ echo test mail from Mac! | mail -s test [email protected]
みたいにメールを送ってみると設定がちゃんとされていれば送れます。
直後にもう一回postfix
を調べてみると
$ sudo postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 29420
とpostfixが走っています。
ただ、しばらく(1分位?)すると再びnot runningになります。
どうもmail
コマンドでメールを送る際、postfix
のサービスが必要であれば自動で立ち上げ
さらにしばらくすると止めるという仕様になってるらしいです。
下みたいなLaunch Daemon Property Listを自分で用意して入れてる人も居るみたいですが その必要はないみたい。
また、postfix
の設定を変更した際もすぐに反映したければ
$ sudo postfix reload
しても良いですが、直前にmail
コマンドを使ってない限り、それを行う必要もなく、
次にmail
をする際に自動的にpostfix
が新しい設定を読み込んで立ち上がってくれます。
このあたり、前のMacではHigh Sierraになってからチェックしてませんでしたが
実はこれと同じ状態だったのかもしれません。
(もしくはLaunchDaemonsが残ってて常にpostfix
が走っていたけど実はそれは余計でわざわざLaunchDaemonsを使わなくても良かった状態だったか。)
ログがない
以前までは/var/log/maillogにpostfix
のログが出ていました。
ですが、今の環境でpostfix
を走らせてもログが出ません。
$ sudo postfix start
として動かしても出ません。
このログを見るためには
$ log stream --predicate '(process == "smtpd") || (process == "smtp")' --info
とします1。
これでこのターミナルにログが出てくるので他のターミナルでメールとかを送るテストを行って確認を行います。
もし常時監視したいのであればこのコマンドをどこかのファイルに書き出す様にして自動で立ち上げておいたりする必要があります。 どこかの設定でできそうなものですが。
この出力がコンソール.appとかに出てくるものと関係あると思ってたんですが
どうもそれとは違うようでコンソール.appからsmtp
のログは確認出来ませんでした。
(この辺システムがよくわかってない。)
GmailのSMTPサーバーを使う
ということで自動起動やログの部分を理解した上で GmailのSMTPサーバーを使ってMacからメールを送る設定をします。
設定自体は上でやったようなことと一緒で、 まずパスワードのファイルを作ります。
2段階認証にしてる場合には アプリパスワード から専用のパスワードを取得します。
$ cd /etc/postfix
へ移動して
$ sudo vim gmail_passwd
などで編集して
1
|
|
といった内容のファイルを用意します。
出来たら
$ sudo postmap gmail_passwd
で、gmail_passwd.dbを作ります。平文でパスワードを書いたgmail_passwdは削除しておきます。
$ sudo rm gmail_passwd
出来たら 以下を/etc/postfix/main.cfに加えます。
1 2 3 4 5 6 7 |
|
これで上のログを表示させながら別ターミナルから
$ echo test mail from Mac! | mail -s test <your address>
といった感じに適当にメールを送ってみます。 上手くメールが届いてたらOK。
この設定だと、From欄はGmailでデフォルトに指定しているアドレスになっているはずです。
以前の設定との違い
大体以前の設定と同じですが、今回
relayhost
の部分が括弧つき:
relayhost = [smtp.gmail.com]:587
の状態だと
2018-05-03 XX:XX:XX.XXXXXX+0900 0x969feed Info 0x0 70961 smtp: 942124EFDB4: to=<[email protected]>, relay=smtp.gmail.com[108.177.97.108]:587, delay=1, delays=0.04/0.06/0.78/0.16, dsn=5.5.1, status=bounced (host smtp.gmail.com[108.177.97.108] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 https://support.google.com/mail/?p=WantAuthError b5sm20286954pfc.16 - gsmtp (in reply to MAIL FROM command))
といったエラーが出ました。 特にあってもなくても良いはずで、いろいろな例でも付けた状態のものが多いですが 何故かエラーに。 これを外すと問題なく送れるようになりました。
上手く行かない場合のチェック
上手く行かない場合には
$ log stream --predicate '(process == "smtpd") || (process == "smtp")' --info
でログを表示させつつ、mail
を送るチェックの他に
$ sudo postfix start
もしくは
$ sudo postfix reload
など、手動でpostfix
をスタートさせたりリロードさせたりすると
main.cf
のエラーとかを表示してくれることがあります。
(main.cf
の間違いならコマンドを打った側に出ます。)