web-dev-qa-db-ja.com

Postfixで送信SMTPを強制的に暗号化する

送信メールを暗号化するようPostfixに指示する方法を誰かが知っていますか?

受信時に暗号化を使用するように設定しましたが、送信メールでは暗号化できません。これは私の main.cfファイル:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
24
Simon

smtp_tls_security_level = encrypt または smtp_enforce_tls = yes

特定の宛先には、 smtp_tls_policy_maps を使用できます

smtp_use_tls = yes および smtp_enforce_tls = yes は非推奨です。 Postfix 2.3以降では、代わりに smtp_tls_security_level を使用してください。

注意:TLS暗号化を適用すると、TLSが構成されていないSMTPホストでメール配信の問題が発生する可能性があります。サーバーを使用して、TLSが設定された内部サーバーのみにメールを配信する場合、その場合は問題ありません。ただし、サーバーを使用してメールをパブリックサーバーに配信する場合、すべてのサーバーがTLSをサポートしているとは限りません。その場合は smtp_tls_security_level = may を使用してください

31
sumar

アイデアは、ユーザーに暗号化された送信SMTPサーバーでメールクライアントを設定することを強制することです。現在の設定では、Thunderbirdはプレーンテキストでsmtpサーバーと通信するオプションを残しています...

ソースコードを再コンパイルせずにThunderbirdのオプションを無効にすることはできませんが、(クライアントからメールを受信する)postfix stmpdデーモンを構成して暗号化を適用できます。これを行うには、 smtpd_tls_security_level = encrypt を使用します。これは、廃止されたオプション smtpd_use_tls = yes および smtp_enforce_tls = yes と同等です。 smtpd_tls_security_level = encrypt および smtp_enforce_tls = yessmtpd_tls_auth_only = yes を意味します

smtpd_tls_security_level = encrypt に関するPostfixドキュメントから

必須のTLS暗号化:STARTTLSサポートをSMTPクライアントに通知し、クライアントがTLS暗号化を使用することを要求します。 RFC 2487 によると、これは公的に参照されているSMTPサーバーの場合には適用してはなりません。代わりに、このオプションは専用サーバーでのみ使用してください。

公開サーバーを使用する場合、ポート25/tcpで電子メールの暗号化を強制することはできません。より良い解決策は、クライアントからのpostfix smtpdデーモンポート25/tcpによるメール配信を無効にし、postfix送信デーモンを有効にすることです(これは、 RFC 4409)で説明されているローカルクライアントからのメール受信にのみ使用される特別なpostfix smtpdデーモンです ポート587/tcpで実行)。これを行うには、 smtpd_tls_security_level = may を設定し、_ smtpd_recipient_restrictions からpermit_sasl_authenticatedを削除します。 master.cfで、送信デーモンに関するコメントを外します。

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
4
sumar

気になるのは、TLSを使用していないことをどのように伝えているのでしょうか。 smtp_tls_loglevelのデフォルト値(smtpd_tls_loglevelとは異なります)は0であるため、デフォルトでは、Postfixのログに送信メールのTLSネゴシエーションについて何も表示されません。

Smtp_tls_loglevel = 1以上を設定すると、メッセージが送信されたときにログに次のような行が表示されます。

3月7日22:28:10ラックpostfix/smtp [27400]:クライアント側TLSエンジンの初期化

私は怠惰であることを認めますが、それ(および上記のmsのメモ)を除けば、構成は一見すると問題ありません。

1
jlupolt