快捷搜索:

Qmail邮件系统下防止滥用mail relay

软件情况: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:user@somewherer.net

250 OK

RCPT TO: user1@elsewhere.net

邮件的接管者user1@elsewhere.net中的域名并不必然是本地域名,这时刻本地系统可能有两种回答,吸收它:

250 OK

或者回绝吸收它:

553 sorry,.that domain is not in my domain list of allowed recphosts

第一种环境下,本地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.linxuaid.com.cn、mail1.linuxaid.com.cn,而且linuxaid.com.cn的MX指向mail.linuxaid.com.cn,则qmail的rcphosts的应该包括mail.linuxaid.com.cn、mail1.linuxaid.com.cn和linuxaid.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 3.防止mail relay被滥用的措施二

措施一对付局域网利用处合来说是足够了,然则假如对付象263或163这样的电子邮件系统来说,这种办理措施就不大年夜得当,由于这些邮件系统的用户遍布全天下各个地方,是以用户可能从任何一个IP连接过来发送信件,是以就必要探求其他的措施来限定邮件系统的relay功能被滥用。

若在qmail系统中应用vpopmail,则可以使用vpopmail专门针对周游用户的设置设置设备摆设摆设选项来实现防止邮件系统的relay功能被滥用。

若盼望支持周游用户经由过程邮件办事器的转发邮件(mail relay),则必要在安装vpopmail时应用如下设置设置设备摆设摆设选项:

[root@aidmail vpopmail-4.9.4]# ./configure --enable-roaming-users=y

其支持周游用户的道理是:当某个周游用户经由过程pop3守信今后,则在某段光阴内容许该地址经由过程邮件办事器的转发信件。vpopmail安装完成今后,经由过程cron来准时运行法度榜样如下:

40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

也便是每40分钟清除容许relay的IP地址的列表,则当某个用户首先经由过程pop3守信件(由于经由过程pop3收守信件是必要认证的,则可以包管这是合法的用户)停止今后,则用户在后来的40分钟以内可以经由过程该邮件系统转发邮件,之后就不容许经由过程该系统转发邮件。

4.防止mail relay被滥用的措施三

对付有周游用户的邮件系统来说,防止其relay功能被滥用的别的一个措施便是在发送邮件时要求用户认证,就象用户收信是必要认证一样。这里假设系统已经安装成功qmail-1.03和vpopmail,并且原有系统运行正常。

4.1.下载法度榜样:

qmail-smtp补丁:http://members.elysium.pl/brush/qmail-smtpd-auth/

密码查验补丁:http://members.elysium.pl/brush/cmd5checkpw/

从这两个地址下载获得qmail-smtpd-auth-0.26.tar.gz及cmd5checkpw-0.22.tar.gz。

4.2.编译安装qmail-smtpd

将qmail-smtpd-auth-0.26.tar.gz解压缩:

[root@www src]# tar xvfz qmail-smtpd-auth-0.26.tar.gz

[root@www src]# cd qmail-smtpd-auth-0.26

[root@www qmail-smtpd-auth-0.26]# ls

CHANGES Makefile README TODO inetd.conf qmail-smtpd.c

qmail-smtpd.patch

将安装成功的qmail目录下的qmail-smtp.c拷贝到qmail-smtpd-auth-0.26目录下:

[root@www qmail-smtpd-auth-0.26]# cp ../qmail-1.03/qmail-smtpd.c ./

然后对该文件进行补丁处置惩罚:

[root@www qmail-smtpd-auth-0.26]# patch -p1 < qmail-smtpd.patch

将qmail-smtpd.c 拷贝到qmail 的源文件目录里:

[root@www qmail-smtpd-auth-0.26]# cp qmail-smtpd.c ../qmail-1.03

最好先将原文件备份。零丁编译 qmail-smtpd :

[root@aidmail qmail-smtpd]# make qmail-smtpd

./load qmail-smtpd rcpthosts.o commands.o timeoutread.o

timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o

received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a

datetime.a getln.a open.a sig.a case.a env.a stralloc.a

alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat

socket.lib`

将新天生的qmail-smtpd 拷贝到/var/qmail/bin 目录下。在之前应该对原本的履行文件进行备份。

4.3.编译安装kpw-0.22.tar.gz

解压缩,编译安装:

[root@www src]# tar xvfz cmd5checkpw-0.22.tar.gz

[root@www src]# cd cmd5checkpw-0.22

[root@www cmd5checkpw-0.22]# make ;make instll

4.4.设置relay规则。

relay的意思是:办事器吸收客户真个smtp哀求,将客户端发往第三方的邮件进行转发。 qmail下节制relay很简单,只要客户端接入的smtp进程的情况变量里包孕(RELAYCLIENT="")就容许relay ,否则拒收。实现措施是在/etc/tcp.smtp 里对必要relay的IP逐条设置(RELAYCLIENT=""),然后用tcprules 天生规则表。由于本文要实现SMTP认证后的relay ,不必要对任何IP进行预先设定,以是默认规则设置成"只对本办事器relay"。/etc/tcp.smtp内容应该为:

127.0.0.1:allow,RELAYCLIENT=""

:allow

从新天生新的tcp.smtp.cdb文件:

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

4.5.设置/home/vpopmail/bin/vchkpw 的SetUID和SetGID。

这点很紧张,否则认证无法经由过程。这是由于s

您可能还会对下面的文章感兴趣: