后缀 SMTP 中继:客户端不向服务器提供 TLS 客户端证书



我有两台机器,一台运行 Ubuntu,一台运行 Debian,都运行 Postfix。目的是机器#2成为机器#1的SMTP中继/智能主机。我已经创建了一个 CA 并为两台机器颁发了证书:#2 的服务器证书和 #1 的客户端证书。

当从 #1 发送电子邮件时(通过让 MUA 与 localhost:25 上的 Postfix 通信,目的是将电子邮件中继到 #2(,基本工作正常:机器可以相互通信,并且实际上尝试中继。这个想法是允许在 #2 上中继,如果从 #1 提供有效的客户端 SSL/TLS 证书。

#2 的相关配置是:

smtpd_tls_received_header = yes
smtpd_tls_loglevel = 2
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/private/cert2.pem
smtpd_tls_key_file = /etc/ssl/private/key2-d.pem
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_auth_only = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_tls_all_clientcerts

#1 上的配置是:

smtp_tls_CAfile = /etc/ssl/certs/cacert.pem
smtp_tls_cert_file = /etc/ssl/private/cert1.pem
smtp_tls_key_file = /etc/ssl/private/key1-d.pem
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = verify
smtp_tls_loglevel = 2

计算机 #1 连接到 #2,启用 STARTTLS,日志文件显示它已成功验证来自 #2 的证书,并尝试中继消息。但是,它似乎不会将客户端证书发送到 #2,并且 #2 拒绝中继消息。

来自 #1 的日志条目:

Apr 17 01:18:14 mail1 postfix/smtp[30250]: Verified TLS connection established to mail2[x.x.x.x]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Apr 17 01:18:14 mail1 postfix/smtp[30244]: 8A2328BDB4: to=<addr@gmail.com>, relay=mail2[x.x.x.x]:25, delay=3488, delays=3486/0.41/0.85/0.19, dsn=4.7.1, status=deferred (host mail2[x.x.x.x] said: 454 4.7.1 <addr@gmail.com>: Relay access denied (in reply to RCPT TO command))

来自 #2 的日志条目:

Apr 17 01:18:13 mail2 postfix/smtpd[28798]: Anonymous TLS connection established from unknown[y.y.y.y]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Apr 17 01:18:13 mail2 postfix/smtpd[28798]: NOQUEUE: reject: RCPT from unknown[y.y.y.y]: 454 4.7.1 <addr@gmail.com>: Relay access denied; from=<addr@mail1> to=<addr@gmail.com> proto=ESMTP helo=<mail1>

有什么想法吗?我假设 #1 没有根据 mail2 日志中的"已建立匿名 TLS 连接"部分发送其客户端证书。

TLS 服务器必须从客户端请求证书,客户端不会自行发送证书。尝试添加

smtpd_tls_ask_ccert=是

在服务器端

后缀 conf 文件中添加您的服务器地址 ( server1.domaine.com main.cf我的网络 = 127.0.0.1/8

最新更新