PostfixでTLS (その勘所)

FreeBSDでPostfixのTLSを有効にしたい場合、以下の様にします。

FreeBSDの場合はルート証明書が標準では入っていないのでca_root_nssをportsかpkgでインストールする。(SSL系のportsをインストールすると一緒に入ることが多い)

# cd /usr/ports/security/ca_root_nss/ && make install clean
若しくは
# pkg install security/ca_root_nss

/usr/local/share/certs/ca-root-nss.crtがルート証明書。

ApacheでSSL (その勘所)で作成したserver.crtとca.crtを結合したserverchain.crtを作成する。

% cat server.crt ca.crt > serverchain.crt

DH keyを作成する。1024 or 2048 bitで。下の例は2048bit。

# openssl openssl dhparam -out /usr/local/etc/postfix/dhparams.pem 2048

SSLv2とSSLv3は脆弱性の問題から使用しないものとする。

/usr/local/etc/postfix/main.cfの例 (Postfix2.6以降用のつもり)
smtp_starttls_timeout = 300s
smtp_tls_CAfile = /usr/local/share/certs/ca-root-nss.crt
smtp_tls_block_early_mail_reply = no
smtp_tls_cert_file = /usr/local/etc/postfix/serverchain.crt
smtp_tls_ciphers = export
smtp_tls_enforce_peername = yes
smtp_tls_force_insecure_host_tlsa_lookup = no
smtp_tls_key_file = /usr/local/etc/postfix/server.key
smtp_tls_loglevel = 1
smtp_tls_mandatory_ciphers = medium
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_note_starttls_offer = yes
smtp_tls_protocols = TLSv1.2, TLSv1.1, TLSv1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache
smtp_tls_session_cache_timeout = 3600s
smtp_use_tls = yes

smtpd_starttls_timeout = 300s
smtpd_tls_CAfile = /usr/local/share/certs/ca-root-nss.crt
smtpd_tls_ask_ccert = yes
smtpd_tls_cert_file = /usr/local/etc/postfix/serverchain.crt
smtpd_tls_ciphers = high
smtpd_tls_dkey_file = $smtpd_tls_dcert_file
smtpd_tls_key_file = /usr/local/etc/postfix/server.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_protocols = TLSv1.2, TLSv1.1, TLSv1
smtpd_tls_dh1024_param_file = /usr/local/etc/postfix/dhparams.pem
#smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA #この行の使用をお薦め
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = no

ごめんなさい。smtpd_tls_mandatory_protocolsとsmtpd_tls_protocols、smtp_tls_mandatory_protocolsとsmtp_tls_protocolsの違いがよく解っていません。

設定が完了したらpostfixを再起動しCheckTLS.comでフォームにpostfixのサーバが管理しているメールアドレスの1つを入力し[Try It]ボタンを押す。暫く待つとTLSのテスト結果が表示される。

CheckTLS.com

画像の様に全ての項目がOKにならなければなりません。

さらにCheckTLS.comのTestSenderのページに従い自分のpostfixサーバからCheckTLS.comにメールを送信し、帰ってきたメールを確認する。少なくともメールの題名が「CheckTLS TestSender SUCCESSFUL」なら問題ないかと。

CheckTLS.comは他にも幾つか有用なテストが行えるのでオススメ。