Sendmail邮件服务器
时间:2006-11-26 来源:wdrain
从http://www.sendmail.org下载最新版本
确认是否安装以下两个软件包
#rpm –q postfix
#rpm –q sendmail
删除已经安装的sendmail以及postfix软件
#rpm –e --nodeps sendmail
#rpm –e --nodeps postfix
需要按装:
cyrus-sasl,cyrus-sasl-plain,cyrus-sasl-devel,cyrus-sasl-gssapi,cyrus-sasl-md5.前面三个是必须要安装的。
#rpm –qa | grep sasl :查询是否安装
检查dns服务器配置文件中是否有mx和A纪录类型
#host –t MX test.com
编译安装过程
#tar zxvf sendmail-8.13.8.tar.gz
#cd sendmail-8.13.8/
增加用户认证库sasl
#vi devtools/Site/site.confg.m4
增加:APPENDDEF(`confENVDEF’,`-DSASL=2’)
APPENDDEF(`conf_sendmail_LIBS’,`-lsasl2’)
#sh Build –c :如果以前编译过要加 –c 参数
#rpm –q m4 :确认m4已经安装
#sh Build install
#mkdir /usr/share/sendmail
#cp –a cf /usr/share/sendmail
#cd cf/cf
#cp generic-linux.mc sendmail.mc
#mkdir /etc/mail
#make install-cf
#cp sendmail.mc /etc/mail
#cd /etc/mail
#touch aliases access
#echo “test.com” > local-host-names
#echo “mail.test.com” >> local-host-names
#makemap hash access < access
#makemap hash aliases < aliases
生成两个.db文件
如果没有makemap命令需 # sh Build install
#mkdir /var/spool/mqueue :保存邮件的发送队列
#/usr/sbin/sendmail –bd –q1h
-bd : 在后台运行 -q1h:邮件队列一小时处理一次
启动没有提示错误说明服务器已经启动起来了
#ps aux | grep sendmail : 查看是否有sendmail进程
测试发信
#netstat –tnl | grep :25 :查看是否有25号端口处于监听状态
#useradd test
#passwd test :增加收信帐号
#echo “root: test” >> /etc/mail/aliases :默认root用户是不能收发信的,所以增加一个别名帐号
#newaliases
#telnet localhost 25
Mail from: [email protected]
Rcpt to: [email protected]
Data
This is a test information
.
Quit
#tail /var/log/maillog
查看日志文件,最后的stat=send 表明邮件已经发出去。
#su – test :切换到test用户
#mail :收信
启动收信服务器
#rpm –ivh /mnt/cdrom/Redhat/RPM/imap-*.rpm
#chkconfig imap on
#service xinetd restart :imap需要靠xinetd启动
#grep imap /etc/services :过滤imap服务的端口号
#netstat –tnl | grep :143 :查看是否有143端口
使用outlook测试
<略>
到这里为止仅限于在服务器上收发信,要在局域网中收发信还需要配置----转发功能
RELAY---转发配置
#cd /etc/mail
#vi sendmail,mc
添加:FEATURE(` access_db’)dnl :在第三行添加
include(`/usr/share/sendmail/cf/m4/cf.m4’)dnl :在第二行添加
#m4 sendmail.mc > sendmail.cf
#echo “10.0.0 RELAY” >> access
#makemap hash access < access
#ls –l
#killall sendmail
#sendmail –bd –q1h
然后再局域网另外一台主机测试发信
<略>
注:在这个过程中如果发信不成功大多是由dns造成的,可以使用:
#host –t MX gmail.com :测试目标域是否有问题
#host –t MX test.com :测试本地域是否有问题
#host mail.test.com
#ifconfig | grep –i addr :检查本机地址是否和邮件地址一样
#tail /var/log/maillog : 检查邮件日志
如果你的客户机的地址是变化的,需要增加用户认证。
首先删掉access文件
#cd /etc/mail
#rm access
#> access :创建access文件
#makemap hash access < access :创建access.db文件
#killalll sendmail
#sendmail –bd –q1h
然后再用outlook发信,看是否能发送出去。应该不能发送!!
增加用户认证,用户无论在哪里都可以发信。
#cd /etc/mail
#vi sendmail.mc
添加:include(`/usr/share/sendmail/cf/m4/cf.m4’)dnl
define(`confAUTH_OPTIONS’,`A y’)dnl
TRUST_AUTH_MECH(`LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’,`LOGIN PLAIN’)dnl
#m4 sendmail.mc > sendmail.cf
#chkconfig saslauthd on
#service saslauthd restart
#echo “pwcheck_method:saslauthd” > /usr/lib/sasl2/Sendmail.conf :增加认证方式
#killall sendmail
#sendmail –bd –q1h
测试用户认证
#netstat –tnl | grep :25
#telnet localhost 25
ehlo localhost
…….
250-AUTH LOGIN PLAIN (说明打开的用户认证机制)
……
Quit
再次测试用outlook发信,应该可以成功发信!!
注:在outlook帐户属性中打开 ”我的服务器要求身份验证”
用户别名
对于uid 500以下的用户都要设置别名,因为他们是无法收发信的
修改/etc/mail/aliases 文件:
Postmaster: root
Daemon: root
Bin: root
Sys: root
….
Root: test
….
#newaliases
#killall sendmail
#sendmail -bd –q1h :重新启动sendmail服务器
Sendmail的配置文件位于:
/usr/share/sendmail/cf/README
激活安全的imaps
Imaps=imap+ssl(基于ssl的安全imap协议)
#chkconfig imap off
#chkconfig imaps on
#service xinetd restart
#grep imaps /etc/services :查看imaps协议的端口号
#netstat –tnl | grep 993 :检查是否有993端口处于监听模式
用outlook测试
注:在outlook帐户属性中设置“此服务器要求安全连接(ssl)”
参考资料
/usr/share/sendmail/cf/README
http://www.sendmail.org
http://www.sendmail.org/other-sendmail-links.html
新闻组news:// comp.mail.sendmail/