我从一家托管公司租用了一台专用的、轻度管理的 CentOS7 机器。主机自带防火墙安装并运行,并iptables预先施加的偏好。
我没想到这一点;我习惯于接收没有防火墙的盒子,除了我打开的服务外,没有运行任何服务。我对防火墙和iptables甚至连最基本的外部电子邮件流量都无法通过端口 25 传输到后缀的队列。我相信是防火墙阻止了我,因为:
我的所有 DNS 记录都已正确设置。这些记录多年来都没有改变;我所要做的就是更新 IP 地址以适应这个新主机。
netstat -ln
确认端口正在监听;我telnet localhost 25
甚至可以协商EHLO
等等。我的后缀配置可能正确,但也无关紧要。我没有测试别名或虚拟域等功能:我只是发送到真实本地用户@postfix-$mydestination-entry。当我从本地主机发送消息时,它就能正常传送。
我提高了后缀的详细程度管理者守护进程,无论我从机器外部发送多少邮件,它的日志都不会显示任何邮件进入队列。它只会报告每 5 分钟醒来执行一些常规操作。
相关区域防火墙我拿到机器的时候是这样的:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http ssh https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我现在设法使它看起来像这样(所有隐藏线保持不变):
public
target: default
services: http ssh https smtp
ports: 25/tcp
(我每次都进行修改--permanent
并编辑。)--reload
不幸的是,我仍然无法telnet host 25
从远程位置和远程邮件仍然无法到达我的后缀队列。对于我遗漏了什么,您有什么想法吗?
PS请注意http是同一个防火墙telnet host 80
区域,从第一天起我就能够通过网络浏览器进行连接。
PPS 我避免发布任何关于iptables输出在这里,因为我实际上不知道其中哪些部分是相关的。我希望有人能够在没有这些信息的情况下推断出我的问题,但如果不能,那么我当然可以挖掘它……
答案1
由于这是一个 VPS,他们中的许多人预先配置 Postfix 以仅监听 127.0.0.1:25 而不是 0.0.0.0:25,这将阻止外部访问 SMTP 端口 - 检查 main.cf 中的 inet_interfaces 是合乎逻辑的第一步。
您说您使用 netstat 来确保进程正在监听,也许仔细检查它是否实际绑定到所有接口会更有启发性,而不仅仅是 127.0.0.1:25。