
自前のメールサーバーから Gmail 宛てに送信した際、SPF や DKIM、DMARC がすべて PASS しているにもかかわらず、差出人欄に「開いた赤い南京錠アイコン(このメールは暗号化されませんでした)」という不穏な警告が表示されることがあります。
この警告が出る原因と、Postfix の設定を数行追加して解決する手順を解説します。
発生した現象
メールを Gmail に送信し、受信メールの送信者詳細を開いたところ、以下のような警告が表示されました。
- セキュリティ: 🔓 このメールは example.com で暗号化されませんでした
SPF や DKIM などの送信元認証をいくら正しく設定しても、この「赤い南京錠」は消えません。
原因:Postfix の「外向き通信(クライアント)」の暗号化が無効
メールの暗号化設定には、大きく分けて以下の2方向があります。
- 受信側(SMTP サーバー側):
smtpd_tls_...(メールソフトや外部から自サーバーが受け取るときの暗号化) - 送信側(SMTP クライアント側):
smtp_tls_...(自サーバーから他サーバーへ配送するときの暗号化)
メールサーバー構築時の手順書では「1」の smtpd_...(d がつく方)ばかり設定されがちです。
その結果、自サーバーから Gmail のサーバーへ配送する通信区間が平文(非暗号化)のまま送られてしまい、Gmail 側で「暗号化されていない通信」として警告されてしまいます。
解決手順:Postfix で外向き TLS を有効化
Postfix の送信クライアント設定で、Opportunistic TLS(相手が対応していれば STARTTLS で暗号化する設定)を有効にします。
1. 設定コマンドを実行
ターミナルで以下のコマンドを実行します。
Bash
# 外部配送時の TLS 暗号化レベルを「可能なら暗号化(may)」に設定
sudo postconf -e "smtp_tls_security_level = may"
# 接続時の TLS ログ出力を有効化(確認用)
sudo postconf -e "smtp_tls_loglevel = 1"
# Postfix 設定を反映
sudo systemctl reload postfix2. 設定の確認
反映されているか確認します。
Bash
postconf smtp_tls_security_level出力が smtp_tls_security_level = may となっていれば完了です。
動作確認
設定完了後、再度 Gmail 宛てにテストメールを送信します。
Gmail で受信したメールの詳細を開き、以下のように表示が変わっていれば成功です。
- セキュリティ: 🔒 標準的な暗号化(TLS)
赤い南京錠が消え、黒い閉じた南京錠アイコンと「標準的な暗号化(TLS)」の文字が表示されます。
まとめ
smtpd_...は受信用、smtp_...は送信用smtp_tls_security_level = mayを追加するだけで、Gmail などの外部サーバー宛て送信が自動的に STARTTLS で暗号化される- 送信認証(SPF/DKIM)と配送暗号化(TLS)を両立させて、Gmail の警告をゼロに抑える



コメント