![无法使用邮件客户端连接到 postfix](https://linux22.com/image/639432/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E9%82%AE%E4%BB%B6%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E5%88%B0%20postfix.png)
我一直在尝试在我的服务器中设置 MX,并且能够使用 Dovecot 使 IMAP 部分在 SSL 下工作,但是我无法使用 Dovecot 作为 SASL 身份验证使 SMTP 部分工作。
当我 时telnet example.com 587
,给出ehlo
以下信息:
250-example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
ehlo 中没有身份验证,但是如果我执行上述ehlo
操作openssl s_client -starttls smtp -connect example.com:587
,我会得到以下信息:
250-example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
使用 '\0username\0password' 的 base64 进行普通登录,返回好的。我认为这里的问题不是 SASL,因为用户已经通过了身份验证,问题出在连接上,但我不知道是什么原因导致了这样的问题。由于我的收件人限制不允许未经 SASL 身份验证的用户通过,因此默认 telnet 会给我一个错误。我如何将 SASL 添加到默认的非 STARTTLS 连接,以便我可以将其与我的邮件客户端一起使用?
这是我的main.cf:
## SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
## SSL/TLS
smtpd_tls_received_header = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_tls_ask_ccert = yes
smtpd_use_tls=yes
smtp_use_tls=yes
smtpd_tls_log_level = 2
smtp_tls_note_starttls_offer = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_protocols = SSLv3, TLSv1
tls_random_source = dev:/dev/urandom
message_size_limit = 30720000
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname,
reject_invalid_hostname, permit
smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender,
reject_unknown_sender_domain, reject_unauth_pipelining, permit
smtpd_recipient_restrictions = reject_unauth_pipelining,
permit_mynetworks, reject_non_fqdn_recipient,
reject_unknown_recipient_domain, reject_unauth_destination, permit
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_sender_restrictions = reject_unknown_sender_domain
mydestination = localhost, example.com
mynetworks = 127.0.0.0/8
inet_interfaces = all
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_domain_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
编辑:使前面的问题更加具体。*
更新:我安装了 roundcube 并通过客户端发送邮件并且成功了,但是我仍然无法让身份验证与外部服务器一起工作。
更新 #2:当我尝试通过 SSL 端口 587 连接到服务器时,我在日志文件中发现了以下几行
warning: dict_nis_init: NIS domain name not set - NIS lookups disabled connect from 93.88.82.66 SSL_accept error from 93.88.82.66: lost connection lost connection after STARTTLS from 93.88.82.66 disconnect from 93.88.82.66
更新 #3: 在我重启 postfix 和 dovecot 后它就起作用了(不是重新加载)
答案1
我知道这并没有真正回答你的问题,但是:
不。
改用带有 STARTTLS 的邮件客户端,正如您所说,它与您的服务器配合良好。通过未加密的连接发送凭据并不是一个好主意。
您根本没有说明为什么要进行未加密的 SMTP 身份验证,因此我只能猜测 - 如果您的邮件客户端无法执行 STARTTLS(或者,从一开始就进行 TLS 连接,即 SMTPS,到端口 465),那么您应该致力于保护客户端的安全,而不是削弱服务器端。