私はメールサーバーをセットアップすることを学んでいます。私はそれをPostfixで動作させ、Eximで同じ構成を試しました。 SMTP発信接続のためにクライアントにSTARTTLS接続のみを使用させるにはどうすればよいですか?この質問の指示に従いました。
私の設定は次のようになります
MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTIFICATE = /etc/ssl/certs/ssl-cert-snakeoil.pem
MAIN_TLS_PRIVATEKEY = /etc/ssl/private/ssl-cert-snakeoil.key
.ifdef MAIN_TLS_ENABLE
# Defines what hosts to 'advertise' STARTTLS functionality to. The
# default, *, will advertise to all hosts that connect with EHLO.
.ifndef MAIN_TLS_ADVERTISE_HOSTS
MAIN_TLS_ADVERTISE_HOSTS = *
.endif
tls_advertise_hosts = MAIN_TLS_ADVERTISE_HOSTS
auth_advertise_hosts = ${if eq{$tls_in_cipher}{}{}{*}}
Eximを再起動しました。エラーはありません。それから私は http://checktls.com/ でいくつかのテストを実行しました
TestSenderに合格し、安全な通信でメールを送信できました。しかし、TestSenderAssureTLSは失敗し、Webサイトは暗号化されていない通信をネゴシエートする可能性があります。
何が足りないのですか?
Thunderbirdでアカウントを作成すると、STARTTLSではなく、安全でないSMTPチャネルが自動検出されます。アカウントの設定とメールの送信は成功します。ただし、ネットワーク内のコンピューターのシェルからSMTP会話を行うと、認証がアドバタイズされません。次のようになります。
EHLO <subdomain>.<domain>
250-betelgeuse Hello <subdomain>.<domain> [10.0.14.34]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-STARTTLS
250 HELP
AUTH LOGIN
503 AUTH command used when not advertised
誰かが私に欠けているものを指摘してもらえますか、どうすればより良いテストを行うことができますか?関連するトピックで、autdetectを実行しているクライアントに必要な構成をアドバタイズするにはどうすればよいですか?ありがとうございました。
STARTTLS
接続はセキュリティで保護されていない状態で開始する必要があります。 STARTTLS
オプションは、最初のEHLO
コマンドが実行されるまで通知されません。 STARTTLS
を適用する場合は、ACL
を追加または変更する必要があります。 適用するメールポリシー を公開しました。
このサーバーがMXの場合、すべての接続にSTARTTLS
を適用しないでください。私の構成では、STARTTLS
を必要とする接続にAUTH
が必要です。これには私のLANからの接続は含まれませんが、ローミング中にサーバーから電子メールを送信するユーザーには適用されます。また、送信ポートで認証を行う必要があります。これが私が使用するACL
の基本です。
# This access control list is used after an auth command.
acl_local_auth:
# Deny authentication on unencrypted links
deny
!encrypted = *
message = AUTH encryption is required
# Deny if AUTH isn't on submission port (autolist enabled)
deny
!condition = ${if eq {$interface_port}{587}}
message = AUTH requires submission port
# Accept if encrypted (should not get here if unencrypted)
accept
encrypted = *
#デフォルトの拒否拒否メッセージ= AUTHは受け入れられません
メールTLS
にACL
を適用することもできます。このACLにより、外部送信者はメールを送信できます。
# This access control list is used for every MAIL FROM command in an
# incoming SMTP message.
acl_local_mail_from:
# Accept if locally trusted hosts
accept
hosts = : +relay_from_hosts
# Accept if authenticated
## May want to check domain is local
accept
authenticated = *
# Accept the null sender - bounce messages and receipts
accept
senders = :
# Accept if not local domain - recipient ACL will handle relaying
# More checks on sender in recipient ACL.
accept
!hosts = : +relay_from_hosts
!sender_domains = +local_domains
# Default deny
deny
message = $sender_address is not authorized to send email on this connection.
ACLのテスト中は、defer
ではなくdeny
の使用を検討する必要があります。 ACLは、構成のメインセクションにacl
ステートメントを追加し、上記のACLをACLセクションに追加することで有効になります。
acl_smtp_auth = acl_local_auth acl_smtp_mail = acl_local_mail_from
あなたの設定によると...
tls_advertise_hosts = MAIN_TLS_ADVERTISE_HOSTS
auth_advertise_hosts = ${if eq{$tls_in_cipher}{}{}{*}}
認証をアドバタイズするにはTLS接続が必要なので、opensslで接続を開始します。
openssl s_client -connect hostname:25 -starttls smtp