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

我的公共服务器接受stream量并使用iptables PREROUTING规则将其中继到networking中的其他计算机。 我最近添加了邮件服务器在192.168.1.10,并使其iptables规则接受端口25的stream量。

-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。 我的大学不允许stream量进入其networking,通过:25,所以当我在本地telnet我得到一个连接拒绝错误。 大学的中继邮件服务器应该将电子邮件转发给我的邮件服务器(at:25)[email protected],但是连接失败

 ----- 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 

任何想法为什么? DNSlogging没有问题,已经被转移到uni中继服务器。

iptables PREROUTING规则不会出现在一个标准的netstat列表中,就像在NAT模式下一样,它在内核级别运行,因此不会注册为正在监听的进程。 对您进行诊断的最佳方式是监视端口25上该机器上的所有stream量,看看它是如何遵守您所在的规则的。

tcpdump -nn -i eth0 port 25

(用相关接口名称replaceeth0 )。 这将显示所有stream量到达本地端口25,或者出站到远程主机上的端口25(所以你可以在两个方向看)。 如果stream量没有被快速发送,你的iptables规则就会被破坏,需要仔细观察。 如果是,那么问题在远程主机上。

编辑:忘了补充说,你需要在POSTROUTING中设置MASQUERADE链:

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

这将允许您的内部设备与外界沟通并回复客户。