Postfixを使用して送信SMTPの暗号化を強制する


22

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

回答:


30

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を使用し ます


1
彼は、ソフトウェアメールクライアントから送信メールサーバーにそれを強制したいだけだと思います。メールサーバーからメールサーバーへではありません(10月3日23時26分に投稿された彼のコメントを参照)
Cojones

4

その考えは、暗号化された送信SMTPサーバーを使用してユーザーにメールクライアントを構成させることです。現在のconfでは、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 = yesはsmtpd_tls_auth_only = yesを意味します

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

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

パブリックサーバーを使用する場合、ポート25 / tcpで電子メールの暗号化を強制することはできません。より良い解決策は、クライアントからのpostfix smtpdデーモンポート25 / tcpによるメール配信を無効にし、postfix送信デーモン(ポート587 / tcpで実行されるRFC 4409で説明されているローカルクライアントからのメールの受信にのみ使用される特別なpostfix smtpdデーモン)を有効にすることです。それを行うには、smtpd_tls_security_level = mayを設定し、smtpd_recipient_restrictionspermit_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

1

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

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

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

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


1
Simonは、すべてのメールをTLSを使用して暗号化することを強制することを理解しています。smtp_use_tls = yesは、リモートサーバーがサポートしている場合、postfixによるTLSの使用を許可します(smtp_use_tls = yesはsmtp_tls_security_level = mayと同等です)。送信メールがTLSを使用して暗号化されている場合、適切なメッセージをメールログに入れる必要があります。smtp_ *オプションはsmtpd_ *とは異なるpostfixデーモン用です(smtpd_ *はリモートサーバーからのメールの受信用、smtp_ *はリモートサーバーへのメールの配信用)。
スマー

実際、この質問は少し曖昧かもしれません。少なくとも、SimonがPostfixにTLSを要求するのか、受信者のサーバーでサポートされている場合にそれを使用するのかを判断することはできません。
-jlupolt

1
あなたの言葉をありがとう、私はおそらく私をうまく説明しませんでした。その考えは、暗号化された送信SMTPサーバーを使用してユーザーにメールクライアントを構成させることです。現在のconfでは、Thunderbirdはsmtpサーバーとプレーンテキストで通信するオプションを残しています...これを回避することは可能ですか?事前に感謝します、サイモン。
サイモン

TLSがアクティブかどうかを識別する簡単な方法は、受信側で生のメッセージを見て、認証結果を探すことです:domainkeys = neutral(no sig); どちらのは、TLSを使用していないを示している
スコットStensland
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.