我有已配置 TLS 选项的 Postfix SMTP 中继。现在我才意识到,当使用 Microsoft Outlook 向 Gmail(例如)发送电子邮件时,在收件人的邮件头上发现“客户端未提供证书”
已接收:来自 MYCOMPUTER(未知 [100.200.100.150])(使用带密码的 TLSv1.2(256/256 位))(客户端未提供证书)由 smtpserver.domain.com(Postfix)发送,ESMTPSA id 为 ABCDE12345[电子邮件保护]
我正在使用从 Comodo 购买的通配符 SSL 证书。
请问原因是什么?我配置错误了吗?
请帮忙
smtpd_tls_security_level = 可能
smtp_tls_security_level = 可能
smtpd_use_tls = 是
smtp_use_tls = 是
smtp_tls_note_starttls_offer = 是
smtpd_tls_auth_only =是 smtpd_tls_key_file = /etc/postfix/certs/key.key smtpd_tls_cert_file
= /etc/postfix/certs/crt.crt smtpd_tls_CAfile = /etc/postfix/certs/cabundle.ca-bundle smtpd_tls_loglevel = 1 smtpd_tls_received_header = 是 smtpd_tls_session_cache_timeout = 3600s smtpd_tls_ask_ccert = 是 tls_random_source = dev:/dev/urandom smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp inet n - n - - smtpd submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
答案1
using TLSv1.2 with cipher (256/256 bits)
服务器支持 TLS,并且客户端选择协商安全的 TLS 连接,一切都很好。
(Client did not present a certificate)
客户端未使用 TLS 客户端证书向服务器验证自身身份相互的TLS这是很常见的,没有必要担心,除非你想要/需要进行双向 TLS
答案2
您仅配置了 Postfix 在服务器角色(即接收邮件)中使用证书。这些是设置smtpd_*
。
但是您提到的消息不是关于通过您的服务器接收邮件,而是关于从您的服务器向另一台服务器发送邮件,即通过另一台服务器接收邮件。在这种情况下,如果涉及 TLS(您的设置将此视为可选,即),通常发送系统(即您的 Postfix)只会检查接收邮件服务器(即另一台)的证书smtp_tls_security_level = may
。
某些邮件服务器配置为不仅提供自己的证书供发件人(即您的 Postfix)进行身份验证,而且还向发件人请求证书。这通常是可选的,即即使发件人不提供这样的证书来验证自己,TLS 连接也会被接受。这就是导致消息的原因“客户未出示证书”。
如果你确实想提供客户端证书,则需要在 Postfix 中使用相关smtp_*
设置(不是smtpd_*
)进行明确配置,即smtp_tls_cert_file
等等。请参阅文档了解详情。
答案3
您已配置 Postfix 以要求连接 SMTP 客户端提供客户端证书。
smtpd_tls_ask_ccert = yes
不清楚你为什么这样做,因为这不是你说的你想要的。也许它来自错误的互联网教程?
无论如何,您应该能够删除此行以使警告消失。