19.7.2 简单的广告邮件抵挡机制
早期的广告邮件很多都是通过“僵尸”计算机(已经被当作跳板但管理员却没有发现或没有处理的主机)来发送的,这些“僵尸”计算机所发送的信件有个很明显的特征,即它只会尝试传送该封电子邮件一次,不论成功与否,该信件将被移出队列。不过,合法的Mail Server运作流程就如之前分析的一般,在邮件无法顺利寄出时该邮件会暂时放置到队列中一段时间,并一直尝试将信件寄出的操作,默认直到5天后若还是无法寄出才会将信件退回。
根据这个合法与非法的邮件服务器运作流程而发展出一个名为曙光(postgrey)的软件,可以参考下面的几个说明来了解这个软件:
· http://isg.ee.ethz.ch/tools/postgrey/。
· http://www.Postfix.org/SMTPD_POLICY_README.html。
postgrey主要的功能是在记录发信来源,若发信来源同一封信第一次寄来时,postgrey默认会抵挡它,并且将来源地址记录起来,在约5分钟后,若该信件又传来一次时,则该信件会被收下来。如此则可以杜绝非法邮件服务器单次发送的问题。但对于您确定合法的主机则可以开放所谓的白名单(whitelist)来优先通过而不予抵挡。所以,它主要是按照如下方式进行操作的(参考http://projects.puremagic.com/greylisting/whitepaper.html)。
(1)确认发信来源是否在白名单中,若是则予以通过。
(2)确认收信者是否在白名单中,若是则予以通过。
(3)确定这封信是否已经被记录起来,放行的依据如下:
· 若无此信件的记录,则将发信地址记录起来,并将信件退回。
· 若有此信件的记录,但是记录的时间尚未超过指定的时间(默认5分钟),则依旧退回信件。
· 若有信件的记录,且记录时间已超过指定的时间,则予以通过。
不过为了快速实现postgrey的记录能力,所以数据库系统又是不可避免的选择。postgrey是由perl写成的,您可能也需要加入很多相关的perl模块。总之至少需要如下软件。
· BerkeleyDB:包括db4、db4-utils、db4-devel等软件。
· Perl:使用yum install perl即可。
· Perl模块:perl-Net-DNS是CentOS提供的,其他没有提供的可以到http://rpmfind.net/搜索下载。
除了可使用yum来安装的软件之外,其他的软件鸟哥下面作了链接,您可以直接下载:
· FTP://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/ perl-BerkeleyDB-0.31-1.el4. rf.i386.rpm。
· FTP://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/ perl-IO-Multiplex-1.08-3. el4.rf.noarch.rpm。
· FTP://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Net-Server-0.94-1.el4.rf. noarch.rpm。
· http://www.lfarkas.org/linux/packages/centos-4/i386/RPMS/ postgrey-1.27-0.noarch. rpm。
使用“rpm -ivh*.rpm”将下载的4个RPM安装即可。然后就可尝试启动postgrey:
[root@linux ~]# /etc/init.d/postgrey [root@linux ~]# netstat -anlp | grep grey unix 2 … /var/spool/Postfix/postgrey/socket |
由于Postfix需要连接到postgrey进行一些名单的确认,而且两者连接的方式除了网络IP之外,传统的Unix socket也是可以连接的。由于传统socket不需要额外启动网络联机的端口,鸟哥认为这样也比较符合本机的操作,所以我们使用这一版postgrey的默认unix socket来连接。接下来需要修改Postfix的main.cf,方法如下。
[root@linux ~]# vi /etc/Postfix/main.cf # 如果曾经有过这个设置值,请对它进行修改,否则请自行增加下面的字样 SMTPd_recipient_restrictions= permit_mynetworks reject_unauth_destination check_policy_service unix:/var/spool/Postfix/postgrey/socket # 重点是最后那一行,即指定使用unix socket来连接到postgrey # 后续还有一些广告邮件的抵挡机制,特别建议将这个postgrey的设置值写在最后 # 因为它可以算是最后一个检验的机制 [root@linux ~]# /etc/init.d/Postfix restart [root@linux ~]# chkconfig postgrey on |
然后可以从外台主机寄一封信给自己这台邮件服务器,记得去日志文件内查一查(/var/log/Maillog),应该会出现类似的信息:
Nov 27 15:17:09 linux Postfix/SMTPd[16132]:NOQUEUE:reject: RCPT from sun.linux.tsai[192.168.1.101]: 450 |
这表示postgrey已经开始顺利运行了,并且来源主机的相关记录也已经记载在 /var/spool/Postfix/postgrey/目录下了。如此一来Postfix将可以通过postgrey来抵挡一些莫名其妙的广告邮件了。
不过postgrey也是有缺点的,由于postgrey默认会先将信件退回去,所以您的信件就可能会发生延迟的问题,延迟的时间可能是数分钟到数小时,这要由MTA的设置而定。如果想要让某些信任的邮件主机不需要经过postgrey的阻止机制时,就需要开放白名单了。
白名单的开启也很简单,直接编写/etc/Postfix/postgrey_whitelist_Clients文件即可。假设要让鸟哥的邮件主机可以自由的将信寄到您的MTA的话,那么您可以在这个文件内加入如下代码:
[root@linux ~]# vi /etc/Postfix/postgrey_whitelist_Clients Mail.vbird.idv.tw sun.linux.tsai # 将主机名称写进去 [root@linux ~]# /etc/init.d/postgrey restart |
如果您还有更多信任的主机,将它写入此文件中即可。那它就可以略过postgrey的分析了。更高级的用法需要靠您自己去发掘了。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |