环境: Redhat linux 6.0(内核2.2.14)、sendmail-8.10.2、cyrus-sasl-1.5.21、Outlook express 5.0
一、准备工作
1.首先要下载sasl库,该函数库提供了安全认证所需函数,版本在8.10.0以上的sendmail才支持SMTP认证功能。
2.注意选择客户端电子邮件软件。并不是所有的客户端电子邮件软件都支持SMTP认证功能,几种常见的 版本要求是这样的:
Netscape Messenger 的版本要4.6以上
Outlook和Outlook Express要5.0版本以上
Eudora pro的版本要在4.3以上
Foxmail目前还不支持这个功能。
每一种软件的认证方法是不一样的,编译sasl库的时候和配置sendmail略有不同。我就大家最常见的 Outlook Express 5.0的设置方法介绍如下。
二、安装sasl库
1.解压cyrus-sasl-1.5.21.tar.gz到你选定的目录
2.# cd cyrus-sasl-1.5.21
3 # ./configure --enable-login --with-pwcheck;make;make install
4.缺省情况下,所有的库函数安装到/usr/local/lib目录下,但sendmail使用的库函数是在目录/usr/lib 下的,所以需要做一些调整。
# cd /usr/lib
# ln -s /usr/local/lib/sasl/ ./sasl
# cp /usr/local/lib/libsa* .
也可以避开这一步,在第3步时候运行configure脚本前,修改其中的缺省路径就可以了。 打开configure文件找到这一行ac_default_prefix=/usr/local(在文件前几行),改为 ac_default_prefix=/usr 就可以了,这样更方便一些。
5.新建目录/var/pwcheck,供pwcheck命令使用,该命令是一个后台程序,负责检查用户的输入口令, 以root权限件使用shadow口令文件。
6.在/usr/lib/sasl目录下建立文件Sendmail.conf,加入如下一行
pwcheck_method:shadow
这样sasl库函数的安装就完成了。
三、编译和配置sendmail
1.解压sendmail软件到你希望的目录,进入sendmail-8.10.2目录。 在devtools/Site/目录下创建site.config.m4文件,加入如下两行文字,把SMTP认证功能编译到sendmail中。
APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
2.回到sendmail-8.10.2目录,再进入sendmail目录,开始编译sendmail。
# ./Build -c(如果不是第一次编译,需要加入-c选项,清除以前的配置) 编译成功后,运行./Build install安装软件。
3.下一步需要改写Sendmail的配置文件。回到上一级目录,再进入cf/cf目录,找到generic-linux.mc文件按照你的要求适当修改,加入如下几行:
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5')
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5')
dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth/auth-info')
FEATURE(`no_default_msa')
DAEMON_OPTIONS(`Port=25, Name=MTA)
DAEMON_OPTIONS(`Port=587, Name=MSA, M=Ea')
说明:"TRUST_AUTH_MECH"的作用是使sendmail不管access文件中如何设置,都能relay那些通过LOGIN, PLAIN或DIGEST-MD5方式验证的邮件。 "confAUTH_MECHANISMS"的作用是确定系统的认证方式。 "confDEF_AUTH_INFO"的作用是当你的计算机作为客户机时,向另外一台有smtp认证功能的主机进行 认证,用户和密码存放在auth-info文件中,在这个例子中并不需要这个功能,所以注释掉了。
4.编译生成/etc/mail/sendmail.cf文件
# cd /path/to/you/sednamil/source/cf/cf
# make
# cp generic-linux.cf /etc/mail/sendmail.cf
不过记住一定要备份旧的sendmail.cf文件,否则就可能麻烦了。
你还需要创建一个aliases文件,/etc/目录下有一个是redhat自己带的,复制到/etc/mail目录下就可以了
此外还很可能会出现下列提示 :
Starting sendmail: 554 5.0.0 /etc/mail/sendmail.cf: line 40: unknown configuration line " " 451 4.0.0 /etc/mail/sendmail.cf: line 69: fileclass: cannot open '/etc/mail/local-host-names': No such file or directory
解决办法是删除sendmail.cf里第40行,该行是空行。 然后touch /etc/mail/local-host-names
5.现在基本上可以了,启动sendmail
# sendmail -bd -q20m
6.如果有问题,请使用下列命令
# tail -f /var/log/maillog
检查错误所在
四、Outlook Express 5.0 的配置
1.打开你的Outlook Express,修改你的账号属性,在服务器选项,选取我的smtp服务器需要认证选项, 然后进入配置。
2.不要选取安全口令认证,sendmail并不支持这个选项。是选取使用pop3同样的口令还是选择另外输入用户密码,这就看你的爱好和设置了,这不是关键。如果你在服务器上有一个真实账号,不妨选取使用同样的口令,如果没有账号,选用其他的用户口令同样可