iptables 阻止对端口 25 上的 SMTP 的访问

iptables 阻止对端口 25 上的 SMTP 的访问

我的服务器上运行着 iptables,它阻止除我允许的端口之外的所有端口的访问。其中一个端口需要是端口 25 上的 SMTP,为此我制定了以下规则:

-A INPUT -p tcp --dport 25 -j ACCEPT

输出iptables -L如下:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             127.0.0.0/8          reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imap2
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssmtp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imaps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:pop3s
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     icmp --  anywhere             anywhere
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

但是,当我尝试telnet <myip> 25从 Windows 控制台执行操作时,出现此错误:

Connecting To <my ip>...Could not open connection to the host, on port 25:
Connect failed

在其他开放端口(80、993 等)上执行相同操作,没有问题。所以这肯定是 iptables 的问题。

使用 iptables 允许访问端口 25 上的 SMTP 的正确方法是什么?

答案1

由于您的输入规则以通用接受规则开头,因此您的其他规则都不会生效(因为 iptables 以第一处置规则为基础工作:链中以某种方式处置数据包的第一条规则将是最后处理的规则,并且目标ACCEPT是处置性的)。您的第二条规则也值得怀疑(阻止所有本地主机流量),但只是因为通常没有任何可信的理由这样做。在 SSH 端口上专门只接受新的、相关的或已建立的数据包也是不寻常的。

尽管如此,您的规则正确地接受了 SMTP 流量,因此问题确实是您没有运行 SMTP。Dovecot 不是 SMTP 服务器;请考虑使用多个 SMTP 守护程序中的任何一个,例如 postfix。

如果有的话,对于您的 127.0.0.0/8 规则,请指定您期望接收欺骗的本地主机数据包的输入接口(如果您担心这一点)。

相关内容