网站运营
位置:首页>> 网站运营>> Qmail服务器下防止滥用mail relay完全解决方案(2)

Qmail服务器下防止滥用mail relay完全解决方案(2)

 来源:asp之家 发布时间:2010-03-11 18:38:00 

标签:qmail,解决,服务器

3.防止mail relay被滥用的方法二

方法一对于局域网应用场合来说是足够了,但是如果对于象263或163这样的电子邮件系统来说,这种解决方法就不大适合,因为这些邮件系统的用户遍布全世界各个地方,因此用户可能从任何一个IP连接过来发送信件,因此就需要寻找其他的方法来限制邮件系统的relay功能被滥用。
若在qmail系统中使用vpopmail,则可以利用vpopmail专门针对漫游用户的配置选项来实现防止邮件系统的relay功能被滥用。

若希望支持漫游用户通过邮件服务器的转发邮件(mail relay),则需要在安装vpopmail时使用如下配置选项:

[root@aidmail vpopmail-4.9.4]# ./configure --enable-roaming-users=y

其支持漫游用户的原理是:当某个漫游用户通过pop3取信以后,则在某段时间内允许该地址通过邮件服务器的转发信件。vpopmail安装完成以后,通过cron来定时运行程序如下:

40 * * * * /home/vpopmail/bin/clearopensmtp 2>%26amp;1 > /dev/null

也就是每40分钟清除允许relay的IP地址的列表,则当某个用户首先通过pop3取信件(因为通过pop3收取信件是需要认证的,则可以保证这是合法的用户)结束以后,则用户在后来的40分钟以内可以通过该邮件系统转发邮件,之后就不允许通过该系统转发邮件。

4.防止mail relay被滥用的方法三

对于有漫游用户的邮件系统来说,防止其relay功能被滥用的另外一个方法就是在发送邮件时要求用户认证,就象用户收信是需要认证一样。这里假设系统已经安装成功qmail-1.03和vpopmail,并且原有系统运行正常。

4.1.下载程序:

qmail-smtp补丁:http://members.elysium.pl/brush/qmail-smtpd-auth/

密码检验补丁:http://members.elysium.pl/brush/cmd5checkpw/

从这两个地址下载得到qmail-smtpd-auth-0.26.tar.gz及cmd5checkpw-0.22.tar.gz。

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

4.3.编译安装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

4.4.设置relay规则。

relay的意思是:服务器接受客户端的smtp请求,将客户端发往第三方的邮件进行转发。 qmail下控制relay很简单,只要客户端接入的smtp进程的环境变量里包含(RELAYCLIENT="")就允许relay ,否则拒收。实现方法是在/etc/tcp.smtp 里对需要relay的IP逐条设置(RELAYCLIENT=""),然后用tcprules 生成规则表。因为本文要实现SMTP认证后的relay ,不需要对任何IP进行预先设定,所以默认规则设置成"只对本服务器relay"。/etc/tcp.smtp内容应该为:

127.0.0.1:allow,RELAYCLIENT=""
:allow

重新生成新的tcp.smtp.cdb文件:

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

4.5.设置/home/vpopmail/bin/vchkpw 的SetUID和SetGID。

这点很重要,否则认证无法通过。这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序原来只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,并取出用户的邮件目录。这些操作qmaild 都没有权限去做。如果smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid 。其实这点大可放心,这两个密码验证程序都是带源代码的,本身非常安全,只需要放在安全的目录里就可以了(设置其他用户除qmaild 可执行外都没有权限执行;其实如果没有其他SHELL帐户,也就不用这么麻烦了)。

chmod 4755 /home/vpopmail/bin/vchkpw

4.6.修改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>%26amp;1

改为:

#!/bin/sh
QMAILDUID=qmaild
NOFILESGID=nofiles
exec /usr/local/bin/softlimit -m 2000000
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x /etc/tcp.smtp.cdb
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd
/home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>%26amp;1

4.7.其他一些设置:

设置vpopmail的用户目录直到/目录都被任何用户可以读取;


4.8.重新启动qmail

/etc/rc.d/init.d/qmailstart stop
/etc/rc.d/init.d/qmailstart start

4.9.客户端测试

在客户端上使用 OutlookExpress 和 Netscape 4.6 以上版本的邮件软件进行检验
文章来源:网站制 * 好者(www.devdao.com) 出处:http://www.devdao.com/Article/343313.htm

0
投稿

猜你喜欢

  • 很多用户不知道Godaddy域名应该怎么指定目录? 今天我们就来探讨一下这个问题。用户有两个域名aaa.com和bbb.net,由于主域名不
  • 4.9 这儿有一个小的perl脚本程序,它将大多数的注释从已生成的配置文件中删除,形成一个简化的文件。4.10 将htdocs目录树的所有权
  • 随着Internet技术的飞速发展,Web技术得到广泛应用。而安全问题一直都是Internet的一个薄弱环节,任何连接到Internet或者
  • Godaddy主机用户在购买、建立、管理托管帐户时,创建了多个帐户来登陆与其托管网站有关的不同界面。每个帐户都是由一个用户名及密码来保护的。
  • 这不是Google第一次固执地以自己的意愿代替用户体验了,正如当初搜索引擎结果默认在原窗口打开一样。Google Adsense的广告是在投
  • Discuz!7.0是康盛创想(Comsenz)公司于2008年12月份发布的一款论坛BBS建站产品。在Discuz!7.0中,界面风格设置
  • 首先查看apache是否加载了mod_deflate.so模块,如果没有需要安装加载。找到并下载和当前apache版本相同的源码文件,解压缩
  • 环境:系统 WindowsApache 2.2加载Rewrite模块:在conf目录下httpd.conf中找到LoadModule rew
  • CentOS 7 使用阿里云的yum源1. 备份原来的yum源sudo cp /etc/yum.repos.d/CentOS-Base.re
  • 服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称
  • 在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在linux
  • 前天收到淘宝点击时装美女掌柜的消息“淘宝网首页悄悄的改版了”。本次淘宝网改版将淘宝商城和支付宝等构架全面融合,整体资源在首页也得到了更加平衡
  • 中国站长站(chinaz.com)据赛迪网-IT技术报道:昨天在调试一个博客系统时遇到了http500错误,于是按照2003时的解决方法在I
  • 在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。1. sar -n DEV 1
  • 1>单线程或者单进程相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个clien
  • 以前自己弄的东西,现在帖出来,希望对大家有点用:)1.1 什么是FTP:文件传输协议原理1.1.1 命令选择1.1.2 命令格式1.2 wu
  • 今天喝了点酒,谈下建站2年的经验,实在是不爱打字,尽量简洁点,希望能帮助下新人朋友。我和网络接触的真正时候,大约3年前。其实也不算接触网络,
  • 8月29日消息 据国外网站报道,一个丑陋和简单的页面在其仅存的一周内,带来的转化率竟然高达其所替代页面的300%。有一位创意指导轻蔑地对待我
  • 有人说一台不和外面联系的电脑是最安全的电脑,一个关闭所有端口,不提供任何服务的电脑也是最安全的。黑客经常利用我们所开放的端口实施攻击,这些攻
  • 技巧一:挂聊天室挂聊天室的方法已经不是什么新鲜的了,但是真正掌握关键技术的还是少数人,这点就非常符合市场规则。什么是关键?永远都是细节。网络
手机版 网站运营 asp之家 www.aspxhome.com