繁体中文
设为首页
加入收藏
当前位置:服务器技术首页 >> 邮件服务 >> qmail加了smtp验证后,合法的用户确验证不通过?为什

qmail加了smtp验证后,合法的用户确验证不通过?为什

2004-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:系统为:SuSE Linux 安装 qmail 、vpopmail等,运行良好。 最近发现有非法用户使用smtp发垃圾信,因此加了smtp验证。 是通过:qmail-smtpd.c 这个补丁程序来加的。 编译等都正常,复制到qmail的bin目录,修改了v...

系统为: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] >, authentication is required', Port: 25, Secure(SSL): No, Server Error: 553, Error Number: 0x800CCC78[/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都不行了

责任编辑:admin
相关文章