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的分析了。更高级的用法需要靠您自己去发掘了。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||