&tag(OSX/Postfix);
*目次 [#x98ee425]
#contents
*参考情報 [#ddbfad0a]
-[[Mac OS X で Postfix(sendmail) を使って CLI でメールを送る - EAGLE 雑記:http://d.hatena.ne.jp/eagletmt/20090218/1234965601]]
-[[自分のための日記: Mac OS X で mail コマンドでメールを送る:http://yasuwagon.blogspot.jp/2011/05/mac-os-x-mail.html]]
-[[MacOSXでサーバー稼業 : Mac OS Xをメールサーバーにしよう-Postfixの設定-for Leopard:http://earlybirds.ddo.jp/namahage/inegalog/article.php?id=60]]…自動起動の設定なぢ。
-[[postfixでEnvelop Fromを書き換える。|プログラマのマジメなブログ:http://ameblo.jp/jyokke/entry-10592035613.html]]…Fromを書き換えないとプロバイダのSMTPサーバーは受信してくれない
*前書き [#h53cc3d2]
-デフォルトで入っているけど有効化されていない?
-cronのメールを飛ばすにはgmailやプロバイダのsmtpサーバーにリレーするように設定しないといけない。証明書うんぬんでエラーがでるかも。
-サーバーとしてさくらのメールボックスを使ってみた。
*Lionでの設定例 [#t8411231]
**/etc/postfix/main.cfを編集 [#i803e843]
-postfixのメイン設定ファイルmain.cfを編集する。relayhostは契約したドメインになる(サブドメインでも可能)
#pre{{
relayhost = [xxx.sakura.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
}}
**sasl_passwdを生成 [#uf160236]
-/etc/posftfix/sasl_passwdを作成。メールアドレスやパスワードは所定のものに変更する。
[xxx.sakura.ne.jp]:587 zzz@xxx.sakura.ne.jp:PASSWD
-ハッシュ化。sasl_passwd.dbができる。
sudo postmap sasl_passwd
-元のsasl_passwdは削除しておく。
sudo rm sasl_passwd
-設定ファイルチェック&リロード(起動していない場合はsudo postfix start)。
sudo postfix check
sudo postfix reload
''この段階で送信テスト''
-実はこの段階で送信テストできる。postfixはオンデマンドで起動するはずなの自動起動うんぬんは関係ない。
-以下のテキストファイルmessage.txtを作成
#pre{{
From: zzz@xxx.sakura.ne.jp
To: aaa@gmail.com
Subject: test
test
}}
-以下のコマンドで送信
sendmail -t < message.txt
-ポイントはFromアドレスをプロバイダアドレス(この場合はさくらメールボックスのアドレス)にすること。このアドレスがあってないと送信してくれない事がある(ノーチェックのところもあるかもしれない)。
-遅れない場合は/var/log/mail.logを確認。
**Envelop Fromを書き換える [#s4ce0785]
-プロバイダのSMTPサーバーがFromアドレスのチェックを行っている場合、これを書き換えないとメールが送信できなくなってしまう(cronからのメールなどFromアドレスが指定できない場合があるので)。
-まず/etc/postfix/sender_mapsを作る。
/^.*$/ zzz@xxx.sakura.ne.jp
-main.cfの最後に以下を追加。
sender_canonical_maps = regexp:/etc/postfix/sender_maps
-設定を読み込む
sudo postfix reload
''この段階の送信テスト''
-Envelop Fromを書き換るようにしたので、Fromアドレスを特に指定しないmailコマンドなどでもメールが遅れるはず。
mail aaa@gmail.com
Subject: test
this is test mail
<CTRL-D>
-遅れていればOK。
**cronの出力を任意のアドレスに転送 [#h442bb93]
-/etc/postfix/aliasesを編集する。cronの出力はroot宛てメールなので、rootメールの転送先を指定すればよい。
#pre{{
root: aaa@gmail.com
}}
-編集後、newaliasesを実行。
sudo newaliases
*トラブルシューティング [#s1ff50a3]
** certificate verification failed といわれる [#mfd753d9]
-ログに上記警告メッセージが表示される。メールの送信そのものはできているのだが気持ち悪い。
-SMTPサーバーの証明書がローカルにないのが原因?
-gmailの場合の解決方法があちこちにある。 [[LionでPostfix+Gmail – Aerialarts:http://aerial.st/archive/2011/12/08/postfix-via-gmail-on-lion/]]とか。
-一般プロバイダ(さくらなど)でも同じようにすればいいのかな(確信無し)。
-証明書を表示する。
- openssl s_client -connect xxx.sakura.ne.jp:995 -showcerts
-証明書が何個か表示される。
#pre{{
-----BEGIN CERTIFICATE-----
なぞの文字列
-----END CERTIFICATE-----
}}
-BEGIN〜ENDを含めて何個か表示された証明書全部を/etc/postfix/certs/cacert.pemに保存。
-master.cfを編集。以下を追加。
smtp_tls_CAfile = /etc/postfix/certs/cacert.pem
-smtp_tls_CApath = /etc/postfix/certs を指定する方法はなぜかうまく行かなかった。
-メールを送ってみて警告が表示されなければOK。
*設定 [#m29576cc]
**自動起動設定 [#a7189a14]
-ps aucx | grep postfix してもひっかからないので一見起動していないように思えるが、オンデマンドで自動起動するしくみらしいので何もしなくてもよいかもしれない(?)。[[Mac OSXでPostfixが勝手に起動する仕組み - こせきの技術日記:http://d.hatena.ne.jp/koseki2/20090901/MacPostfix]]
-常駐させたい場合は [[postfix on OSX で、gmail 経由でメールを送信する方法 | Carpe Diem:http://www.sssg.org/blogs/naoya/archives/2117]] が参考になる。org.postfix.master.plist を編集し、<key>KeepAlive</key>を追加し、launchctl unload とloadを実行する。