- 论坛徽章:
- 0
|
回复 #23 中年改行 的帖子
本帖最后由 半边糖果 于 2011-01-23 15:06 编辑
在qmail-smtp.c 中
增加
stralloc authusername={0}; //全局变量用于记录认证的email地址
在认证成功后将mailfrom存入上面的authusername中,也就是在函数
int authenticate(void)最后return 0;语句前插入下面的语句
/*将用户名存入全局变量 authusername*/
if(!stralloc_copy(&authusername,&user)) return 1;
在void smtp_rcpt(arg)函数里面 大约599行下面 增加一个判断
If (relayclient) {
if(case_diffs(authusername.s,mailfrom.s)) {
err_noauth(); //认证用户名与mailfrom中的地址不符
/*在这儿加入log代码*/
return; //出错返回
}
我的是这样写的:
if (relayclient)
{
if(case_diffs(authusername.s,mailfrom.s)) {
out("username does't equal mailfrom\r\n");
err_noauth();
return;
}
}
这是 夜未眠 以前提出的修改方法。注意你的netqmail 的版本号。
从新编译下 qmail-smtpd 然后覆盖之前的可以了。
[ 本帖最后由 半边糖果 于 2009-10-30 14:55 编辑 ] |
|