我在使用 postfix 通过 SSL 从外部 webmail 发送邮件时遇到了问题。我的服务器上有多个域设置,这些域在 postfix 中使用 mysql 配置。当我使用我的主域 domain1.com 发送邮件时,一切正常,但如果从 domain2.com 发送邮件,我的日志中会出现以下信息:
请注意,如果我在网络邮件上禁用 SSL,它就可以正常工作。
connect from unknown[78.209.78.XXX]
timeout after UNKNOWN from unknown[78.209.78.XXX]
disconnect from unknown[78.209.78.XXX]
这是我的main.cf:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
append_dot_mydomain = no
mydomain= domain1.com
myhostname = domain1.com
myorigin = $mydomain
mydestination = XXX.kimsufi.com, localhost.kimsufi.com, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
alias_maps = hash:/etc/aliases
queue_directory = /var/spool/postfix
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mailbox-domains.cf
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/alias-maps.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
mail local si actif
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service unix:private/policy, # SPF
permit
#check_relay_domains
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/authnoactive, mutual_auth
broken_sasl_auth_clients = yes
# DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
请注意,在网络邮件上,我已将 smtp 服务器设置为 mail.domain1.com,因为我已经读到我必须使用在 tls 证书中定义为通用名称的域。
我想要的是让它与 SSL 一起工作。你知道它为什么不工作吗?
编辑
以下是新信息:
问题似乎与域 1 或域 2 无关,而只发生在新配置中。我有一个设置了一年多的域,一切运行正常。我从我的网络邮件中删除了它并重新配置了它,现在我无法发送邮件。
当我配置它时,我看到它要求我使用我的 https 证书而不是 postfix 证书。所以问题可能出在这里,但我不知道如何解决它。
这是我的 Apache 配置:
<VirtualHost _default_:80>
include /etc/apache2/domain.conf
</VirtualHost>
<VirtualHost _default_:443>
include /etc/apache2/domain.conf
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert-domain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain.com.key
SSLCACertificateFile /etc/apache2/ssl/GandiStandardSSLCA.pem
SSLVerifyClient None
</VirtualHost>
另外,如果我执行 openssl s_client -connect localhost:465 我会得到:
CONNECTED(00000003)
11508:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:607:
我不知道自签名证书是否正常。
答案1
Postfix 并未监听smtpd_tls_wrappermode
端口 465,而是作为标准 smtp 服务器。
您master.cf
应该包含类似于以下内容的(多部分)行
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
然而,它可能只有
smtps inet n-n--smtpd