Sendmail 和 IpTable 规则

Sendmail 和 IpTable 规则

我需要为具有 nginx、ssh 和 sendmail 的服务器设置 IpTable 规则。现在的问题是,使用我的规则,我无法再向其他主机发送电子邮件。当防火墙开启时,可以向本地主机发送电子邮件,但向其他服务器发送电子邮件则不行。

我尝试打开传入和传出端口 25 以及 DNS 查找端口,但没有任何效果。有什么想法吗?

更新:

以下是我的规则:

#! /bin/sh
# firewall iptable rules

interface="eth0"

# first, deny all
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# open loopback device completely
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# open ssh ports
iptables -A INPUT -p tcp -i $interface --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o $interface --sport 22  -m state --state ESTABLISHED,RELATED -j ACCEPT

# open browser ports
iptables -A INPUT -p tcp -i $interface --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o $interface --sport 80  -m state --state ESTABLISHED,RELATED -j ACCEPT

答案1

如果您想允许您的 Linux 机器通过端口 25 发送电子邮件,您应该通过添加如下规则来允许它:

$ iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

对于 DNS 流量也类似:

$ iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

如果没有这样的明确规则,则流量将默认被拒绝,因为默认策略设置为DROP

更新:

不要忘记使用以下方法允许相关/已建立的连接:

$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

答案2

将以下规则添加到您的 IPTables:

iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

相关内容