我仅使用 postfix smtp 发送传出电子邮件。它将不会收到传入消息。我在 Namecheap 有邮箱。
我使用名为 Mailwizz 的客户端来连接我的 Postfix SASL 用户凭据。这发生在端口 587 上。
我进行了测试,电子邮件发送没有问题。
问题:如果我使用port 587
Mailwizz 发送电子邮件,为什么我需要允许port 25
我的防火墙? 如果我禁用会发生什么port 25
?
另外,我很困惑是否应该允许端口 587 和/或通过 TCP 进行监听。
我是否运行这两个命令:
sudo ufw allow 587
sudo ufw allow 587/tcp
或者只要一个就够了?如果是,哪一个?
答案1
在您描述的场景中,您不需要打开端口 25 - 仅当您从 Internet 上的其他邮件服务器接收电子邮件时才需要这样做。
就您的防火墙规则而言,只需要 1 条规则(但两条规则都可以)。第二条规则 - “ufw allow 587/tcp” 是两条规则中更好的一条,因为它更严格。(这允许端口 587 上的 UDP 流量 - 邮件不会使用该端口 - 实际上,这在某种程度上是一个理论上的问题)。如果您使用“ufw allow 587”,则第二条指定 TCP 的规则是多余的,不会对您有任何用处。
简单来说,SMTP 邮件传递有两种模式 - MUA 到 MTA 和 MTA 到 MTA。MUA 代表“邮件用户代理” - 类似于 Outlook 或 Thunderbird 邮件客户端,而 MTA 是“邮件传输代理”。
MTA 到 MTA 传递要求打开端口 25,因为邮件有可能在任一方向传输,并且需要使用定义的标准端口,因为服务器之间没有任何预先约定。
MUA 到 MTA 的传递可以通过任意端口进行 - 因为可以在 MUA 中对端口进行编程。通常使用端口 587。在这种情况下根本不使用端口 25。这是您正在使用的模式。
然后是第二个问题“那么,在 MUA 将邮件发送到 MTA 后,我的 MTA 如何处理它”。答案是它建立了一个 OUTBOUND 连接从任意端口到远程服务器上的端口 25。这是出站连接,而不是入站连接,因此您的邮件服务器未监听端口 25。
(先回答下一个问题 - 除非您有一个特别严密、特定用途的防火墙 - 如果有的话,我认为您不会问这个问题,因为您已经了解其中的复杂性)您的防火墙中将有一个通用规则,允许所有出站连接到端口 25 - 因为没有它,一般的互联网将无法工作。您的 SMTP 服务器只是利用了该连接)