A-A+

postfix反垃圾邮件

2013年02月28日 综合技术 暂无评论 阅读 7,020 次

“不请自来的大宗邮件”(Unsolicited Bulk E-mail,UBE),或“不请自来的广告邮件”(Unsolicited Commercial E-mail,UCE),就是一般俗称的“垃圾邮件”(spam),寄件人没有事先征得收件人的同意,就擅自寄送大量(烦人的)邮件给一大群陌生的收件 人,这样的行为称为“滥发垃圾邮件”,而专门干这种事的人,叫做“垃圾邮件发送者”(spammer)。垃圾邮件之所以存在,是因为寄送成本便宜。邮递量 从几百人增加到几千人并不会增加太多成本,所以,来邮件发送者的目标就是尽量收集多的邮件地址。

垃圾邮件的本质

大部分的垃圾邮件都是商业广告,但是这些广告绝大部分都是唬人的骗局。垃圾邮件发送者才不在乎邮件内容是否能引起收件人的兴趣,而且他们的信息通常就是谎 言,若有其事的宣称收件人曾经跟他们公司有过怎样的关系,或是从天而降的伙伴那时得知你需要什么信息,所以特地写信给你云云。。。。。简直是鬼话连篇。有 些信息被刻意便造成煞有介事的样子,让你误以为有两个正在进行某种交易,谈论到他们的产品或服务有多么好,而你是因为他们不小心寄错邮件所以才会收到邮 件。。。。。。总之,他们想尽办法意图勾起你贪小便宜的心,而诱使你上当。
垃圾邮件经常提供“我不要再收到这样的邮件”的提示,比方说,要求你回信到某个邮箱,或是到某个网页填写你的邮件地址,或是点击一个含有特殊查询字符串的网址等。
然而,这样的选退机制本身通常也是骗局,垃圾邮件发送者利用这种方法来确定你的邮件地址确实有效的,而且你是属于那种比较容易受骗上当的人。换言之,如果你真的傻傻的遵照指示执行,换来的只是被更多垃圾邮件发送者知道你的邮件地址,而你也将会收到更多的垃圾邮件。
垃圾邮件发送者通常是试图隐藏他们的行踪的线索,避免被人逆向追查出来。假的回信地址与捏造的邮件标题,是最常使用的伎俩。他们在Internet上到处 搜寻没有妥善特定的系统,好让他们能够匿名寄出大量垃圾邮件。更高明的技术是入侵防备不当的系统,植入他们刻意设计的秘密relay server。此外,垃圾邮件的内容通常经过特殊编码或是安插随机字母,试图通过过滤程序的分析。
垃圾邮件发送者使用的某些伎俩,其副作用甚至必滥发垃圾邮件的行为本身更糟糕。就“漫无目标法”而言,他们不管邮件地址实际存在与否,而盲目的将垃圾邮件 送到他们认为可能存在的邮件地址。另一种“字典攻击法”则是预先收集所谓的“人名”,并从DNS查出各网域的MX服务器,集中寄出垃圾邮件到成功可能性最 高的邮件地址。两种伎俩都会无端造成受害系统的额外负担。

垃圾邮件的问题

虽然小规模的垃圾邮件似乎不是什么大问题,但是在Internet上,这却是相当严重的问题,甚至被认为是电子商务的杀手。一个为几百人或几千人提供邮件 服务的系统,如果每人每天都收到几百份垃圾邮件,那这个系统就快要瘫痪了。垃圾邮件的发送成本很低,但是垃圾邮件受害人却要付出真实的代价,这显然是不公 平的,因为垃圾邮件无端的占据了收件人的邮箱配额,浪费收件人的磁盘空间与网络带宽。
垃圾邮件带来的另一项损害是浪费技术支持人员的时间。虽然技术人员或管理员刻意帮助用户清理被塞爆的邮箱,但是,垃圾邮件的量有时候大到系统甚至无法胜任 其原来的任务。垃圾邮件的这种副作用,无异于刻意的“拒绝服务攻击”。就算没严重到这种地步,夹杂在正常邮件中的垃圾邮件还是会干扰用户的阅读,如果垃圾 邮件太多,甚至容易使人忽略重要邮件或误删正常邮件。
关于垃圾邮件的一项重要课题,在于如何处理寄给不明用户的邮件。有些邮件系统在发现收件地址无效时,当场就予以拒收(reject),邮件没机会进入队 列;有些系统则必须先收下邮件,然后才当成“无法投递的邮件”而退信,而这些退信很容易就塞满队列,进而干扰合法邮件的递送。由于垃圾邮件的回复地址通常 是无效的,所以退信不能立刻寄出去,而会在队列里待上好一阵子,在服务器尝试了多次无谓的递送之后,才会因为过期而被移除队列。
垃圾邮件发送者还有一种令人发指的恶行,他们会冒充无辜第三者的名义来滥发垃圾邮件,使得该受害者收到大量的退信通知。大量滥发垃圾邮件时,发信系统势必 时常遭到退信。当垃圾邮件发送者使用别人的open relay滥发垃圾邮件时,如果放任让退信或拒收通知函寄送到管理员邮箱,势必会引起管理员的警觉,一旦管理员关闭掉open relay或修补系统漏洞之后,他们将不能再继续使用该系统滥发垃圾邮件。因此,他们冒用无辜第三者的邮件地址为发信地址,使退信通知送到该无辜地址,借 此延后管理员发觉系统被滥用的时间。而那位被冒用名义的无辜受害人将收到上千甚至上百万封退信通知。这种情况我们称之为“背黑锅”,因为受害人并未参与滥 发垃圾邮件的恶行。在大多数情况下,摆脱黑锅的唯一办法是放弃那个地址,改用另一个新地址。

开放转发(open relay)

如果你的系统不得不服务来自Internet的客户端,你有责任避免系统成为开放转发,以免垃圾邮件发送者使用你的系统来转发垃圾邮件。open relay是一种特殊的邮件系统,这类系统不限制客户端的位置,也不查证邮件是否寄给直辖网域,就原意收下并代为转寄到最终目的地。在垃圾邮件还不泛滥的 年代,邮件系统管理员多半愿意提供转发服务,好让他们的用户不管旅行到世界哪一个角落,都能通过他们的服务器寄信。因此,开放转发服务是当时的smtp服 务器软件(sendmail 8之前得安版本)的默认配置。然而,随Internet的普及,立意很好的open relay现在反而成为垃圾邮件跳板的代名词。因为对于邮件的终点站而言,这类邮件看起来就像是直接从open relay发出的一样,垃圾邮件发送者就是利用此一特性来隐藏真实的发信地点。现在,几乎所有新一代的smtp软件都默认配置都会限定转发功能的服务对 象,而postfix当然也不例外。
倘若你的系统被当成open relay使用,最可能出现的症状是寄信效率明显变低,因为它正忙着寄送大量的垃圾邮件,无暇递送合法用户的正常邮件。如果你愿意让自己的系统成为垃圾邮 件的帮凶,你还得小心有心人利用你的open relay来攻陷其他系统。而且在你的系统转发了大量的垃圾邮件之后,你的网络将有很高的机率被列入黑名单,到那时候,将有许多站点拒收来自于你的网络的 全部邮件--包括垃圾邮件与合法邮件。

辨别垃圾邮件

只要你的系统不被当成open relay使用,至少刻意放心它不会被用来攻击其他系统,而你下一步,应该是保护自己以及你的用户,想办法尽量减少收到垃圾邮件。理论上,邮件服务器应该 能够拒收任何看起来像垃圾邮件的邮件。然而,虽然人类有能力一眼就认出垃圾邮件,但是要求计算机精确认出垃圾邮件而不发生误判,根本是不可能的。实际上, 一旦你开始拒收垃圾邮件,必定有可能将合法邮件按误当在门外。
拒收被误当成垃圾邮件的合法邮件,这种事件我们称之为误判。你的垃圾邮件抵制措施要尽量达成两个相互违背的目标;尽可能挡掉可疑的垃圾邮件和尽可能降低误 判机率。你采取的管制措施越严格,发生误判的风险就越高。要采取严格到何种程度的管理措施,取决于发生误判所造成的严重性有多高。对于完全不容许误判的环 境(比方说,专用来接收客户订单的邮件系统),只能采取最宽松的管制,也就是接收所有的垃圾邮件。相对的,如果不在乎误判或是能够事先协调好用户,则可疑 采取最严格的管制;只有事先特许的个人才能使用邮件系统,也就是所谓的“白名单”。事先批准似乎过于严苛,但是,当垃圾邮件问题已经严重到不可收拾的地 步,白名单已经成为越来越普遍的选择。
计算机要如何判断来信是否为垃圾邮件?主要判定依据有二,首先是“邮件来源”,其次是“信息内容”。前者是在收信期间检查送信方是否为已知的垃圾邮件来 源,或是其寄信行为是否符合滥发垃圾邮件的条件。后者是在收下邮件后,检查信息内容是否包含可被判定为垃圾邮件的字眼或其他条件。先不管实行细节上的困 难,只要邮件管理员能够预先设想到各种判定技术的盲点,就能够兼顾“尽可能挡掉可疑的垃圾邮件”与“尽可能降低误判机率”这两项彼此违背的目标。

依据客户端判别垃圾邮件

这里所谓的“客户端”是指在smtp交互过程中的寄信方。如你所知,在smtp对话过程中,服务器端(收信方)可得到对方的ip地址、主机名称与邮件地 址。这些信息片断都可以用来与一组已知的黑名单比对,借此决定应该接收还是拒收邮件。被列在黑名单中的系统,有可能真的是垃圾邮件发送者拥有的主机,但也 有可能是无辜的open relay系统,目前,Internet上已经很难找到“刻意为了提供转发服务而架设的服务器主机”,大部分的open relay多半是倒霉的、无辜的或无知的管理员所架设的系统,open relay并非他们的本意。但不管是哪一种情况,如果你发现某特定对象经常给你寄垃圾邮件,你可以考虑将对方列入黑名单。不过,依据ip地址、主机名称或 邮件地址来判定垃圾邮件,最大的问题是这类信息都可被假造。虽然伪造ip地址需要非常高的技术,但是信封地址是很容易假造的。

dns-based黑名单
为了抑止Internet上垃圾邮件的日益泛滥,各种自发性的抵制技术与网络服务应运而生,其中一类颇有争议的技术称为“dns-based黑名单”或 “实时黑名单”。这类技术的原理,是将已知的open relay或垃圾邮件来源记录在一个动态数据库,并通过DNS系统开放给MTA server查询。他们的构想是抢先一步提供预判结果给合法的MTA server,减轻邮件管理员自己维护黑名单的负担。以往,垃圾邮件发送者还会使用自己的系统来滥发垃圾邮件,或是搜寻open relay来转发垃圾邮件;近年来,这群人的行为越来越猖狂,他们几乎已经不再使用自己的系统发垃圾邮件,而是寻找有机可乘的受害系统,植入可让他们滥发 垃圾邮件的代理软件,而被胁持的系统能够甚至可能被用来发动DOS攻击。有些机构的DNSBL专门提供这类非自愿的垃圾邮件转发的查询服务。
通常,RBL系统的查询服务是通过dns提供的。对于每一个被认定为垃圾邮件来源的ip地址,在rbl所有者的网域空间里都有一个对应的PTR记录, MAT在收信期间向RBL系统查询客户端的ip地址,借此决定应该接收还是拒收邮件。举例来说,假设有一家(虚构的)RBL服务机构,他们的网域名称为 nospam.example.com,位于192.168.254.31的主机已经被他们认定为垃圾邮件来源,于是,nospam公司在他们的网域空间 里创建一个dns ptr记录,31.254.168.192。nospam.example.com当192.168.254.31主机连接到你的postfix系统, postfix可查询该ip地址是否在nospam.example.com网域下有一个PRT记录,如果有,表示该ip地址已被认定为垃圾邮件来源, postfix可当场拒绝该主机的寄信要求。
在你决定使用DNSBL服务之前,必须非常谨慎小心。有许多被用来转发垃圾邮件的open relay系统,它们本身也提供服务给一般的正常用户。你虽然挡掉了来自这些系统的垃圾邮件,但也挡掉了源自同系统能够的合法邮件。此外,将是否收信的决 定权交给无责任的第三方,由别人决定谁能够谁不能够寄信给你的用户,是一种推卸责任的行为。但如果你真的深受垃圾邮件之害,在你研究出适当的抵制方法之 前,DNSBL服务确实能够帮上忙。如果你决定使用某家公司的服务,请务必仔细检视他们的服务条款与政策。再一次的,你在“尽可能挡掉可疑的垃圾邮件”与 “尽可能降低误判机率”之间取得平衡点。

依据内容判别垃圾邮件

除了以客户端判别条件之外,邮件内容通常也可作为供判别垃圾邮件的特征。垃圾邮件时常出现某些特定的广告语。依据邮件内容来辨识垃圾邮件,并非没有误判的 可能。想像一下,如果你经常收到大量关于低率房贷的垃圾邮件,你可能会想要挡掉含有类似“lomorratetgagewest”词组的邮件。当然,这样 确实可挡掉不少垃圾邮件,但是,你可能也挡掉了银行同意核发低利率贷款给你的朋友的通知信。
判别技术的困难处
不管以客户端还是邮件内容作为判别依据,垃圾邮件发送者总是有办法找到办法避过你的抵制措施。合法邮件与垃圾邮件之间,总是一有段难以理清的模糊地带。当你努力收集黑名单的同时,垃圾邮件发送者也正在寻找新的代罪羔羊(这种无辜系统的数量之多,远超过你的想像)。
你可能发现,在你收到的垃圾邮件中,有许多具有相同的回信地址。当然,你确实可使用回信地址来阻挡垃圾邮件,但是,他们多半采用“边打边跑”战术。他们先 向免费邮件网站申请一个邮箱,然后使用该地址送出千万封垃圾邮件,过了几天之后,他们便放弃原来的邮箱,另外再申请一个新邮箱。所以,被你列入黑名单的回 信地址,过不了几天就不会再出现了。
就算是专门的内容过滤系统,也必须随垃圾邮件发送者的干扰伎俩而调整。举例来说,很多滤信软件会挡掉正文含有 “viagra”字样的邮件,于是,垃圾邮件发送者便将HTML注释标记嵌在这类关键词句中--将“viagra"改成“vi<!--oxo-- >agra",借此避开过滤程序的字符串比对条件。如果你调整过滤条件,挡掉含有html注释标记的邮件(好主意!虽然有点风险),过几天,你会发 现他们又换花招了,含有vlagra或 vi@gra字样的垃圾邮件将闯入你的系统,于是,你又被迫增加新的过滤条件。因此,如果你决心向垃圾邮件发送者宣战,你最好有个心里准备,这会是一场长 期抗战。

反垃圾邮件的措施

一般来说,侦测到垃圾邮件之后,你有下列几种选择:
在smtp对话过程中,当场拒收垃圾邮件。于第一时间把垃圾邮件挡在大门之外确实是个好主意,因为垃圾邮件不会进到邮箱,而你也不必担心后续的处理工作, 发信会承担处理拒信错误的善后工作。然而,如果你的站点不能够容忍拒收合法邮件的后果,或许你应该考虑第二种选择。
暂时将可疑的垃圾邮件另外存储在专用邮箱,再研究一套事后程序来处理它们。比方说,定期检阅被集中起来的可疑垃圾邮件,确定其中没有合法邮件之后才一并删 除。虽然这样可确保不错失任何合法邮件,但是却可能耽搁合法邮件的时效性,除非你的站点有足够的人力(与财力)请人专门检阅可疑的垃圾邮件。此外,事后的 检阅工作相当无聊,而且有道德风险(万一看到不该看的邮件,怎么办?)。因此,你应该考虑将垃圾邮件存放在个别用户能看到的专用邮箱。不过,这需要用户改 用IMAP协议来收信,如果你的用户都使用pop协议收信,这可能不是个好办法。
注:  由于MUA软件多半具有HTML自动译码能力,所以,大多数收件人看到的依然是“viagra”,而感觉不到HTML注释标记造成的差异。
将可疑的垃圾邮件打上某种特殊标记,投递到用户的正常邮箱,由用户收下邮件后自行判断。比方说,用户可用他们的MUA或MDA软件设定一个过滤条件,将含 有特殊标记的可疑垃圾邮件与正常邮件分开存储。这种技术的好书,在于用户可自己决定如何处理垃圾邮件,即不会错失合法邮件,也不必担心私密邮件曝光。 postfix目前没内置可标示垃圾邮件的机制,但是postfix可疑搭配外部的