我为 postfix 和 Dovecot 设置了 SSL 证书。我可以使用 TLS 连接从 Dovecot 读取邮件,但无法使用 smtps 发送任何邮件。我只能通过 smtp(端口 25)发送邮件。当我尝试通过 smtps 发送邮件时,它会连接到 postfix,但随后会一直挂起直到超时。这可能是什么原因造成的?
这些是我在 main.cf 文件中为 postfix 设置的 smtpd 设置:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = yes
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_cert_file=/opt/ssl.crt
smtpd_tls_key_file=/opt/ssl.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
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
答案1
您需要取消注释 /etc/postfix/master.cf 中的 smtps 行
您当前得到的结果如下所示。尝试取消注释前两行并重新启动 Postfix。您应该看到 Postfix 现在正在监听端口 465。您可能还需要在防火墙上打开该端口。
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
答案2
如果 SSL 证书出现问题,我也见过类似的行为。请仔细检查 Postfix 设置是否正确适用于 SSL 证书。
编辑:首先:Postfix 是否有权访问 /opt/ssl.* 文件?
您可以尝试注释掉这些行,然后重新启动 Postfix。
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