Postfix利用挡信机制来消除垃圾邮件的隐患

运维 系统运维
垃圾邮件(spam)现在还没有一个非常严格的定义。一般来说,凡是未经用户许可就强行发送到用户的邮箱中的任何电子邮件。那怎么样才能处理好垃圾邮件呢,本文就以处理垃圾邮件为话题,教大家如何利用Postfix来消除垃圾邮件的隐患。

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

  垃圾邮件的本质

  大部分的垃圾邮件都是商业广告,但是这些广告绝大部分都是唬人的骗局。垃圾邮件发送者才不在乎邮件内容是否能引起收件人的兴趣,而且他们的信息通常就是谎 言,若有其事的宣称收件人曾经跟他们公司有过怎样的关系,或是从天而降的伙伴那时得知你需要什么信息,所以特地写信给你云云。。。。。简直是鬼话连篇。有 些信息被刻意便造成煞有介事的样子,让你误以为有两个正在进行某种交易,谈论到他们的产品或服务有多么好,而你是因为他们不小心寄错邮件所以才会收到邮 件。。。。。。总之,他们想尽办法意图勾起你贪小便宜的心,而诱使你上当。

  垃圾邮件经常提供“我不要再收到这样的邮件”的提示,比方说,要求你回信到某个邮箱,或是到某个网页填写你的邮件地址,或是点击一个含有特殊查询字符串的网址等。

  然而,这样的选退机制本身通常也是骗局,垃圾邮件发送者利用这种方法来确定你的邮件地址确实有效的,而且你是属于那种比较容易受骗上当的人。换言之,如果你真的傻傻的遵照指示执行,换来的只是被更多垃圾邮件发送者知道你的邮件地址,而你也将会收到更多的垃圾邮件。

  垃圾邮件发送者通常是试图隐藏他们的行踪的线索,避免被人逆向追查出来。假的回信地址与捏造的邮件标题,是最常使用的伎俩。他们在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使用,至少刻意放心它不会被用来攻击其他系统,而你下一步,应该是保护自己以及你的用户,想办法尽量减少收到垃圾邮件。理论上,邮件服务器应该 能够拒收任何看起来像垃圾邮件的邮件。然而,虽然人类有能力一眼就认出垃圾邮件,但是要求计算机精确认出垃圾邮件而不发生误判,根本是不可能的。实际上, 一旦你开始拒收垃圾邮件,必定有可能将合法邮件按误当在门外。

  拒收被误当成垃圾邮件的合法邮件,这种事件我们称之为误判。你的垃圾邮件抵制措施要尽量达成两个相互违背的目标;尽可能挡掉可疑的垃圾邮件和尽可能降低误 判机率。你采取的管制措施越严格,发生误判的风险就越高。要采取严格到何种程度的管理措施,取决于发生误判所造成的严重性有多高。对于完全不容许误判的环 境(比方说,专用来接收客户订单的邮件系统),只能采取最宽松的管制,也就是接收所有的垃圾邮件。相对的,如果不在乎误判或是能够事先协调好用户,则可疑 采取最严格的管制;只有事先特许的个人才能使用邮件系统,也就是所谓的“白名单”。事先批准似乎过于严苛,但是,当垃圾邮件问题已经严重到不可收拾的地 步,白名单已经成为越来越普遍的选择。

  计算机要如何判断来信是否为垃圾邮件?主要判定依据有二,首先是“邮件来源”,其次是“信息内容”。前者是在收信期间检查送信方是否为已知的垃圾邮件来 源,或是其寄信行为是否符合滥发垃圾邮件的条件。后者是在收下邮件后,检查信息内容是否包含可被判定为垃圾邮件的字眼或其他条件。先不管实行细节上的困 难,只要邮件管理员能够预先设想到各种判定技术的盲点,就能够兼顾“尽可能挡掉可疑的垃圾邮件”与“尽可能降低误判机率”这两项彼此违背的目标。

#p#

  依据客户端判别垃圾邮件

  这里所谓的“客户端”是指在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[:alpha:]/ reject suspicious embedded html comments

  postfix的挡信机制

  本章的其余内容讨论阻挡垃圾邮件的技术层面的问题,解释postfix提供的UBE检查机制。按照UBE的判别依据,postfix提供的检查机制可分四大类:

  客户端判别规则

  postfix提供四种检查客户端身份的参数,每一种参数都可设定一系列决定如何响应客户端的限制条件。如果条件成立,可能的响应动作包括ok(收下邮 件)与reject(当场拒收)。例如,你可疑设定一条检查规则。挡掉来自特定ip地址的邮件。相对的,如果条件不成立,则由后续条件继续处理(这种结果 通常以DUNNO表示)。

  语法检查参数

  postfix内置一系列专用检查语法的参数,可用来核验客户端的smtp对话内容是否符合标准规定。由于垃圾邮件发送者通常不遵守标准规定,则对于不符合规定的客户端或邮件,你可以要求postfix予以拒收。有些语法检查参数也可作为客户端判别规则。

  内容检查

  你可以将一组描述垃圾邮件特征的正则表达式写在查询表中,要求postfix依据样式表来检查邮件的标题与正文内容。

  自定义过滤规则

  你可将一系列内置的限制条件组织成新的过滤规则。

  设定postfix的垃圾邮件标识参数时,你还必须指定如何处理被辨认出来的垃圾邮件。一般而言,postfix可以当场拒收,或是收下邮件但是暂存在另一个队列,或是交给外部过滤程序去处理。

通过上文的详细介绍,我们都知道到底是如何辨别垃圾邮件和如何利用postfix的挡信机制来消除垃圾邮件的隐患。

【编辑推荐】

  1. Postfix邮件转发详解
  2. Postfix虚拟网络域名
  3. Postfix里的POP与Imap介绍
  4. Postfix的投递过程详解
  5. 教你如何设置Postfixadmin的自动回复
  6. 如何安装PostfixAdmin
  7. 垃圾邮件总量反弹 用户应谨防春节类垃圾邮件
  8. 垃圾邮件“闹”元宵 卡巴斯基保安全
  9. IPv6或诱发垃圾邮件和病毒爆发
责任编辑:赵鹏 来源: 网络转载
相关推荐

2009-04-28 19:44:25

LinuxProcmail垃圾邮件

2011-01-24 14:36:26

2009-10-27 09:32:45

垃圾邮件管理策略邮件管理

2011-07-22 16:28:31

Active DireORF

2011-11-18 14:06:37

垃圾邮件

2011-01-19 15:21:32

Qmail垃圾邮件

2015-05-18 09:31:15

2011-09-23 15:28:44

2009-07-02 18:55:11

2014-09-29 16:52:00

2010-04-28 17:06:19

2010-03-18 17:04:52

垃圾邮件邮件安全病毒

2010-05-25 15:29:04

垃圾邮件 邮件安全网络管理

2012-12-03 10:17:42

恶意垃圾邮件垃圾邮件恶意邮件

2010-09-30 09:27:18

企业反垃圾邮件

2011-03-22 09:56:00

僵尸网络垃圾邮件

2009-05-09 19:38:29

2009-11-12 11:30:44

2014-04-04 13:58:40

2009-10-24 11:33:25

点赞
收藏

51CTO技术栈公众号