邮件客户端连接到 postfix 时出现 SSL_accept 错误

邮件客户端连接到 postfix 时出现 SSL_accept 错误

我已经成功在我的服务器上设置了postfixdovecot签名证书。我可以在那里使用 telnet 命令发送和接收电子邮件。现在我想从笔记本电脑上的 Thunderbird 客户端连接到我的邮件服务器,但失败了,以下是输出/var/log/mail.log

postfix/submission/smtpd[11560]: connect from unknown[95.134.50.75]
postfix/submission/smtpd[11439]: SSL_accept error from unknown[95.134.50.75]: lost connection
postfix/submission/smtpd[11439]: lost connection after CONNECT from unknown[95.134.50.75]

/etc/postfix/master.cf这是我在设置时更改的一部分:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
smtps     inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy


submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

这是我的/etc/postfix/main.cf

myhostname = mail.myserver.com
myorigin = /etc/mailname
mydestination = mail.myserver.com, myserver.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_protocols = !SSLv2, !SSLv3

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_loglevel = 1

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

inet_protocols = all

另外,不确定这是否有帮助,但两者都可以在服务器上工作,但只能telnet localhost 25在我的笔记本电脑上运行,当我尝试端口 25 时,它说。在服务器上处于不活动状态。telnet localhost 465telnet myserver.com 465telnet: Unable to connect to remote host: Connection timed outufw

我该怎么做才能修复它?

答案1

端口 465 用于 SMTPS,它在建立连接时立即使用 SSL,然后在建立安全连接后使用通常在端口 25 上找到的相同 SMTP 协议。您可以使用以下命令从命令行进行测试:

openssl s_client -connect smtp.example.com:465

使用 telnet 连接到端口 465 将导致日志文件中出现错误消息,因为未使用 SSL 协议。

仅出于完整性考虑:在正常 SMTP 端口 TCP/25 上测试 TLS

openssl s_client -starttls smtp -connect  smtp.example.com:25

答案2

我唯一一次看到这种情况是当 Postfix 由于限制性 TLS/SSL 设置而阻止客户端时:

smtpd_tls_protocols = !SSLv2,!SSLv3

如果您的邮件客户端尝试使用 SSL2 或 3,那么原因可能就在于此。如果不是,也可能是由于阻塞,但您会认为端口会被彻底阻塞,并且您无法正常看到客户端连接(例如,我的 ISP 完全阻塞了端口 25,当您尝试连接到邮件服务器时,您在日志中看不到任何内容)。

相关内容