あるサーバーをいじっていてメールをGmailに送信したら「このメールは***で暗号化されませんでした」と赤文字で表示される。
さっそく対策する。
原因
メールを送信する側のメールサーバー(Postfix)にて、送信先がTLS(Transport Layer Security)に対応する場合はTLSで暗号化して送信する設定が必要だった。
TLSとは
通信を暗号化するためのプロトコル(規定)であるTransport Layer Security(トランスポート・レイヤー・セキュリティ)の略です。
SSLの暗号化というのは聞いたことがある人が多いと思いますが、正確に言うと今のネット上ではSSLは脆弱性があるために使われておらず、世間で言われているSSL暗号化というのは実際はTLS暗号化のことを指します。
対策
main.cfの編集
Postfixの設定ファイル(main.cf)を開いて末尾のあたりに一行追加します。
【※今回のサーバの環境】
CentOS Linux 7.4
Postfix 2.10.1
■viなどでmain.cfを開きます。
# vi /etc/postfix/main.cf
■以下の行をmain.cfの末尾に追加します。
smtp_tls_security_level = may
■Postfix再起動 ※Centos7の場合
# systemctl restart postfix
(Centos6の場合は↓で再起動)
# /etc/rc.d/init.d/postfix restart
以上で設定完了です。
解説
「smtp_tls_security_level = may」という一行をmain.cfに追加することにより、メール送信先の相手のメールサーバーの状況をリアルタイムに判断して暗号化の有無を決定します。相手がTLSに対応している場合は暗号化してメールを送信し、対応していない場合は暗号化無しの平文で送信します。
このことにより下位互換が保たれてメールが滞りなく送信されます。
逆に、TLSの暗号化を強制して、もし送信先のメールサーバーがTLSに対応しておらずに暗号化ができない場合には送信自体を拒否したいという場合は、
「smtp_tls_security_level = encrypt」
と設定します。
■ログを取りたい場合
さらに下記の一行をmain.cfに追加するとメールログでTLS通信の可否を確認できます。smtp_tls_loglevel = 1
動作確認
もう一度Gmail宛にメールを送ってチェックします。
OK。正常にTLSが有効になりました。
以上で解決です!