Iptables

Sendmail 和 IpTable 規則

  • October 27, 2016

我需要為帶有 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

如果你想允許你的 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

引用自:https://serverfault.com/questions/422830