我正在专用硬件上的 CentOS 7 安装上设置邮件服务器,在 Dovecot 设置 SASL 的情况下,我遇到了让 Postfix 验证 SMTP 连接的问题。我遵循了所有能找到的关于编辑和 Dovecotmain.cf
文件的master.cf
指南。.conf
其余一切都运行良好。我已经设置了 Dovecot,它可以安全地进行身份验证,没有任何问题。如果我设置了,SMTP 可以正常工作,smtpd_tls_auth_only = no
但密码显然是以明文形式发送的。
我已经运行openssl s_client -connect sub.domain.com:25 -starttls smtp
检查,它正确返回了证书,一切似乎都正常。ehlo sub.domain.com
之后运行返回:
250-sub.domain.com
250-PIPELINING
250-SIZE 20480000
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
我认为这是 TLS“握手”之后预期的情况。
当我尝试使用邮件客户端连接时,跟踪日志会给出以下信息:参见粘贴
当我尝试发送时,OS X 中的邮件告诉我以下内容:
Mail 无法使用默认端口上的 SSL 连接到服务器“sub.domain.com”。请验证此服务器是否支持 SSL,以及您的帐户设置是否正确。
我已尝试通过所有标准端口进行连接。
Roundcube 给我错误代码 250:身份验证失败。
编辑:以下是输出postconf -n
:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5
delay_warning_time = 4
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 20480000
mydestination = localhost.$mydomain, localhost
mydomain = domain.com
myhostname = sub.domain.com
mynetworks = 127.0.0.1, xxx.xxx.xxx.xxx
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.2.2/README_FILES
recipient_delimiter = +
relay_domains = proxy:mysql:/etc/sentora/configs/postfix/mysql-relay_domains_maps.cf
sample_directory = /usr/share/doc/postfix-2.2.2/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_loglevel = 4
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions =
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_helo_required = yes
smtpd_helo_restrictions =
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_tls_received_header = yes
smtpd_use_tls = yes
soft_bounce = yes
unknown_local_recipient_reject_code = 550
virtual_alias_maps = proxy:mysql:/etc/sentora/configs/postfix/mysql-virtual_alias_maps.cf, regexp:/etc/sentora/configs/postfix/virtual_regexp
virtual_gid_maps = static:12
virtual_mailbox_base = /var/sentora/vmail
virtual_mailbox_domains = proxy:mysql:/etc/sentora/configs/postfix/mysql-virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/sentora/configs/postfix/mysql-virtual_mailbox_maps.cf
virtual_minimum_uid = 996
virtual_transport = dovecot
virtual_uid_maps = static:996
位于postconf -M
:此粘贴
如果我需要粘贴更多日志或配置文件,请提出要求,我很乐意提供。只要能让这个该死的安全系统正常工作,我什么都愿意!啊!
答案1
事实证明,我有点愚蠢。我尝试从工作网络以外的网络(通过我的移动提供商)进行连接,连接成功了!
错误:
Mail 无法使用默认端口上的 SSL 连接到服务器“sub.domain.com”。请验证此服务器是否支持 SSL,以及您的帐户设置是否正确。
当您使用 STARTTLS 但SSL
在 OS X Mail 中选择该选项时会显示。由于您没有使用 SSL,因此它会失败。
在这种情况下,问题不是服务器或服务器防火墙的配置错误,而是Cyberoam我们网络上运行的一台设备由于某种原因阻止了连接。它没有设置 SMTP 限制,但肯定是某个地方配置错误,因为除了我们的商务邮件外,SMTP 也不适用于任何其他邮件提供商。不过,该问题的解决方案超出了本问答的范围。
因此,尽管现在看来这应该是我的第一个故障排除步骤,但如果您遇到这种情况,请首先尝试从另一个网络连接来检查您的设置,特别是如果您使用 Cyberoam。