delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

16 Dec 2007

Mailman对退信的反DoS机制

虽然不做邮件很久了,不过自己有在维护一些社区的邮件列表系统,所以对这方面也比较关注。

以前一直没有仔细研究过Mailman关于退信的处理,最近遇到了一些问题,也看了一些 RFC,这里面提到了一个问题,即,与所有其他的电子邮件类似,退信也是可以伪造的。而对于邮件列表而言,出于建设和谐社会的考虑,往往希望对于经常退信的订户自动采取暂停订阅甚至退订的动作,以减少双方不必要的邮件投递流量。

如果有人伪造对方 MTA/MDA 的身份发送退信的话,这就可能产生一个安全隐患,即,其他人可以"设法"将一个人从邮件列表中拿掉。稍微看了一下代码,Mailman收到退信时,并不是立即采取动作,而是采用"分数",收到退信时,便将这分数增加。为了避免 DoS,这个分数每天只能增加一次,并且在采取动作时会发一封Probe Mail,这个方法基本上回避掉了这样的安全问题,是一个值得借鉴的设计。