我最近不得不将 SMTP 中继从 Cablevision 更改为 Verizon。Verizon 阻止端口 25,但他们将通过端口 465 接受 SSL(根据此)。我使用this和this将stunnnel
转发postfix
的数据转发到端口 465。
不幸的是,我的邮件没有成功。我在 mail.log 中收到以下错误:
Sep 8 15:16:25 DServ postfix/qmgr[6178]: A9EF9480429: from=<mark.kasson@docsmit.com>, size=545, nrcpt=1 (queue active)
Sep 8 15:16:25 DServ postfix/smtp[6777]: A9EF9480429: to=<markkasson@gmail.com>, 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).)
Run Code Online (Sandbox Code Playgroud)
Dovecot 发出消息,但是,它们似乎都不是错误消息。我还看到了以下内容:
Sep 8 17:26:26 DServ postfix/error[7112]: D0B944801A9: to=<mkasson@sigmgt.com>, 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).)
Run Code Online (Sandbox Code Playgroud)
在我的 main.cf 中,我有:
relayhost = [127.0.0.1]:12345
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
Run Code Online (Sandbox Code Playgroud)
在 /etc/postfix/sasl_passwd 我有
[127.0.0.1]:12345 MYUSERNAME@verizon.net:MYPASSWORD
Run Code Online (Sandbox Code Playgroud)
我跑了:
sudo postmap hash:/etc/postfix/sasl_passwd
sudo service postfix restart
Run Code Online (Sandbox Code Playgroud)
如果我telnet localhost 12345
,我可以到达威瑞森服务器。
任何帮助将不胜感激!谢谢。
根据下面的 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
---
Run Code Online (Sandbox Code Playgroud)
看起来它在抱怨未知的协议。我不知道从这里到哪里去。
添加 成功的 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.
Run Code Online (Sandbox Code Playgroud)
我带了一个人进来,经过一些检查和测试后,我们添加到smtp_sasl_mechanism_filter = login
了main.cf
. 这就澄清了。
他解释说它强制 postfix 进行身份验证登录(我在通过 telnet 测试时手动执行)。 smtp_sasl_mechanism_filter 文档
我看着tail -F /var/log/mail.log
,电子邮件就出去了。 mailq
运行显示队列在缩小,这很好。
谢谢大家!
PS 另外三点注意事项:
1)我删除了smtp_sasl_security_options = noanonymous
. 这或许是一个正确的方向,但并没有实现。
2)我不需要使用smtp_generic_maps
.
其中一篇文章使用了这两种方法(科斯汀也建议smtp_sasl_security_options
这样做)。
3)本文有助于展示如何获取用于手动登录的 Base64telnet
密码perl -MMIME::Base64 -e 'print encode_base64("john\@example.com\0john\@example.com\0password")';
归档时间: |
|
查看次数: |
43400 次 |
最近记录: |