postfix SASL 身份验证失败-内部身份验证错误

postfix SASL 身份验证失败-内部身份验证错误

我最近不得不将 SMTP 中继从 Cablevision 更改为 Verizon。Verizon 阻止了端口 25,但他们将通过端口 465 接受 SSL(根据)我曾经使用过将的数据stunnnel转发至端口 465。postfix

不幸的是,我的邮件没有发出。我在 mail.log 中收到以下错误:

Sep  8 15:16:25 DServ postfix/qmgr[6178]: A9EF9480429: from=<[email protected]>, size=545, nrcpt=1 (queue active)
Sep  8 15:16:25 DServ postfix/smtp[6777]: A9EF9480429: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:12345, delay=231428, delays=231428/0.01/0.4/0, dsn=4.7.0, status=deferred (SASL authentication failed; server 127.0.0.1[127.0.0.1] said: 500 5.7.0 Unknown AUTH error -1 (Internal authentication error).)

Dovecot 发出消息,但是似乎都不是错误消息。我还看到以下内容:

Sep  8 17:26:26 DServ postfix/error[7112]: D0B944801A9: to=<[email protected]>, relay=none, delay=197679, delays=197679/0.01/0/0.03, dsn=4.7.0, status=deferred (delivery temporarily suspended: SASL authentication failed; server 127.0.0.1[127.0.0.1] said: 500 5.7.0 Unknown AUTH error -1 (Internal authentication error).)

在我的 main.cf 中,我有:

relayhost = [127.0.0.1]:12345
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

在 /etc/postfix/sasl_passwd 中我有

[127.0.0.1]:12345 [email protected]:MYPASSWORD

我跑了:

sudo postmap hash:/etc/postfix/sasl_passwd
sudo service postfix restart

如果我telnet localhost 12345,我就能访问 Verizon 服务器。

任何帮助都将不胜感激!谢谢。

编辑 根据下面的 Costin,我运行了 openssl 并得到:

CONNECTED(00000003)
3073435324:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:787:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

它似乎在抱怨未知协议。我不知道该如何处理。

添加 成功的 Telnet 记录:

telnet localhost 12345
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vms173023pub.verizon.net -- Server ESMTP (Sun Java(tm) System Messaging Server 7u2-7.02 32bit (built Apr 16 2009))
EHLO verizon.net
250-vms173023pub.verizon.net
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-DSN
250-ENHANCEDSTATUSCODES
250-HELP
250-XLOOP 80E3E78D42E6EE2FDAB2C28EB1AA64CD
250-AUTH DIGEST-MD5 PLAIN LOGIN CRAM-MD5
250-AUTH=LOGIN PLAIN
250-ETRN
250-NO-SOLICITING
250 SIZE 20971520
AUTH LOGIN
334 VXNlcm5hbWU6
MYUSERNAME-IN-64
334 UGFzc3dvcmQ6
MYPASSWORD-IN-64
235 2.7.0 LOGIN authentication successful.

答案1

我找了一个人来,经过一番检查和测试后,我们添加了smtp_sasl_mechanism_filter = loginmain.cf这解决了问题。

他解释说,这强制 postfix 执行 AUTH LOGIN(我在通过 telnet 测试时手动执行)。 smtp_sasl_mechanism_filter 文档

我看着tail -F /var/log/mail.log电子邮件发出去。 mailq运行显示队列正在缩小,这很好。

谢谢大家!

PS 另外三点说明:

1) 我删除了smtp_sasl_security_options = noanonymous。这可能是正确的方向,但没有完成。

2)我不需要使用smtp_generic_maps

其中一篇文章就使用了这两种方法(Costin 也建议这样做smtp_sasl_security_options)。

3)本文有助于展示如何获取用于手动登录的 Base64telnet密码perl -MMIME::Base64 -e 'print encode_base64("john\@example.com\0john\@example.com\0password")';

答案2

尝试将其添加到您的 main.cf

smtp_sasl_security_options = noanonymous

然后重新加载 postfix 配置

另外,在通过 telnet 连接到 localhost 后,尝试使用此处描述的步骤测试与 verizon 的 smtp 身份验证连接:http://www.ndchost.com/wiki/mail/test-smtp-auth-telnet

telnet mailserver.com 25将文章中的命令替换为
telnet localhost 12345

有些指南没有提到您需要libsasl2-modules安装该软件包。请检查它是否已安装,如果没有,请安装它。

答案3

尝试对您的 main.cf 进行此配置

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_mechanism_filter = login

假设您已完成所有其他配置。

答案4

当我更改密码时发生了这种情况,为了使其再次工作,请删除sasl_passwd.db,然后使用以下命令重新配置:

sudo postmap /etc/postfix/sasl_passwd

然后重新启动 postfix:

systemctl restart postfix

相关内容