パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

postfix で SMTP Auth クライアントとして gmail をリレーに使う

昨日、構築した ML サーバから送信するメールが aol に SPAM 扱いされた問題が発覚し、とりあえず手元の家サーバーをリレーすることで対処した。が、色々問題もあるので、gmailsmtp サーバーをリレーに使うことにした。ただし、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 のアカウントを作って確かめる必要があるだろうか。

やっぱり、サーバの設定は、ノウハウが色々必要だなぁ。