设置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.rpm2、在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 < access5、可以选择在/etc/aliases文件,设定用户别名,邮件列表也是在这个文件中制作
此项文件路径在sendmail.mc文件中的define('ALIAS_FILE','/etc/aliases')dnl语句确定 格式: alias: recipient [,recipieng,...]6、可以选择使用/etc/mail/userdb文件,改变用户入站或出站地址
格式: 入站地址:maildrop 被改写的入站地址 出站地址:mailname 被改写的出站地址 应用: makemap btree userdb.db < userdb7、建立虚拟域
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 -l9、配置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已启用。