当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > Qmail下防止滥用mail relay完全解决方案

安全基础
IE浏览器防黑十大秘籍,黑客也没招
网络工程师讲解系统安全漏洞的形成和防治
清除导致XP系统反复重启的新网银木马
识破QQ欺骗网络地址的几种方法汇总
安全基础知识 细说暴库的原理与方法
排除无线突然中断故障实例
强搜天线 搜出WiFi世界的安全漏洞
网管应用技巧 内网安全十大策略说明
如何修改局域网内部打印机的IP地址
如何找出IIS中隐藏的网站
EFS加密技术的概念分析及一次解密经过
提高Windows XP系统安全性要关闭的10种服务
PHPBB 2.0.22 MOD版最新注入漏洞
修复Windows系统忘记密码的9个高招
用SockOnline软件轻松突破端口限制
安全基础知识 最强0到33600端口详解
执行文件方式加密FLASH文件的解密方法
网吧被入侵后的应对解决方法
网页“黑手”如何攻击你的Windows系统
不要让别人读了你的信 谈私密数据保护

安全基础 中的 Qmail下防止滥用mail relay完全解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 44 ::
收藏到网摘: n/a

 

软件环境:redhat6.2 Qmail1.3

硬件环境:HP Netserver E60 128M内存 单网卡

1.什么是mail relay及为何要防止被滥用?

设置好一个Qmail服务器以后,该服务器将具有一个或若干个域名(这些域名应该出现在local或viritualdomains文件内),这时Qmail-smtpd将监听25号端口,等待远程的发送邮件的请求。网络上其他的mail服务器或者请求发送邮件的MUA(Mail User Agent,如outlook express、foxmail等等)会连接Qmail服务器的25号端口,请求发送邮件,SMTP会话过程一般是从远程标识自己的身份开始,过程如下:

HELO remote.system.domainname
  250 Qmailserver.domain
  MAIL FROM:[email protected]
  250 OK
                      RCPT TO: [email protected]

邮件的接收者[email protected]中的域名并不一定是本地域名,这时候本地系统可能有两种回答。第一种情况下,本地Qmail服务器是允许relay的,它接收并同意传递一个目的地址不是本地的邮件;而第二种情况则不接收非本地邮件。

Qmail有一个名为rcpthosts(该文件名源于RCPT TO命令)的配置文件,其决定了是否接受一个邮件。只有当一个RCPT TO命令中的接收者地址的域名存在于rcpthosts文件中时,才接受该邮件,否则就拒绝该邮件。若该文件不存在,则所有的邮件将被接受。当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发(relay),则该邮件服务器就被称为开放转发(open relay)的。当Qmail服务器没有rcpthosts时,其是开放转发的。

如果系统管理员将自己的邮件服务器设置为open relay,将会导致一些垃圾邮件发送者将你的邮件服务器作为转发自圾邮件的中继站,这将使垃圾邮件的接收者将矛头对准你,可能会导致报复性的邮件炸弹;垃圾邮件还能消耗你大量的资源,占用你的带宽。更为糟糕的事情可能是你的名字可能会上了黑名单,成为其他邮件接收者共同抵制的目标,你的邮件将被这些接收者所拒绝。

2.防止mail relay被滥用的方法一

这种方法仅仅适用于用户IP地址固定的情况,例如某单位拥有自己的一个C类地址,并且拥有自己的局域网,该邮件服务器仅仅是提供给局域网用户收发电子邮件。

设置自己服务器为非open relay的最简单的办法就是将你的邮件服务器的所有域名(若DNS的MX记录指向该机器,也应该包括该域名。例如你的机器有三个域名mail.a.com.cn、mail1.a.com.cn,而且a.com.cn的MX指向mail.a.com.cn,则Qmail的rcphosts的应该包括mail.a.com.cn、mail1.a.com.cn和a.com.cn)。这将只允许客户连接到服务器以后才能发送电子邮件,而不允许用户通过MUA来通过服务器转发邮件,而要支持客户使用MUA来发送邮件,必须允许客户使用服务器转发邮件。Qmail-smtpd支持一种有选择性的忽略rcpthosts文件的方法:若Qmail-smtpd的环境变量RELAYCLIENT被设置,则rcpthost文件将被忽略,relay将被允许。但是如何识别一个邮件发送者是否是自己的客户呢?就是判断发送邮件者的源IP地址,若该IP地址属于本地网络,则认为该发送者为自己的客户。

这里就要使用ucspi-tcp软件包的tcpserver程序,该程序的功能类似于inetd-监听进入的连接请求,为要启动的服务设置各种环境变量,然后启动指定的服务。tcpserver的配置文件是/etc/tcp.smtp,该文件定义了是否对某个网络设置RELAYCLIENT环境变量。例如,本地网络是地址为192.168.10.0/24的C类地址,则tcp.smtp的内容应该设置如下:

127.0.0.1:allow,RELAYCLIENT=""
  192.168.10.:allow,RELAYCLIENT=""
                      :allow

这几个规则的含义是指若连接来自127.0.0.1和192.168.10则允许,并且为其设置环境变量RELAYCLIENT,否则允许其他连接,但是不设置RELAYCLIENT环境变量。这样当从其他地方到本地的25号连接将会被允许,但是由于没有被设置环境变量,所以其连接将会被Qmail-smptd所拒绝。

但是tcopserver并不直接使用/etc/tcp.smtp文件,而是需要先将该文件转化为cbd文件:
[ideal@aidmail /etc]$ # tcprules tcp.smtp.cdb tcp.smtp.temp < tcp.smtp

然后在/service/Qmail-smtpd目录下的run文件中应该具有如下的内容:
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb

可以看到,tcpserver利用了/etc/smtp.cbd文件。若本地有多个网络,则需要这些网络都出现在/etc/tcp.smtp文件中。这样就实现了允许本地客户relay邮件,而防止relay被滥用。

3.防止mail relay被滥用的方法二

方法一对于局域网应用场合来说是足够了,但是如果对于象263或163这样的电子邮件系统来说,这种解决方法就不大适合,因为这些邮件系统的用户遍布全世界