设置sendmail+SASL的方法

设置sendmail+SASL的方法

1、确认系统已安装相关软件。
#rpm -aq | grep sasl
#rpm -aq | grep imap
#rpm -aq | grep sendmail
#rpm -aq | grep m4
至少要保证有下列软件
imap-2001a-18.i286.rpm
sendmail-8.12.8-4.i386.rpm
m4-1.4.1-13.i386.rpm
cyrus-sasl-2.1.10-4.i386.rpm
cyrus-sasl-md5-2.1.10-4.i386.rpm
cyrus-sasl-plain-2.1.10-4.i386.rpm
cyrus-sasl-gssapi-2.1.10-4.i386.rpm

2、在DNS服务器上添加相应的MX记录

3、添加本地邮件域名
#vi /etc/mail/local-host-names
mydomain.com
#service sendmail restart
[显示更改后的w类配置]
#sendmail -bt
ADDRESS TEST MODE(ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> $=w
mydomain.com
localhost.localdomain
localhost
[127.0.0.1]
//ctrl+d退出

4、使用/etc/mail/access数据库,可以定义MTS允许发送邮件的地址或用户,但使用SASL可以不用定义这

个文件。
access文件定义举例:
#vi /etc/mail/access
mydomain.comRELAY //允许域内用户发送
10.2.2RELAY //允许10.2.2.0网段发送
username@somedomain.comRELAY //允许特定邮件地址
username@RELAY //允许特定用户发送
参数说明:
OK无条件接受或发送
RELAY允许SMTP代理投递
REJECT拒绝接受并发送错误消息
DISCARD丢弃邮件,不发送错误消息
用access文件生成access.db
makemap hash access.db < access

5、可以选择在/etc/aliases文件,设定用户别名,邮件列表也是在这个文件中制作
此项文件路径在sendmail.mc文件中的define('ALIAS_FILE','/etc/aliases')dnl语句确定
格式:
alias: recipient [,recipieng,...]

6、可以选择使用/etc/mail/userdb文件,改变用户入站或出站地址
格式:
入站地址:maildrop 被改写的入站地址
出站地址:mailname 被改写的出站地址
应用:
makemap btree userdb.db < userdb

7、建立虚拟域
mc配置文件中FEATURE('virtusertable','hash -o /etc/mail/virtusertable.db')dnl定义了虚拟域配置

文件位置。
#vi /etc/mail/virtusertable
虚拟域地址真实地址
#makemap hash virtusertable.db < virtusertable
然后为虚拟域在DNS里添加MX记录
在local-host-names中添加虚拟域
如果未使用SASL,则需要在access文件里添加虚拟域

8、配置Pop3
运行:
# ntsysv
在系统服务列表中选中ipop3,选’OK’保存推出
重启xinetd服务,运行:
# service xinetd restart
运行netstat命令看smtp和pop3服务是否都已经启动
# netstat -l

9、配置SASL
在sendmail.mc中找到相关的行
A、添加
define(QUEUE_DIR, `/var/spool/mqueue/q*')
启动多邮件队列,获得更好的传输性能,与SASL无关。
另外在/var/spool/mqueue/下创建任意多个队列目录,运行:
# cd /var/spool/mqueue
# mkdir q1 q2 q3 q4 q5 q6
B、将如下两行的dnl去掉,取消注释。
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 作用是使sendmail不管access文

件中如何设置,都能 relay 那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮

件。
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 作用是确

定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
C、给下行加上dnl注释
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl 让sendmail可以侦听所有网络设备,

为整个网络提供服务,而不仅仅只对本机提供服务。
D、在smtp的默认端口(25)上进行认证,而不是587端口。这样就强制所有使用该邮件服务器进行邮件转

发的用户在认证后才能发邮件了。
将dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl 改为
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
最后,运行
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
用m4重新生成sendmail.cf文件,重新启动sendmail服务。

检验认证是否开启:
可以通过telnet IP 25来验证sendmail服务是否已经正常启动,若登陆成功,则说明sendmail服务已经成

功启动。
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
220 localhost.localdomain ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 May 2004 15:57:01 +0800
ehlo localhost
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH GSSAPI LOGIN PLAIN
250-DELIVERBY
250-HELP
quit
#
在AUTH后面有LOGIN就基本上可以在OutlookExpress上认证了。
另外使用
sendmail -d0.1 -bv root | grep SASL
出现NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS则可说明SASL已启用。