昨日、構築した ML サーバから送信するメールが aol に SPAM 扱いされた問題が発覚し、とりあえず手元の家サーバーをリレーすることで対処した。が、色々問題もあるので、gmail の smtp サーバーをリレーに使うことにした。ただし、gmail でリレーすると、送信者が gmail のアカウントになってしまうのは欠点。とりあえず今回は目をつぶる。名前
「postfix リレー gmail」等で検索すると、色々設定の方法を書いたメージがヒットする。ただ、今回は、aol 宛てのメールだけを gmail 経由にして、それ以外は、直接それぞれの宛先の SMTP サーバへ繋ぐようにしようとするので、結構、違う所もありそう。
まずは、/etc/postfix/transport
aol.com smtp:[smtp.gmail.com]:587 .aol.com smtp:[smtp.gmail.com]:587
を追加。後者がいるのかは良くわからず。とりあえず編集後は、postmap /etc/postfix/transport を実行。
次に、/etc/postfix/sasl_passwd を作成(これのファイル名はなんでもいいっぽい。main.cf で指定するファイル名と一致していれば)。
[smtp.gmail.com]:587 username:password
username は、gmail(google) の ID。とあるページでは、@gmail.com まで書いてあったが、とりあえず、@ より前の部分だけでいいようだ。password は思いっきり平文なので、このファイルのパーミッションはきちっとしておいた方がいいとのこと。root.root で 600 みたいな感じ。でも、db の方を見たらわかるような。ここでも、postmap /etc/postfix/sasl_passwd を実行しておく。もちろんパーミッションを変えたので root 権限でないとダメ。
最後に main.cf の編集。念仏のように下記を追記。もとから記述があれば変更(参考ページ:gendosuの企画開発室 さん)。
#sasl setting smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain #tls setting smtp_use_tls = yes
この後、service postfix reload すれば OK らしい。サイトによっては、Submission ポート 587 ではなく、465 を使っている所もあったが、465 ではうまくいかなかった(多分。他の間違いが原因だったかもしれないが)。後、sasl_passwd ファイルの smtp.gmail.com を [] で囲わなかったせいで、SMTP Auth せずに gmail につなぎに行ってしまっていたらしく、Google さんに何度も怒られてしまった。なかなか原因に気づかず...
そういや、
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
も main.cf に入れておいた方が良い、と書かれたサイトもあったので、一応入れてある。効いているのかわからないが。
ということで、一応 aol へもメールが届くようになったっぽい。gmail が aol から蹴られていたらわからないが。自分も aol のアカウントを作って確かめる必要があるだろうか。
やっぱり、サーバの設定は、ノウハウが色々必要だなぁ。