如何防止邮件服务器被滥用

12/3/2006来源:Qmail人气:7157

邮件服务器在Internet上扮演着一个非常重要的角色。SMTP(简单邮件传输协议)是Internet上计算机之间传送电子邮件所普遍采用的协议,Sendmail是构成邮件服务器的Unix系统中使用极为广泛的一种邮件传输代理程序,它遵循SMTP协议,提供了很强大的邮件服务功能,可以承载高达数万个用户的电子邮件通信服务。

美中不足的是,Sendmail在为用户发送邮件时,并不对用户进行身份认证,这就给一些广告邮件或垃圾邮件的制造者提供了机会──任何人只要想发信,就可以利用任何一台没有带认证功能而又对其“open relay”的Sendmail邮件服务器,为其发送大量的垃圾或广告信件。虽然Sendmail 8.9.3以上的版本提供了一些限制邮件转发的功能,可以在某种程度上限制这种情况的发生,但它只能根据静态的ip地址、邮件地址或域名来进行限制,这使得合法用户只能在固定的IP地址范围内使用邮件服务器,否则将会被拒绝。这样就给用户带来了使用上的不方便,例如用户下班回家或是出差在外,都无法使用工作单位的邮件服务器发信,学生放假离开学校也不能使用学校的邮件服务器发出信件。但是如果设定邮件服务器为open relay模式,又怕造成服务器转发功能被滥用。这是个很矛盾的问题,长期困扰着邮件服务器的管理员。

为了不让自己的邮件成为垃圾邮件的中转站而被外面的邮件服务器拒绝,以往许多邮件服务器的管理员大都只能选择限制mail relay的模式。现在好了,随着Sendmail软件版本的不断更新,新的功能也随之出现。使用新版本的Sendmail 8.12.5邮件服务器软件,再搭配Cyrus-SASL(Simple Authentication and Security Layer)身份认证程序库,就可以解决对邮件用户进行身份认证的问题。服务器有了认证功能后,任何人想通过邮件服务器发送信件时都得先输入用户名和密码进行身份认证。

下面就给大家详尽解释一下如何编译、安装Cyrus-SASL程序库和Sendmail 8.12.5软件使邮件系统支持SASL的SMTP认证功能。

一.环境

操作系统平台:Solaris 2.7 或 linux 6.2

使用软件:Cyrus-SASL 1.5.27和Sendmail 8.12.5

二.编译、安装Cyrus-SASL程序库:

1.下载:ftp://ftp.andrew.cmu.edu/pub/cyrus-mai/cyrus-sasl-1.5.27.tar.gz

2.解包:

tar xvfz cyrus-sasl-1.5.27.tar.gz


3.编译、安装:

进入cyrus-sasl-1.5.27目录:

#cd  cyrus-sasl-1.5.27


编译配置:

#./configure --enable-login --enable-plain


这里由于SASL库缺省状态下并不支持某些客户端软件的使用方式,所以要在生成配置文件时特别加入一些功能选项。具体要加什么可以用命令查看:

#./configure -help

如加“--enable-login”是因为Outlook ExPResss使用LOGIN的认证方法,SASL库缺省并不支持这种方式,所以要在生成配置文件时特别加入。

另外,缺省情况下,所有的库函数是安装到“/usr/local/lib”目录下,但Sendmail使用的库函数是在目录“/usr/lib”中的,所以需要做一些修改。在运行configure脚本前,修改其中的缺省路径就可以了。方法是打开configure文件找到下面这一行:

ac_default_prefix=/usr/local


改为:

ac_default_prefix=/usr


编译:

#make


安装:#make install


到这里SASL库就安装好了(注意在整个编译安装的过程中都不能有任何错误警告显示才行)。

接着必须设置Sendmail的使用者身份验证方式,因为这里要使用的是系统账号与密码来进行验证,所以要在“/usr/lib/Sendmail.conf”文件中指明:

#cd /usr/lib/sasl/#cat > Sendmail.confpwcheck_method: shadow^d



三.编译、安装及配置Sendmail

1.下载:

可以从http://www.Sendmail.org下载最新的Sendmail.8.12.5.tar.gz

2.解包:

tar xvfz Sendmail.8.12.5.tar.gz


3.编译、安装 (在进行如下操作之前要注意对“/usr/lib/Sendmail”和“/etc/mail/Sendmail.cf”文件进行备份):

进入Sendmail-8.12.5目录:

#cd Sendmail-8.12.5


在“devtools/Site/”目录下创建“config.site.m4”文件,加入如下四行文字,把SMTP认证功能编译到Sendmail中。

APPENDDEF(‘conf_Sendmail_ENVDEF’,‘-DSASL’)APPENDDEF(‘conf_Sendmail_LIBS’,‘-lsasl’)APPENDDEF(‘confLIBDIRS’,‘-L/usr/lib’)APPENDDEF(‘confINCDIRS’,‘-I/usr/include’)


回到Sendmail-8.12.5目录,再进入Sendmail目录,开始编译Sendmail:

#sh Build -c -f ../devtools/Site/site.config.m4


编译成功后,先要增加一个用户smmsp和组。然后运行“./Build install”安装Sendmail。

4.配置:

接着需要修改Sendmail的配置文件。回到Sendmail-8.12.5目录,再进入cf/cf目录,找到相应的后缀为“.mc”的文件,如“generic-solaris.mc”或“generic-linux.mc”,然后编辑相应的“.mc”文件,加入下列内容:

TRUST_AUTH_MECH(‘PLAIN LOGIN’)dnldefine(‘confAUTH_MECHANISMS’,‘PLAIN LOGIN’)dnlFEATURE(‘no_default_msa’)dnl turn off default entry for MSA


或按照需要适当修改,具体要加什么可参考相应的README文件。

接着就可以编译生成“/etc/mail/Sendmail.cf”文件:

#m4 ../m4/cf.m4 ./generic-solaris.mc > Sendmail.cf#cp ./Sendmail.cf /etc/mail#chmod g-w /etc/mail/Sendmail.cf#vi /etc/mail/local-host-names#(编辑该邮件服务器的全域名及别名)


最后启动Sendmail,再测试一下认证功能有没有启动就可以了。这样基于Sendmail邮件传输代理下的SMTP认证就做成了。有了认证功能的邮件服务器就能有效地避免被当成垃圾邮件的发送站。
,