免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3737 | 回复: 8
打印 上一主题 下一主题

[Mail] 再说说QMAIL邮件RELAY规则和SMTP认证的实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-30 21:59 |只看该作者 |倒序浏览
以前我曾经在本板块发过一个帖子专门讨论过QMAIL邮件的转发规则,
最近老是看到一些初学者提问SMTP认证.我觉得问题的根源在于:
1 初学者对QMAIL的邮件RELAY规则的本质还很模糊.
2 世界在进步,初学者老是拿N年前的帖子照葫芦化瓢.殊不知,QMAIL的配置
  是相当复杂的,而且一个完整的邮件服务器涉及到很多的相关软件和系统
  本身的环境.你用的是现在版本的QMAIL.VPOPMAIL以及一些相关的补丁,
   而人家讲的故事都是N年前的,在别人机器上行得通的安装方法在你的环境
  下就是不行.并且,经常有人在寻求那个经常被人提起的AUTH包.

下面我将使用最新版本的QMAIL和VPOPMAIL来实现QMAIL的SMTP认证,
至于其它的相关软件的安装我就不说了.

在这里,我将使用一个集成补丁包:qmail-toaster-0.8.3.patch以及
netqmail-1.05.tar.tar和vpopmail-5.4.0.tar.gz
qmail-toaster-0.8.3.patch这个补丁包含了以下补丁:
smtp auth (SMTP认证)
spf (发信人DNS检查)
qmail-queue (如果要使用病毒扫描引擎则需要这个补丁)
maildir++ patch  
support oversize dns packets (not necessary if you use dnscache)  
chkuser (检查本地vpopmail用户表,信头的语法,这个补丁需要在安装vpopmail后被安装。)
spam throttle  
qregex (匹配badmailfrom和badmailto文件里的规则)
big concurrency (set the spawn limit above 255)  
同时,在这里我将使用一个新的包:toaster-scripts-0.8.1.tar.tar
这个包专门集成了安装QMAIL所需要的脚本,使得复杂的
QMAIL的配置变得尽可能的简单高效
在这里,你就无须疑惑,到底是使用qmail-smtp-auth还是使用qmail-smtpd.c来实现SMTP认证呢?
因为这里面已经有你需要的东西了,并且这些补丁放在一起你无须担忧他们之间有什么"隔阂".

下面来开始安装QMAIL和VPOPMAIL:
1 软件下载:
http://shupp.org/software/
http://qmail.yeah888.com/netqmail-1.05.tar.gz
http://www.inter7.com/devel/

2  解压
tar -zxvf ~/src/netqmail-1.05
bzip2 ~/src/qmail-toaster-0.8.3.patch.bz2
tar ~/src/vpopmail-5.4.0.tar.gz
tar ~/src/toaster-scripts-0.8.1.tar.tar

3 给QMAIL打基本的补丁.
你只要执行以下一步就可以了.
cd ~/src/netqmail-10.5
./collate.sh

4 建立用户和组:
cd ~/src/netqmail-1.05/netqmail-1.05
vi INSTALL.ids 取用适合你系统的部分.
cp INSTALL.ids IDS
chmod  755 IDS
./IDS
顺便建立好VPOPMAL的用户和组
groupadd vchkpw -g 89
useradd vpopmail -u 89 -g vchkpw

5.编译安装QMAIL
rm -rf /usr/sbin/sendmail
make
make setup check
也许你会问,那个新补丁包怎么不打上去呀?别急,现在还不能打,否则
QMAIL编译通不过,等安装好VPOPMAIL后再打.必须这样做.

./config-fast mail.domain.com

6 设置系统别名
cd /var/qmail/alias
echo "admin@domain.com" > .qmail-postmaster
echo "admin@domain.com" > .qmail-mailer-daemon
echo "admin@domain.com" > .qmail-root
chmod 644 /var/qmail/alias/.qmail*

7 开启SPF设置
echo ./Maildir/ >/var/qmail/control/defaultdelivery  
echo 3 > /var/qmail/control/spfbehavior

8 配置脚本
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
mkdir -p /var/qmail/supervise/qmail-pop3ds/log
cp /home/pkg/toaster-scripts-0.8.1/send.run /var/qmail/supervise/qmail-send/run
cp /home/pkg/toaster-scripts-0.8.1/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /home/pkg/toaster-scripts-0.8.1/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /home/pkg/toaster-scripts-0.8.1/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /home/pkg/toaster-scripts-0.8.1/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /home/pkg/toaster-scripts-0.8.1/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /home/pkg/toaster-scripts-0.8.1/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /home/pkg/toaster-scripts-0.8.1/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
mkdir -p /var/log/qmail/pop3ds
chown -R qmaill /var/log/qmail
cp toaster-scripts-0.8.1/rc /var/qmail/rc
chmod 755 /var/qmail/rc
cp toaster-scripts-0.0.8.1/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
rm -rf /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail  
用daemontools来启动qmail-send和qmail-smtpd
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service  

虽然有很多行,但比以前的手工配置简单多了,并且减少了出错的可能性.

9 安装VPOPMAIL
mkdir -p /home/vpopmail/etc
echo "domain.com" > /home/vpopmail/etc/defaultdomain

设置smtp规则,关闭open relays
echo '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtp
cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp


echo "localhost|0|数据库账户|账户密码|数据库名" > /home/vpopmail/etc/vpopmail.mysql
chmod 640 /home/vpopmail/etc/vpopmail.mysql  
chown -R vpopmail.vchkpw /home/vpopmail/etc  

./configure --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --disable-roaming-users --enable-logging=p --disable-passwd --enable-clear-passwd --disable-domain-quotas --enable-auth-module=mysql --enable-auth-logging --enable-sql-logging --disable-valias --disable-mysql-limits --enable-learn-passwords

make
make install-strip  

echo 'export PATH=$PATH:/home/vpopmail/bin' >> /etc/profile
source /etc/profile  

POP3和IMAP的启动脚本:
cp /home/pkg/toaster-scripts-0.8.1/vpopmailctl /var/qmail/bin
ln -s /var/qmail/bin/vpopmailctl /usr/bin
chmod 755 /var/qmail/bin/vpopmailctl

cd ~/src/netqmail-1.05/netqmail-1.05
patch -p0 < ~/src/qmail-toaster-0.8.3.patch.bz2 |
make clean
make
qmailctl stop
make setup check
chown -R vpopmail:vchkpw /var/qmail/spam  

好了,现在可以使用vpopmailctl start|stop|stat,qmailctl start|stop|stat来
启动.停止.观察两种服务了.

现在该说说这个帖子的主题了
你只要是按照我上面说的步骤安装的QMAIL和VPOPMAIL,就已经实现了SMTP认证
上面的红色部分是设置转发规则的一部分,在这个例子里,除了登陆本机,在其它的任何
别的地方请求服务器转发邮件,都要求验证.现在让我们来做试验:

在另外一台PC机器上启动OE,设置访问待验证的服务器的账号,首先,不勾选"我的服务器
需要验证"看看会发生什么,发信给你在外面的邮箱,比如:abc@126.com.发生什么了?
恩?发不出去!让我给你解释吧:
不勾选"我的服务器需要验证",就意味着OE给服务器发送helo而不是ehlo,helo是不需要
验证的意思,那么这个时候QMAIL就会启用rcpthosts文件,因为此时不需要验证,同时在
~/vpopmail/etc/tcp.smtp明文规定只对本机RELAY,所以就不能忽略rcpthosts这个
文件,但是,这个文件在QMAIL编译安装的时候--config--fast domain.com
在这个文件里,默认就只有一个domain.com.也就是说,在不需要验证的情况下只有发往
domain.com也就是本地是可以的,否则就会被拒绝转发,所以OE报错为:553 sorry,that domain isn't
in my list of allowed rcpthosts....注意,这个时候是没有启用SMTP认证的,但是认证服务却依然存在.

好了,现在请勾选"我的服务器需要验证",在发同样的信,看看有发生什么了?
特别注意:此时你要重新开设一个账号,之所以要这么做,是因为:
刚才上面你开启的账号也许是正确的账号,那么这次验证将顺利通过,不会提示要你输入
正确的用户和密码,会让你感觉不到验证的存在,那么此时你要重新设置一个账号,并且
这个账号用户名可以是正确的,密码随便写一个,这个时候发信会弹出一个对话框要你
输入密码,直到你输入了正确的密码,服务器就可以给你转发邮件了.怎么样?验证是成功的
吧!如果你勾选了"我的服务器需要验证",那么OE跟服务器会话时就会送ehlo而不是helo
ehlo是要求验证的意思,那么服务器将启动验证程序,直到OE传给它正确的用户名和密码.
一旦启用了验证,就将忽略rcpthosts这个文件.也许你觉得这个rcpthosts文件是多余的了,
你如果这么想就大错而特错了,如上面所说,如果选择我的服务器不需要验证,那么就只能依靠
这个文件了,如果没有这个文件,那么服务器就是开放转发的,因为垃圾邮件发送者是不会
勾选"我的服务器需要验证"的.
rcpthosts这个文件你可以随便编辑,加入你觉得可以发信的地址,但是如果有了验证就不需要
加入其它的任何地址了,只有一个默认的domain.com就可以了,如果不选择我的服务器需要
验证,那么任何人都还是可以向本地发信的,包括垃圾邮件发送者,但有了验证,就可以保证
你的服务器不会被列为黑名单,不会被垃圾邮件发送者利用.至于别人向你本地发送垃圾
邮件,那就属于反垃圾邮件的策略了,不在本主题范围.

以上策略在AS4上测试通过

好了,本次就谈到这,今天是6月30日,阿根廷和德国队的比赛快开始了,23点开始,
现在已经是晚上22:30了,我得去看看这场令人瞩目的比赛,时间比较紧张,所以
本贴写的不是很细腻,疏漏错误支出在所难免.但还是
希望对对SMTP认证有疑惑的朋友有所帮助,也希望高手们对本贴
的错误或者不足之处提出批评和建议,谢谢

[ 本帖最后由 xxjoyjn 于 2006-7-3 13:04 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-01 09:31 |只看该作者
强力支持LZ,谢谢,这几天我正在为SMTP认证所困惑呢,有你的指点我终于明白了很多

论坛徽章:
0
3 [报告]
发表于 2006-07-03 09:58 |只看该作者
支持!

所谓熟能生巧,希望有一天我也能发这样的贴,学习中....

论坛徽章:
0
4 [报告]
发表于 2006-07-03 12:21 |只看该作者
谢谢斑竹的鼓励,继续向你学习ING

论坛徽章:
0
5 [报告]
发表于 2006-07-03 22:43 |只看该作者
利用本地SMTP的外部帐号不验证发送邮件給本地帐号需要认证么?
利用本地SMTP的本地帐号不验证发送邮件給本地帐号需要认证么?

有没有地址测试?

论坛徽章:
0
6 [报告]
发表于 2006-07-04 14:44 |只看该作者
qmail-toaster-0.8.3.patch这个包在哪里?

怎么找都只找到个qmail-toaster-0.8.1.patch 在http://shupp.org/software/上!

论坛徽章:
0
7 [报告]
发表于 2006-07-07 22:09 |只看该作者

论坛徽章:
0
8 [报告]
发表于 2007-06-13 17:25 |只看该作者

回复 1楼 xxjoyjn 的帖子

我还是能发!奇怪

论坛徽章:
0
9 [报告]
发表于 2007-09-29 10:44 |只看该作者

我终于找到你了,原作者!打搅了,谢谢

第三步:编译安装 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
请问 make ;make instll这个是什么意思,instll还是install,而且cmd5checkpw-0.22目录里找不到安装文件,谢大侠解析解析,谢谢,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP