我设置了一个 MX 邮件服务器,尽管端口 25 被阻止,但一切正常,我很困惑为什么我能够使用此设置接收电子邮件,以及如果我这样设置可能会产生什么后果。以下是详细信息:
- 通过端口 25 和 587 与 SMTP 的连接都通过我的本地网络可靠地连接。
- 通过端口 25 与 SMTP 的连接被外部 IP 阻止(ISP 阻止了该端口)。
- 通过端口 587 从外部 IP 连接到提交 SMTP 是可靠的。
- 从 gmail、yahoo 和其他一些地址发送的电子邮件都在送达。我还没有找到无法将邮件发送到我的 MX 的电子邮件提供商。
因此,在端口 25 被阻塞的情况下,我假设其他 MTA 服务器回退到端口 587,否则我无法想象邮件是如何接收的。我知道 25 端口不应该被阻塞,但到目前为止它可以工作。是否有无法使用的邮件服务器?我在哪里可以找到更多关于它是如何工作的?
- 编辑
更多技术细节,以验证我没有遗漏一些愚蠢的东西。显然,在下面的文字记录中,我已经用 example.com 替换了我的实际域。
# DNS MX record points to the A record.
$ dig example.com MX +short
1 example.com
$ dig example.com A +short
<Public IP address>
# From a public server (not my ISP hosting the mail server)
# We see port 25 is blocked, but port 587 is open
$ telnet example.com 25
Trying <public ip>...
telnet: Unable to connect to remote host: Connection refused
# Let's try openssl
$ openssl s_client -starttls smtp -crlf -connect example.com:25
connect: Connection refused
connect:errno=111
# Again from a public server, we see port 587 is open
$ telnet example.com 587
Trying <public ip>...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Postfix
ehlo example.com
250-example.com
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-BINARYMIME
250 CHUNKING
quit
221 2.0.0 Bye
Connection closed by foreign host.
以下是收到来自 gmail 的消息时邮件日志中的一部分:
postfix/postscreen[93152]: CONNECT from [209.85.128.49]:48953 to [192.168.0.10]:25
postfix/postscreen[93152]: PASS NEW [209.85.128.49]:48953
postfix/smtpd[93160]: connect from mail-qe0-f49.google.com[209.85.128.49]
postfix/smtpd[93160]: 7A8C31C1AA99: client=mail-qe0-f49.google.com[209.85.128.49]
日志显示在端口 25 上与本地 IP 建立了连接(我没有进行任何端口映射,因此它也是公共 IP 上的端口 25)。看到这一点,我推测端口 25 上的 ISP 块仅在从未知的 IP 地址建立连接时才会发生。邮件服务器。还有其他理论吗?