出处:sosogh.cublog.cn 作者:sosogh 时间:2007-3-14 19:54:43
邮件中继服务 七天免费试用
给现有的邮件服务器加一台通明透明邮件网关
邮件服务器扮演的角色:
smtp主机角色:smtp auth用户使用smtp主机来发送邮件
pop主机角色: pop用户连接pop主机来收取邮件到他们电脑上
mx主机角色: 外部邮件服务器发送邮件给本地用户
背景:
现有的邮件服务器反垃圾和反病毒能力不强,所以想在现有的服务器前面加一台透明邮件网关来进行反垃圾和
反病毒,邮件网关使用linux(debian)+postfix+amavis+spamasscian来做
为什么要是透明的?
(1)现有的邮件服务器不好使用amavis+spamasscian来扩展他的anti-spam和anti-virus能力
(2)因为现有的邮件服务器有较多的域名,而且每个域名的smtp mx pop主机都是指向同一个域名
mail.domain.com(也就是同一个ip),也不好新建一台邮件服务器把mx记录指向新的服务器
(3)也不可能新建一台服务器,把旧的服务器上用户资料,用户邮件copy到新的服务器上
使用透明邮件网关后大概的图如下:
eth0 eth1 eth0
client--------------->透明邮件网关--------------->现有邮件服务器
br0 192.168.1.3 192.168.1.2
大概的实现方式:
client对现有邮件服务器(192.168.1.2)的110请求,直接bridge到192.168.1.3,让192.168.1.3:110处理
client对现有邮件服务器(192.168.1.2)的25请求(包括对smtp mx主机的连接)通过iptables DNAT到透明邮
件网关192.168.1.3的25端口由192.168.1.3:25来处理
因为透明邮件网关要处理client对现有邮件服务器(192.168.1.2)的25请求,所以透明邮件网关的postfix中
要获得smtp auth用户和vitural domain user的资料,而这些资料到都在现有邮件服务器(192.168.1.2)上,
而这些资料都是存在mysql中,所以可以设置postfix去mysql中取得这些数据
设置实现:
前提:
透明邮件网关使用的linux kernel要支持bridge filter功能
本来我使用debian31r2-i386 的2.4kernel,这个默认的kernel可以bridge,但是不能bridge filter
后来就使用了debian31r2-i386 的另外一个kernel 2.6 就可以了
开始设置:
(1)设置透明(bridge)
下载安装bridge 工具
apt-get install bridge-utils
在透明邮件网关设置bridge:(透明邮件网关的2个eth都不用设置ip)
命令如下:
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1
# ifconfig br0 up
# ifconfig br0 192.168.1.3 netmask 255.255.255.0
# route add default gw 192.168.1.1
前6句已经设置好bridge了,但是我们要远程登陆透明邮件网关,所以要给它设置个ip(也就是后2句命令的作
用)
(2)设置DNAT
命令如下:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.2 --dport 25 -j DNAT --to-destination
192.168.1.3