我使用我的 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
还是只要一个就够了?如果有,是哪一个?
在您描述的场景中,您不需要打开端口 25 - 仅当您从 Internet 上的其他邮件服务器接收电子邮件时才需要打开端口 25。
对于您的防火墙规则,只需要 1 个(但任何一个都可以)。第二个 - “ufw allowed 587/tcp”是这两条规则中更好的一个,因为它更严格。(这允许端口 587 上的 UDP 流量 - 邮件不使用该端口 - 实际上,这在某种程度上是理论上的问题)。如果您选择“ufw allowed 587”,则指定 TCP 的第二条规则是多余的,不会为您做任何有用的事情。
稍微简化一下,SMTP 邮件传送必须采用两种模式:MUA 到 MTA 以及 MTA 到 MTA。MUA 代表“邮件用户代理” - 类似于 Outlook 或 Thunderbird 邮件客户端,而 MTA 是“邮件传输代理”。
MTA 到 MTA 传送要求打开端口 25,因为邮件可能会向任一方向发送,并且需要使用定义的标准端口,因为服务器之间没有预先商定任何内容。
MUA 到 MTA 的传送可以通过任意端口进行 - 因为该端口可以在 MUA 中进行编程。通常使用端口 587。在此场景中根本不使用端口 25。这是您正在使用的模式。
那么还有第二个问题“那么,MUA 将邮件发送给 MTA 后,我的 MTA 如何处理它”。答案是,它从任意端口到远程服务器上的端口 25建立 OUTBOUND 连接。这是出站连接,而不是入站连接,因此您的邮件服务器未侦听端口 25。
(为了抢占下一个问题 - 除非你有一个特别严格的、特定目的的防火墙 - 如果你这样做了,我认为你不会问这个问题,因为你已经理解了其中的复杂性)防火墙允许所有出站连接到端口 25 - 因为没有它,一般互联网将无法工作。您的 SMTP 服务器只是利用该连接)