邮件系统的选型与架构专题(7)

12/3/2006来源:Qmail人气:6535

3.创建邮件防火墙

邮件防火墙是一台专用的邮件服务器,专门转发发往内部邮件服务器和从其发出的邮件。经过配置,邮件防火墙将接收任何发往域中的邮件,将它们直接发给内部网络中真正的域邮件服务器。同时,邮件防火墙也转发从内部邮件服务器发往互联网的邮件。

邮件防火墙的配置是一个高级应用,Qmail邮件防火墙是使用一张虚拟表来映射地址。通过三个步骤对它进行配置:

(1)在virtualdomains控制文件中增加域名映射,接收指定域用户的邮件映射到一个真实的用户账号。如virtualdomains文件内容为virtual.com:mymail,则Qmail将会把所有发往*@virtual.com的邮件转换为mymail-*@virtual.com,然后在本地发送该邮件。

(2)将域名加入rcpthosts控制文件中,使用Qmail接收发往该域的邮件,如virtual.com。(3)为每个域用户创建一个独立的本地用户,使用各自独立的.qmail文件。

具体的邮件收发流程为,virtualdomain控制文件将virtual.com域指向一个普通的本地用户账号mymail,Qmail防火墙服务器收到的邮件将被发给本地账号mymail,比如[email protected]对应mymail-test1,[email protected]对应mymail-test2。然后,在mymail本地账号目录下建立对应的.qmail文件,例如.qmail-test1的内容为[email protected],.qmail-test2的内容为[email protected],这样就可以收取邮件了。

至于从内部邮件服务器上发送邮件,必须配置Qmail把所有外发邮件发给邮件防火墙服务器(firewall.virtual.com)。不同的是,Qmail需要使用外部程序来完成配置。serialmail软件包含了一些Qmail可以使用的工具程序,其中之一是maildirsmtp程序。下载、编译并安装此软件,配置内部邮件服务器的virtualdomains控制文件,把所有外发的邮件都交给一个普通用户账号firewall。不指明域名时,Qmail会把所有不是发给本地用户的邮件都发给这个firewall本地用户。命令如下:

# useradd firewall# maildirmake /home/firewall/Maildir# echo ./Maildir/ > /home/firewall/.qmail-default



然后,将maildirsmtp命令写入crontab任务中,定时转发邮件给邮件防火墙:

*/5 * * * * maildirsmtp /home/firewall/Maildir firewall- firewall.virtual.com trueserver.com

4.防止开放式转发

开放式转发的邮件服务器能够自动将远程客户发来的邮件转向正确的目的邮件服务器(而不是它本身)。但是,现在有很多公司和个人利用这一特点发送大量的UCE(Unsolicited Commerial E-mail,非请求商业电子邮件)邮件,给客户及邮件服务提供商带来了麻烦。Qmail默认不开放转发功能,在rcpthosts文件中并没有设置任何允许转发的域名,也没有设置RELAYCLIENT参数,从而保证邮件系统默认不转发邮件,防止垃圾邮件的产生。

对于想要转发邮件的客户,Qmail提供了三种机制保证能够安全地转发邮件而不至于成为垃圾邮件滥发站。

(1)通过配置Qmail的rcpthosts文件,加入外部邮件服务器的域,即可发送邮件。如在文件中加入“hotmail.com”,就可以自动把所有发送给@hotmail.com的邮件发到外部邮件服务器。

(2)通过用户身份验证机制向外转发邮件。如图7在Outlook中进行设置,通过此设置,发送到外部的邮件就可以顺利地被发送到外部邮件服务器。



图7 设置用户身份验证通过机制转发邮件



(3)用tcp.smtp文件来控制。如允许192.168.0.0/24网段的所有机器可以通过身份验证实现ip relay,即不需要SMTP AUTH,可以利用tcPRules命令在./etc/tcp.smtp中添加一行:

192.168.0.:allow,RELAYCLIENT="",LOCALMFCHECK="server.com"



或者是针对某个特殊的用户进行设置,如限制只有IP地址为192.168.0.222的机器可以转发邮件:

192.168.0.222:allow,RELAYCLIENT="",LOCALMFCHECK="server.com"