无法使用邮件客户端连接到 postfix

无法使用邮件客户端连接到 postfix

我一直在尝试在我的服务器中设置 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),那么您应该致力于保护客户端的安全,而不是削弱服务器端。

相关内容