系统为:SuSE Linux
安装 qmail 、vpopmail等,运行良好。
最近发现有非法用户使用smtp发垃圾信,因此加了smtp验证。
是通过:qmail-smtpd.c 这个补丁程序来加的。
编译等都正常,复制到qmail的bin目录,修改了vpopmail的vchkpw的setuid和setgid,同时修改了qmail的smtp启动脚本,修改后的如下:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 25 /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1
重新启动了qmail,然后outlook中设置了smtp验证,但用合法的用户和正确的密码也不能通过。
望,那为大虾不吝赐教!万分感谢……
注:这里的qmail-smtpd 是编译的有smtp验证的文件;同时vpopmail中设置了默认域;outlook中的用户名我试验了user@domain.com这样形式的也不能通过。
amtd 回复于:2003-04-19 09:18:55
[quote:5bd6e3bb6c="gadfly"]/etc/tcp.smtp.cdb这个文件有么?
把tcpserver那行改成以下的看看
/var/qmail/bin/tcpserver -H -R -l your.domain -t 1 -c 100 -v -p -x/etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qma..........[/quote:5bd6e3bb6c]
/etc/tcp.smtp
使用的 qmailctl cdb (就是Life with qmail文章中的那个qmailctl)重新建立了tcp.smtp.cdb的。是起作用的。
我的/usr/bin/true 没有这个文件。我的系统是SuSE,不是RedHat。
amtd 回复于:2003-04-19 09:16:51
[quote:5d5a0457f3="iceblood"]127.0.0.1:allow,RELAYCLIENT=""
:allow
?
只要第一行[/quote:5d5a0457f3]
如果只要第一行的话,那么就会出现上面的outlook中的提示。用telnet,当rcpt to:的时候也会出现那句话。
The message could not be sent because one of the recipients was rejected by the server. The rejected e-mail address was 'amtding@xxxx.com'. Subject
'How about areyou?', Account: 'Albert Ding', Server: 'xxxxxx.com.cn', Protocol: SMTP, Server Response: [b:5d5a0457f3]'553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)', Port: 25[/b:5d5a0457f3], Secure(SSL): No, Server Error: 553, Error Number: 0x800CCC79
kelei 回复于:2003-04-19 07:23:20
乖乖,我的原来是auth无效,现在换了新的qmail1.03后,情况和你的一样了,不知道问题在哪里?不过我用那个 su -c qmaild "............." 命令测试后, 返回 /usr 目录,不知道是否正常?
amtd 回复于:2003-04-13 00:23:50
顶一下。不好意思。
amtd 回复于:2003-04-14 10:51:25
再顶一下。不好意思。
amtd 回复于:2003-04-14 18:03:55
顶
战隼 回复于:2003-04-14 18:11:36
你的hosts文件中是怎么写的?
amtd 回复于:2003-04-15 10:35:25
查了smtpd日志上,第一步检测用户都没有通过:
qsmtpd: auth fail for login: XXXX.
说明用户名验证都没有通过,不知道是哪里配置的不对?
amtd 回复于:2003-04-15 18:01:02
刚才把vpopmail 升级到5.3.20,问题依然存在。
麻烦大虾来看看这个问题吧。谢谢啊。
gadfly 回复于:2003-04-16 23:57:27
脚本简化成通常的,看看,又没有问题
amtd 回复于:2003-04-18 13:43:05
两种方法都试过:问题一样。
http://www.linuxforum.net/doc/qmail-auth.html
http://oldsite.linuxaid.com.cn/support/showfom.jsp?i=1703
1. 备份原来的 qmail-smtpd.c ,备份 /var/qmail/bin/qmail-smtpd
2. 下载qmail-smtpd.c.
3. 编译,复制qmail-smtpd
4. 修改vchkpw的setuid setgid。使用:su - qmaild -c "/var/qmail/bin/qmail-popup localhost /home/vpopmail/bin/vchkpw pwd",可以通过。用户名和密码输入后,可返回用户目录,正确。
5.修改smtpd启动脚本。
6.outlook 测试。
后来换了第二种,就是安装:http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.26.tar.gz这个的,也不行。
amtd 回复于:2003-04-18 13:44:51
这个是outlook的提示。
The message could not be sent because one of the recipients was rejected by the server. The rejected e-mail address was 'amtding@msn.com'. Subject 'hey!', Account: 'NewAllied', Server: 'mail.newallied.com.cn', Protocol: SMTP, Server Response: '553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)', Port: 25, Secure(SSL): No, Server Error: 553, Error Number: 0x800CCC79
我的/etc/tcp.smtpd内容:
127.0.0.1:allow,RELAYCLIENT=""
:allow
好像qmail-smtpd 这个文件就没有起作用啊。和原来的一样了。:(
谁有编译好的qmail-smtpd 这个文件,能不能发给我?
谢谢啊!&n
bsp; amtd@vip.donews.com
gadfly 回复于:2003-04-18 17:55:17
/etc/tcp.smtp.cdb这个文件有么?
把tcpserver那行改成以下的看看
/var/qmail/bin/tcpserver -H -R -l your.domain -t 1 -c 100 -v -p -x/etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/
in/qmail-smtpd /home/vpopmail/bin/vchkpw /usr/bin/true /var/qmail/bin/cmd5checkpw /usr/bin/true 2>&1
注意,这行得根据你自己的情况改
iceblood 回复于:2003-04-18 21:26:50
127.0.0.1:allow,RELAYCLIENT=""
:allow
?
只要第一行
amtd 回复于:2003-04-19 09:29:08
现在最新发现的一个问题。
就是加了验证后 ,telnet上去,也能显示 ESMTP,同时输入命令 EHLO
也会显示:
220 XXXXXX.com.cn ESMTP
EHLO
250-XXXXXX.com.cn
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
我在outlook中测试,发送信件后,提示输入用户名密码。我连续点确定,不一定点记下,竟然发出去信了。而且我试了,用户名和密码可以随便填写。
如果在outlook中不选择smtp验证,那么outlook会提示:
The message could not be sent because one of the recipients was rejected by the server. The rejected e-mail address was 'amtding@xxxx.com'. Subject 'How about areyou?', Account: 'Albert Ding', Server: 'xxxxxx.com.cn', Protocol: [b:1fa034202a]SMTP, Server Response: '553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)'[/b:1fa034202a], Port: 25, Secure(SSL): No, Server Error: 553, Error Number: 0x800CCC79
我试验的,例如用163.com的,不选择验证,但163.com的发,outlook会提示:
The message could not be sent because the server rejected the sender's e-mail address. The sender's e-mail address was 'amtd@163.com'. Subject 'test', Account: 'pop.163.com', Server: 'smtp.163.com', Protocol: SMTP, Server Response: '553 You are not authorized to send mail as[b:1fa034202a]
这么说我的smtp验证就根本没有起作用?
我把tcp.smtp的内容从:
127.0.0.1:allow,RELAYCLIENT=""
:allow
改成了:
127.0.0.1:allow,RELAYCLIENT=""
后,连续点很多下确定,也不会发信出去了。依旧提示用户名密码错误。估计前面的连续点确定按钮会发信出去,是“:allow”这里起的作用吧。
唉,,,,,
gadfly 回复于:2003-04-20 10:23:34
这么说明你的auth smtp没有起
到实际的作用,我记得gary遇到过这个问题。
重新编译qmail-smtpd试试看。
amtd 回复于:2003-04-20 13:47:38
[quote:06bb5faff6="gadfly"]这么说明你的auth smtp没有起到实际的作用,我记得gary遇到过这个问题。
重新编译qmail-smtpd试试看。[/quote:06bb5faff6]
都重新编译过好多次了。问题一样。
那就麻烦gary看看这个帖子。
感谢回复!
amtd 回复于:2003-04-21 17:07:37
前面gadfly说的 gary 大虾在吗?
帮我看看这个问题。先谢谢了。
gadfly 回复于:2003-04-21 17:31:34
sorry!说错了,是cgvboy,好像kelei也有过着问题。
给他们发发短信看看。
amtd 回复于:2003-04-21 18:17:02
qmail-smtpd的启动脚本是按 Life with qmail中讲的 写的,直接copy的,也没仔细看。
qmail-smtpd,启动的部分设置了
exec /usr/local/bin/softlimit -m 20000000 \
这个默认是 2m 的内存。这个太小了,导致 vchkpw 导入 libc.so.6这个库的时候,内存不够用。
我现在设置了20M,就什么问题都没有了!!!
还有一点。这个问题是这样发现的。用outlook发送,后,提示输入用户名和密码,如果点取消后,它的提示信息是空的。我换了foxmail后,foxmail就原原本本的把服务器的错误提示显示出来了。
错误是:“vchkpw:error while loading shared libraries:libc.so.6: failed to map segment from shared...”这样到google上去一搜索,就找到解决问题的答案了!!
太高兴了!!!!希望出现这样问题的朋友,我的经验做个参考吧!!!!
hss202 回复于:2003-05-21 02:13:25
[quote:cea3c762e3="amtd"]两种方法都试过:问题一样。
http://www.linuxforum.net/doc/qmail-auth.html
http://oldsite.linuxaid.com.cn/support/showfom.jsp?i=1703
1. 备份原来的 qmail-smtpd.c ,备份 /var/qmail/bin/qmail-smtp..........[/quote:cea3c762e3]
我编译后,连POP都不行了

