自宅サーバーのPostfixで送信したメールですが、Gmailで受信すると「 このメールは **** で暗号化されませんでした」 と赤いロックが外れたアイコンが出ていたのをrelayhostの設定をして修正しました。ちょっとだけセキュリティが増した気分です。
PostfixにPB25対策のリレー設定をすれば解決というだけですが、いままで家のISP(usen.ne.jp)ではリレー設定をしなくてもメール送信がポート25でできていましたが、せっかくLetsencrypt証明書で暗号化しているのに即非暗号化になっていたようです。 一般的なメールソフトでは気になりませんが、Gmailを使っていると気になります。
そろそろDebian10(Buster)にアップデートしようかなとテストしていて、先だって今運用中のDebian9(Stretch)も修正できました。
リレーする送信メールサーバーを、契約しているプロバイダーを使うのと、Gmailの送信メールサーバーを利用するのと2通りの方法の紹介です。
こちらの記事の通りに設定した前提からの内容です。
このページの目次
ISPのSMTPサーバーにリレー
契約しているISPのSMTPサーバーのポート587にリレーする設定です。 ISPのメール設定情報が必要になります。
/etc/postfix/main.cf の42行目あたりの relayhost=(空欄) の行から下記を追記します。(2020/04/03追記)下記最後の2行を追加しないとうちのUSENでは送信できなくなりました。(後半のGmailにリレーの場合と同じになりました。)
relayhost =[smtp.hogehoge.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relayhost_info
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_security_level = may
smtp.hogehoge.com の部分は自身のISPのSMTPサーバーになります。
/etc/postfix/relayhost_info ファイルを今から作成します。
# nano /etc/postfix/relayhost_info
ファイルの中身を下記にして保存します。
[smtp.hogehoge.com]:587 SMTPユーザ名:SMTPパスワード
- smtp.hogehoge.com は自身のSMTPサーバーになります。[ ]で囲みます。
- SMTPユーザー名 はISPの送信サーバーのユーザー名です。
- SMTPパスワード はISPの送信サーバーのパスワードです。
relayhost_infoファイルはパスワードが平文で入っているので、rootしか開けないようにします。
# chmod 600 /etc/postfix/relayhost_info
または、 postmapコマンドでデータベース化して平文ファイルは削除します。
# postmap hash:/etc/postfix/relayhost_info
# rm /etc/postfix/relayhost_info
Postfixのサービス再起動で設定が有効になります。
# /etc/init.d/postfix restart
以上で、ISPの送信サーバーでSMTP認証を行う設定は完了です。
Gmailにメールを送信してテストしてみました。
Gmailの送信サーバーにリレー
メールサービスがオプションのISPだったり、メールサーバー情報が不明な場合にフリーメールのGmailのSMTPサーバーにリレーする方法があります。基本は同じですが、ちょっとだけややこしいです。
Gmail側の設定
既存のGmailアカウントでも、新規に作成したGmailアカウントでもいいのでGmailの設定⇒アカウントとインポート で「他のメール アドレスを追加」のところにホストメールアドレスを追加します。
一般的なGmailの作法なので、追加方法はGoogleのヘルプを参照してください。
- 送信ポートは465または587どちらでも大丈夫です。
- リレーしたいメールアドレスの数だけ追加するのをお勧めします。追加していないメールアドレスでも送信できますが、相手に表示される送信者メールアドレスはGmailの既定のメールアドレスになります。追加済みのメールは自身のメールアドレスでの送信になります。
2段階認証の設定なしのアカウントの場合
2段階認証を設定していないアカウントの場合、「安全性の低いアプリの許可」を有効にしておく必要があります。セキュリティ的にはあまりお勧めできません。
2段階認証の設定ありのアカウントの場合
2段階認証を設定しているアカウントの場合、「アプリパスワード」を作成しておきます。
- アプリを選択:メール
- デバイスを選択:その他(任意の名前)
この選択で作成した16桁のパスワードをメモしておきます。
リレー設定
/etc/postfix/main.cf の42行目あたりの relayhost=(空欄) の行から下記を追記します。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relayhost_google
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_security_level = may
/etc/postfix/relayhost_google ファイルを今から作成します。
# nano /etc/postfix/relayhost_google
ファイルの中身を下記にして保存します。
2段階認証の設定なしのアカウントの場合
[smtp.gmail.com]:587 gmailアドレス:gmailパスワード
2段階認証の設定ありのアカウントの場合
[smtp.gmail.com]:587 gmailアドレス:アプリパスワード
relayhost_googleファイルはパスワードが平文で入っているので、rootしか開けないようにします。
# chmod 600 /etc/postfix/relayhost_google
または、 postmapコマンドでデータベース化して平文ファイルは削除します。
# postmap hash:/etc/postfix/relayhost_google
# rm /etc/postfix/relayhost_google
Postfixのサービス再起動で設定が有効になります。
# /etc/init.d/postfix restart
サービス再起動後、Gmailにメールを送信してテストして暗号化メールであることを確認できました。