我的服务器不监听端口 25,即使 iptables 允许 smtp 流量

我的服务器不监听端口 25,即使 iptables 允许 smtp 流量

我的公共服务器接受流量,并使用 iptables PREROUTING 规则将其中继到网络上的其他机器。我最近在 192.168.1.10 添加了一台邮件服务器,并制定了其 iptables 规则以接受端口 25 流量。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT 

netstat -nat邮件服务器上,我看到它监听:25

在我的公共机器上,我添加了一个

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT 
-A PREROUTING -i eth1 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.10:25

规则,但它不听从 :25。我的大学不允许通过 :25 进入其网络,因此当我本地远程登录时,我收到拒绝连接错误。大学的中继邮件服务器应该将电子邮件转发到[电子邮件保护]到我的邮件服务器(在:25),但连接失败

----- Transcript of session follows -----
<[email protected]>... Deferred: Connection refused by site.uni.tld.
Warning: message still undelivered after 4 hours
Will keep trying until message is 2 weeks old

Final-Recipient: RFC822; [email protected]
Action: delayed
Status: 4.4.1
Remote-MTA: DNS; site.uni.tld

知道为什么吗?DNS 记录很好,并且已转移到 uni 中继服务器。

答案1

iptables PREROUTING 规则不会显示在标准 netstat 列表中,因为在 NAT 模式下,它在内核级别运行,因此不会注册为正在监听的进程。诊断此问题的最佳方法是监控该机器上端口 25 上的所有流量,以查看它如何根据您制定的规则运行;

tcpdump -nn -i eth0 port 25

(替换eth0为相关接口名称)。这将向您显示所有进入本地端口 25 或出站到远程主机端口 25 的流量(因此您可以从两个方向查看)。如果流量没有顺利发送,则您的 iptables 规则已损坏,需要仔细检查。如果是,则问题出在远程主机上。

编辑:忘记添加您需要在 POSTROUTING 中设置 MASQUERADE 链:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

这将允许您的内部设备与外界进行通信并回复其客户端。

相关内容