尽管端口被阻止,如何传递传入的 SMTP 邮件

尽管端口被阻止,如何传递传入的 SMTP 邮件

我设置了一个 MX 邮件服务器,尽管端口 25 被阻止,但一切正常,我很困惑为什么我能够通过这种设置接收电子邮件,以及如果我保持这种设置会有什么后果。以下是详细信息:

  • 通过端口 25 和 587 到 SMTP 的连接都可以通过我的本地网络可靠地连接。
  • 外部 IP 无法通过端口 25 连接 SMTP(ISP 正在阻止该端口)。
  • 从外部 IP 通过端口 587 连接到提交 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]

日志显示已连接到本地 IP 的端口 25(我没有进行任何端口映射,因此它也是公共 IP 上的端口 25)。看到这一点让我推测,只有当从未知为邮件服务器的 IP 地址建立连接时,才会在端口 25 上发生 ISP 阻止。还有其他理论吗?

答案1

有几条简单的规则可用于阻止大多数垃圾邮件服务器。有些规则会阻止合法但配置不当的服务器。

  • 阻止未通过 rDNS(反向 DNS)验证的主机。
  • 阻止在spamhaus.org或其他黑名单中列出的主机。Spamhaus 包含一个被标识为动态分配的地址列表,因此这些地址不是合法的邮件服务器。
  • 仅允许来自白名单的主机的访问。 dnswl.org已经提供了这样的白名单。
  • 只允许来自网络内部主机的访问(不推荐,但很常见。)注意:GMail、Yahoo 和其他一些大型提供商可能会直接连接到您的 ISP。

如果您的 ISP 确实这样做了,我建议您过滤非法服务器。

答案2

感谢@phoebus、@mfinni 和@'USD Matt' 的评论,他们的评论有助于澄清情况。

我得出的结论是,邮件实际上是通过端口 25 投递的,因为如果我自己阻止端口 25,则传入邮件将不再投递。确认邮件没有像我最初怀疑的那样通过故障转移到端口 587 投递。

端口 25 似乎仅被我的 ISP(加拿大的 Shaw)针对未运行邮件服务器的 IP 地址阻止,例如,从 dreamhost 上的 shell 或其他非邮件服务 IP 地址阻止端口,但已知邮件服务器不存在端口阻止问题。

为了防止 ISP 改变其端口阻止策略,我通过 pingdom.com 添加了 SMTP 监控。有趣的是,另一个 smtp 监控服务无法监控,因为它的监控代理被我的 ISP 阻止了。

相关内容