Postfixとrelayhost
先日、実家で使用しているプロバイダが変わりました。
実家で暮らす姉が「料金が下がるみたいなのでプロバイダ変えるよ!」と連絡してきたんです。
選んだプロバイダは「Yahoo!BB」。
現在の支払いは実家にいたときからの流れで自分が受け持っていたんですがこれを機に姉が払うことに。月約1,000円でも浮くので自分は助かります。
で、当サーバで動かしているPostfixなんですが外部へのメール送信を行うために「relayhost」を設定しています。
今まで使用していたプロバイダのメールサーバとアカウント情報が登録されていたのですが、プロバイダが変更になったことで今までの設定のままではメールが送れなくなってしまいました。
さて、どうしたものか?
リレーホストにGmailを使用する
Yahoo!BBで新しいアカウントを取得しようとも考えたんですが、どうせなら「Gmail」を使ってみようと思い立ちましたので以下、備忘録として書き残しておきます。
relayhostの設定
以前当サーバのPostfix設定時にこんな記事を書きました。
このような感じでrelayhostの設定を行ったのでこれをGmail向けに修正してみます。
$ sudo vi /etc/postfix/isp_auth [smtp.gmail.com]:587 Gmailのメールユーザ名:Gmailのパスワード 「:wq」で保存 端末で以下のとおり入力してデータベース化する $ postmap /etc/postfix/isp_auth
これでPostfixを再起動したら動くかな?と思い、メールクライアントより送信テストを行ってみます。すると・・・
ダメでした。
なんでだろう・・・?と思いながら「/var/log/mail.log」を見てみるとどうやらTLS認証を行わないといけない様子。
改めてmain.cfを設定しなおします。
sudo vi /etc/postfix/main.cf #最下部に追記 smtp_use_tls = yes smtp_sasl_tls_security_options = noanonymous
これでTLS認証にも対応したはず。これで改めて送信テストをしてみると・・・
まだ送信できない・・・
「mailq」コマンドを打ってみると先ほどのテストメールと併せて残っている様子。なにがいけないんだろう・・・
Googleのセキュリティ強化?に伴う追加メンテ
ググってみるとどうやら「isp_auth」の最後に入力したパスワードが違うみたいでした。
リレーで使用するアカウントのパスワードではなく「別途生成したアプリケーション用のパスワード」が必要になっているんですって。
2014年より前の情報を見る限り、あまりそういった事は書かれていなかったので割りと最近の出来事なのでしょうか?
コチラのページからアプリ固有のパスワードを生成できますので、そこで作成されたパスワードを「isp_auth」の末尾に追記した後Postfixを再起動してみました。
すると・・・
ようやく送信完了(TT)
メールキューも全て消え去り、携帯宛てに送ったテストメールが一気に届きました。
まとめ
いやぁ、今回も嵌りまくりのメンテナンスとなってしまいました。
たかだかプロバイダ変更に伴う簡単なメンテだと高を括っていたのが大間違い。忘れないうちにポイントを纏めておきます。
- リレー先にGmailを使用する場合はSASL認証+TLSが必要
- /etc/postfix/main.cfにTLSに関する設定を追記する
- Googleアカウントの設定にて「アプリケーション固有のパスワードを生成」してパスワードファイルに記述
特に3つ目の情報に辿りつくのが大変でした。どこを見ても上2つは書いてあったんですが、パスワードについては細かく書かれたところがなかったので苦労しました。
これで自前のメールサーバが復旧したのはありがたいことであります。
プロバイダが変わったことで実家の回線速度が若干向上したみたいでサーバのレスポンスもわずかながらよくなった気がしますし、Gmailをリレーさせることで今後回線が変わろうとプロバイダが変わろうと影響なくメールサーバが使えそうなので、今回のメンテナンスはひとまず大成功ではないか?と自分では思っています。v(^^)