我在安全组上有一个 EC2 实例,允许端口 80、443 和 22(tcp,从 0.0.0.0/0 和 ::/0 入站);以及每个出站连接(到 0.0.0.0/0 和 ::/0,所有 tcp 和 udp)。
我最近设置了一个邮件服务器,因此我从 0.0.0.0/0 和 ::/0 添加了端口 25/tcp。
现在我可以按预期使用公共 IP 从任何外部主机连接到我的邮件服务器,没有任何问题。
我还可以使用主机名或 127.0.0.1 作为 IP 从实例内部进行连接localhost
。
但我无法使用实例的公共 IP 或主机名从实例内部连接到端口 25 上的实例。我没有收到连接被拒绝或其他任何信息,只是超时。
实例中的任何其他开放端口都没有出现此问题,我可以使用实例 shell 中的公共 IP 完美地 telnet 到端口 80、443 或 22。
我尝试过重启、停止/启动,甚至从头创建一个新的安全组并将实例切换到它。结果仍然相同:外部连接正常,使用公共 IP 的内部连接仅在该端口上失败。
iptables 看起来不错,我看不到会影响此端口而不影响其他端口的限制或权限。
此实例上未启用防火墙(Debian buster)
邮件服务器是 postfix(我不知道这是否有任何区别。如果它实际上是一个 postfix 配置问题,我很困惑,因为我在服务器日志中看不到任何内容,并且它允许其他每个连接源......)
答案1
但我无法使用实例的公共 IP 或主机名从实例内部连接到端口 25 上的实例。我没有收到连接被拒绝或其他任何信息,只是超时。
Amazon EC2 不允许实例发出 SMTP 流量(除非您已申请并获得账户豁免)。这意味着您无法通过其公共 IP 地址访问您服务器的 SMTP 服务器(或任何其他人的服务器)。
如果需要连接本地主机,就连接到localhost。