使用 iptables 限制 SMTP 连接来防止垃圾邮件

使用 iptables 限制 SMTP 连接来防止垃圾邮件

我们运营着一项私人 VPN 服务,该服务最近被垃圾邮件发送者滥用,我们希望能够限制每分钟/每小时的 SMTP 连接数,使其对垃圾邮件发送者无效,同时仍可正常使用。我做了功课并想出了以下方法,但我们仍然收到垃圾邮件报告。有没有更好的想法,或者这种方法在某些方面存在缺陷?

# if it has more than 60 connections in a 120 seconds interval: DROP
iptables -A Limit_SMTP -m recent -p tcp --update --name ovpn_smtp --seconds 120 \
  --hitcount 30 -j REJECT --reject-with tcp-reset

# otherwise: allow
iptables -A Limit_SMTP -m recent --set --name ovpn_smtp -j ACCEPT

答案1

代码片段中的注释与代码不符:--hitcount 30限制了 30 次“命中”……除非您--state NEW在某处使用,否则这将是 30 个数据包,而不是 30 个连接。如果不知道如何进入“Limit_SMTP”链,就不可能说它甚至被使用了。

但从根本上来说,问题是,一旦我连接到 SMTP 服务器,我就可以发送任意数量的电子邮件,直到断开连接为止,除非服务器强制我关闭。

根据你试图阻止的具体内容,你可以考虑加入越来越多的 ISP 行列,阻止端口 25,并强迫其客户使用端口 587。这样做的好处是,人们只能连接到他们有帐户的邮件服务器(或严重配置错误的开放中继)并从那里发送邮件,这使得他们发送的任何垃圾邮件都成为该邮件服务器的问题。这样做的缺点是,他们只能连接到他们有帐户的邮件服务器并从那里发送邮件,并且已设置为接受端口 587 上的连接。这意味着他们无法在您的网络“内部”运行自己的邮件服务器,除非将其配置为接收所有邮件并将其发送到您网络“外部”的邮件服务器(又名智能主机),然后将其发送到目标服务器。

相关内容