当サイトはプロモーションが含まれています。

メールサーバー(Postfix)から送信するメールを暗号化する

ポスト

メールサーバーとメールクライアント間の暗号化は、証明書を用意したり色々設定を調整したりと少々面倒ですが、メールサーバーからの送信に関しては、容易に実装できます。
※メールサーバーへの受信に関しては、メールサーバーとメールクライアント間の暗号化と同様の作業が必要です。

環境

  • CentOS 6.3
  • Postfix 2.6.6

設定

  1. /etc/postfix/main.cfに以下の内容を追記します。
    smtp_tls_CAfile = /etc/pki/tls/cert.pem
    smtp_tls_security_level = may
    smtp_tls_loglevel = 1
    

    「smtp_tls_security_level = may」のみが必須で、後は任意になります。
    smtp_tls_security_level = may・・・宛先のメールサーバーが対応している場合には、暗号化するという設定です。
    smtp_tls_loglevel = 1・・・暗号化のログを記録したい場合に設定します。(0~4の間で指定)
    smtp_tls_CAfile = /etc/pki/tls/cert.pem・・・暗号化に使用する証明書の検証をしたい場合に設定します。

  2. service postfix restartとかで、Postfixを再起動します。
  3. Gmailなどにテストメールを送り、メールログで動作を確認します。(smtp_tls_loglevelを「1」以上で指定する必要があります)
    ▼smtp_tls_CAfileを指定している場合

    Apr 5 17:06:13 mail postfix/smtp[11330]: setting up TLS connection to gmail-smtp-in.l.google.com[74.125.203.26]:25
    Apr 5 17:06:13 mail postfix/smtp[11330]: Trusted TLS connection established to gmail-smtp-in.l.google.com[74.125.203.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

    ▼smtp_tls_CAfileを指定していない場合
    ※「certificate verification failed」や「Untrusted TLS connection established」などのエラーが記録されますが、(「smtp_tls_security_level」の設定次第ですが)暗号化自体に問題はありません。

    Apr 5 13:00:45 mail postfix/smtp[4834]: setting up TLS connection to gmail-smtp-in.l.google.com[74.125.204.26]:25
    Apr 5 13:00:45 mail postfix/smtp[4834]: certificate verification failed for gmail-smtp-in.l.google.com[74.125.204.26]:25: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
    Apr 5 13:00:45 mail postfix/smtp[4834]: Untrusted TLS connection established to gmail-smtp-in.l.google.com[74.125.204.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Gmail宛に送信したメールを確認すると、赤い鍵マークも消えているし、メールヘッダーを確認すると、「(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);」というメッセージが追加されていました。