邮件系统 设为首页
加入收藏
总编信箱
| 第一邮局 | 免费邮箱 | 邮箱评测 | 企业邮局 | 移动邮件 | 邮件系统 | 邮件营销 | 反垃圾邮件 | 邮件客户端 | 邮件安全 |
当前位置:第一邮局>邮件系统>Qmail>文章内容

浅谈qmail之邮件转发规则

来源:Mail1.com.cn 编辑:Mail 发布时间:2007-05-11 [收藏] [推荐] [评论(0条)]
关于邮件的转发规则,即是一个很普通的话题也是一个很重要的话题。说它是一个普通话题
是因为凡是玩邮件服务的哥们都或多或少了解这个话题,说他是一个很重要的话题,是因为我们中
间好多人都为这个玩意儿感到困惑过,可不,前几天我还在IGENUS论坛上请教过大麻兄关于邮件
的转发规则的问题呢,我也一直为这个咚咚感到很迷惑,还好,通过在大麻兄的耐心指导和自己长
期不懈的摸索测试,现在终于搞明白了。在这里我很乐意把自己的学习所获贴出来与大家分享,希
望能给初学者给点引导,让他们少走弯路,同时也希望高手们批评指点,谢谢!

在QMAIL中要闹清楚邮件转发规则,要依次明白三个方面的咚咚。
1 rcpthosts 文件 /var/qmail/control/rcpthosts
2 tcp.smtp 文件 /etc/tcp.smtp或者是/home/vpopmail/etc/tcp.smtp
3 smtp 认证
下面,我来一个一个地谈这三个咚咚,注意,我是说,我先要把这三个反面各自独立来谈,
谈各自的功能和使用方法,后面我将把这三个方面结合起来谈,那才是在实战中要明白和要
用到的最重要的东西。
1 rcpthosts 文件 rcpthosts这个名字取得好,见名知意嘛。意思是
这个邮件服务器可以接受转发请求的目的
主机列表(或者说目的地址列表),比如在这个文件里有sina.com,souhu.com。那么你可以
通过这个服务器转发发往sina.com,souhu.com的任何邮件,如果你想通过这个服务器给
aaa@bbb.com发信的话,就会报错:553 sorry,that domain isn't in my list of
allowed rcpthosts!知道了吧,因为bbb.com确实没有在rcpthosts里面啦,于是就
理所当然地被拒绝转发了。那么如果根本就没有rcpthost这个文件情况又如何呢?在这种
情况下,QMAIL会理解为open relay,意味开放式转发,也就是说任何人可以通过你的这个
邮件服务器向任何人发送邮件。这种情况是很危险的,因为你的服务器很容易被垃圾邮件制造
者当作发送垃圾邮件的中继站,你的服务器将被反垃圾联盟列入黑名单,那么你的服务器就
什么事都做不成了,除非你只是在局域网内部使用。所以,rcpthosts这个文件是很有用的。
你想对哪个地址开放,就直接在rcpthosts里加入这个目的地址就OK了,就这么简单!

2 tcp.smtp 文件
这个文件的位置无关紧要,一般在/etc/tcp.smtp或者/home/vpopmail/etc/tcp.smtp
如上所述,rcpthosts文件可以进行转发约束,但是用起来不是很爽,须知,你可能要给很多
目的地址的朋友发信,那么你得一条一条地在rcpthosts里录入,如果你是在一个局域网内部
使用你的邮件服务器,为了更方便的控制转发规则,这里有个更好的办法,这就是tcp.smtp这
个文件的作用了。
这里就要使用ucspi-tcp软件包的tcpserver程序,该程序的功能类似于inetd-监听进
入的连接请求,为要启动的服务设置各种环境变量,然后启动指定的服务。tcpserver的配置
文件就是tcp.smtp,该文件定义了是否对某个网络设置RELAYCLIENT环境变量。例如,本
地网络是地址为192.168.*.*,则tcp.smtp的内容应该设置如下:
127.0.0.1:allow,RELAYCLIENT=""
192.168.:allow,RELAYCLIENT=""
:allow
这几个规则的含义是指若连接来自127.0.0.1和192.168.*.*则允许,并且为其设置环境变量
RELAYCLIENT,否则允许其他连接,但是不设置RELAYCLIENT环境变量。这样当从其他地方到
本地的25号连接将会被允许,但是由于没有被设置环境变量,所以其连接将会被qmail-smptd
所拒绝。
但是tcopserver并不直接使用tcp.smtp文件,而是需要先将该文件转化为cbd文件:
进入tcp.smtp这个文件所在的目录,然后使用如下命令:
tcprules tcp.smtp.cdb tcp.smtp.temp < tcp.smtp

3 smtp 认证 上面提到的tcp.smtp这个文件很有用处,可以让你一劳永逸。
对于只在局域网内部使用邮件服务器
的情况下,已经够用了,但是单纯靠tcp.smtp这个控制无法适合漫游用户,因为对于一个漫游用户
来说,其连接服务器时用的IP是不固定的,在这种情况下,tcp.smtp文件就没有随时满足任意一个
合法漫游用户需要的灵活性。为了适应这种需要,smtp认证就应运而生了。所谓smtp认证,就象POP
验证用户身份一样,只要你是合法的用户,输入用户名和密码就可以登陆服务器转发邮件了,对于漫游
用户来说很方便,同时也避免了open relay的危险性。要让QMAIL具备用户验证的功能需要给QMAIL
打补丁。下面具体谈谈如何实现QMAIL的SMTP认证功能。

第一步:下载程序
qmail-smtp补丁:http://members.elysium.pl/brush/qmail-smtpd-auth/
密码检验补丁:http://members.elysium.pl/brush/cmd5checkpw/

第二步:编译安装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 目录下。在之前应该对原来的执行文件进行备份。

第三步:编译安装 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

第四步:设置/home/vpopmail/bin/vchkpw 的SetUID和SetGID
这点很重要,否则认证无法通过。这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序原来
只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,并取出用户
的邮件目录。这些操作qmaild 都没有权限去做。如果smtp进程要调用密码验证程序,则必须要使用
setuid 和setgid。
chmod 6755 /home/vpopmail/bin/vchkpw

第五步:设置tcp.smtp 有了SMTP认证是不是就不需要tcp.smtp
这个文件了?其实不然,因为通过tcp.smtp这个控制文件可以
方便局域网用户使用邮件服务器,对于这些用户只要tcp.smtp这个文件控制就可以了,没有必要对身份
严格校验了。假若你觉得10网段的用户都不需要SMTPR认证就可以转发邮件的话,就这么干:
vi /etc/tcp.smtp 或者 vi /home/vpopmail/etc/tcp.smtp
192.168.10.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow
保存,然后执行命令
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

第六步:修改smtpd启动脚本
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>
上一篇:UW IMAP 服务器的性能优化   下一篇:REDHAT QMAIL OPENSSL APACHE PHP MYSQL VPOPMAIL (with MySQL accounts)
[365Key收藏] [雅虎收藏+] [返回顶部] [打印本页] [关闭窗口]  
邮箱   相关文章
·UW IMAP 服务器的性能优化
·REDHAT QMAIL OPENSSL APA
·Maildrop安装调试笔记
·Freebsd下安装Drweb for qmail
·常规的qmail的防垃圾邮件处理
·smtp协议手工使用
·Fetchmail使用简介
·使用Forward功能建立邮件列表的
·Linux环境下邮件服务器的分析比
·6天/每天12小时安装qmali的一点
·第一次安装qmail
·vpopmail与qmail联合工作的机制
免费邮箱 163邮箱  21CN邮箱  Gmail  Hotmail  QQ邮箱  SoGou邮箱  新浪邮箱  雅虎邮箱  
邮箱评测 企业邮箱评测  
企业邮局 企业邮箱  企业邮箱资讯  
移动邮件 技术前沿  手机邮件  
邮件系统 CMail Server  WinMail  SendMail  Qmail  Postfix  MDaemon Server  Lotus Notes  IMail Server  Foxmail Server  Exchange Server  Domino  Winwebmail  
邮件营销 网络营销  营销案例  营销技巧  邮件营销  
反垃圾邮件 Anti-Spam技术产品  新闻资讯  
邮件客户端 DreamMail  Foxmail  IncrediMail  KooMail  Outlook  The Bat!  
邮件安全
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Maildir转换成mbox邮箱格式脚本
·TurboLinux下架设Qmail服务器历
·关于Qmail问题集
·Life with qmail -- 中文版
·常规的qmail的防垃圾邮件处理
·qmail vpopmail squirrelmail 安
·Qmail邮件服务器安装过程
·qmail邮件系统(五)vpopmail和q
·qmail邮件系统(一)Qmail系统的
·Qmail下如何将某个域下的账号邮
·qmail邮件系统(二)安装
·使用Forward功能建立邮件列表的
网站首页 -  网站地图 -  域名注册 -  虚拟主机 -  企业邮箱  -  网站投稿  -  广告联系 -  帮助中心  -  

Copyright 2007-2008 Mail1.com.cn All Rights Reserved
本站内容均来自网络,如果侵犯版权请来信告知,核实后我们会在24小时删除 联系方式:
第一邮局QQ群:14743955 E-mail:www@onlinex.com.cn