几周前,在迁移到安装了最新软件的新服务器后,我注意到日志中出现了以下几行(其中包括,它允许我最终禁用已弃用的 SSL/TLS 版本):
Apr 18 13:31:24 myhostname postfix/smtpd[1641]: connect from relay2.uni-heidelberg.de[129.206.119.212]
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: setting up TLS connection from relay2.uni-heidelberg.de[129.206.119.212]
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: relay2.uni-heidelberg.de[129.206.119.212]: TLS cipher list "AES128+EECDH:AES128+EDH"
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: SSL_accept:before/accept initialization
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: SSL_accept:error in SSLv2/v3 read client hello A
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: SSL_accept error from relay2.uni-heidelberg.de[129.206.119.212]: -1
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:650:
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: lost connection after STARTTLS from relay2.uni-heidelberg.de[129.206.119.212]
Apr 18 13:31:25 myhostname postfix/smtpd[1641]: disconnect from relay2.uni-heidelberg.de[129.206.119.212]
从那时起,这些行就一直在重复出现。但是,来自其他邮件服务器(包括 Gmail)的电子邮件已经通过,因此似乎这个问题仅限于这个特定的客户端。但今天,当亚马逊和 Facebook 邮件服务器连接时,我注意到了类似的日志消息。(不过,有趣的是,它们随后会立即重新连接 - 有时来自不同的主机 - 然后它就可以正常工作了。)
我能做些什么来解决这些问题或者让电子邮件继续发送吗?
我正在运行 Postfix 2.11.3。
输出$ postconf -n
:
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
default_process_limit = 5
dovecot_destination_recipient_limit = 1
enable_original_recipient = yes
header_checks = regexp:/etc/postfix/header_checks
home_mailbox = Maildir/
inet_interfaces = all
mailbox_command = /usr/lib/dovecot/deliver -m "${EXTENSION}"
mailbox_size_limit = 0
message_size_limit = 52428800
mydestination = *****, localhost
myhostname = *****
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
queue_minfree = 0
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 2
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_restrictions = reject_unknown_client_hostname
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:localhost:10023
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = ******
smtpd_tls_ciphers = medium
smtpd_tls_eecdh_grade = strong
smtpd_tls_key_file = ******
smtpd_tls_loglevel = 2
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_medium_cipherlist = AES128+EECDH:AES128+EDH
tls_preempt_cipherlist = yes
tls_random_source = dev:/dev/urandom
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
virtual_gid_maps = static:994
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 1073741824
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:994
答案1
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
...
tls_medium_cipherlist = AES128+EECDH:AES128+EDH
通过将协议限制为仅 TLS 1.2,您的设置过于严格。大部分邮件服务器使用某种 UNIX,其中 OpenSSL 作为 TLS 库。仅在 4 年前发布的 1.0.1 版本中才添加对 TLS 1.2 的支持。这意味着有很多服务器使用旧版本的 OpenSSL,因此无法使用 TLS 连接到您的服务器。根据对等服务器设置和软件,这意味着向您的系统发送邮件要么永久失败,要么将在没有 TLS 的情况下重试。
因此,在邮件传输的情况下,您应该减少限制并至少接受 TLS 1.0,甚至接受 SSL 3.0,因为在大多数情况下,糟糕的加密比没有加密甚至没有投递要好。密码集也是如此:虽然偏好更强的密码是可以的,但您还应该将一些非 DH 密码和一些足够强大的密码(如 DES-CBC3-SHA)纳入您的密码集。
答案2
您已将 Postfix 配置为使用强加密,并采用推荐的 TLS 安全设置,例如https://cipherli.st/
通过仅接受具有安全设置的两个强密码smtpd_tls_mandatory_ciphers = medium
并且
tls_medium_cipherlist = AES128+EECDH:AES128+EDH
仅允许 TLS 1.2,您在安全性和兼容性之间进行了权衡。
Relay2.uni-heidelberg.de 愿意协商并切换到加密连接,但无法协商合适的密码。尽管设置smtpd_tls_security_level = may
允许您的服务器回退到未加密的明文连接,显然relay2不愿意回退。
您要么需要支持一些较弱的密码,要么需要升级 Relay2 以支持现代强密码。
答案3
有时可能是由于您的邮件客户端应用程序。例如,在 Outlook 中,您需要在外发 smtp 服务器的设置中将其加密从自动设置为 SSL 才能使其正常工作。希望对您有所帮助