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

我们使用最近被垃圾邮件发送者滥用的私人VPN服务,我们希望能够限制每分钟/每小时的SMTP连接数量,使垃圾邮件发送者无效,同时仍然可以正常使用。 我做了功课,提出了以下build议,但我们仍然收到垃圾邮件报告。 任何更好的想法,或者这种方法有什么缺陷?

# 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 

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

但是,从根本上来说,问题是,一旦我连接到SMTP服务器,我可以在断开连接之前发送尽可能多的电子邮件,除非服务器迫使我自己离开。

根据您试图阻止的内容,您可能会考虑join越来越多的ISP来阻止端口25,并强制其客户端使用端口587 。 这样做的好处是人们只能连接到邮件服务器,并从邮件服务器发送邮件(或者configuration错误的开放中继),使得发送的垃圾邮件成为邮件服务器的问题。 这样做的缺点是,他们只能连接到邮件服务器,并从邮件服务器发送邮件,这些邮件服务器已经被设置为接受端口587上的连接。这意味着他们不能在邮件服务器的“内部”你的networking,除非它被configuration成把他们的所有邮件发送到你的networking外的邮件服务器(又名智能主机),然后把它发送到目标服务器。