|
今天受朋友之托,要找一个带认证的smtp服务.原来打算给他搞个imail就得了.谁想他的老大非要他找一个能在linux平台下运行的东东。思前想后,决定给他鼓求个sendmail玩玩。反正这玩意儿我已经好长时间没有琢磨了,该熟悉熟悉啦.先在网上找了资料,是<<RedHat9下带认证的Sendmail>>,我这边正好有一个AS3.0系统的服务器,内核差别不是很大。就拿这篇文章做研究模版吧。
按照要求,下载了一大堆.rpm的包,然后是在我的那台AS3.0上东拆点儿,西装点儿,南补点儿,北拼点儿。总算把所有sendmail必须安的组件都装上了,主要有: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
1.然后就是就是更改/etc/mail/sendmail.mc文件,主要个更改五行内容:define(QUEUE_DIR, `/var/spool/mqueue/q*')
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
文件中,红色字体的行为需要修改的地方,共有五行需要修改。
第一行是手动添加的,与认证无关,作用是启动多个邮件队列,为了获得更好的传输性能。
第二行和第三行是去掉行首的注释。”TRUST_AUTH_MECH”的作用是使sendmail不管access文件中如何设置,都能 relay 那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,”confAUTH_MECHANISMS" 的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
第四行是加上注释,以便让sendmail可以侦听所有网络设备,为整个网络提供服务,而不仅仅只对本机提供服务。
第五行是修改的,原来内容是:
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
去掉行首的注释符,并且将内容修改成Port=25:
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
在smtp的默认端口(25)上进行认证,而不是587端口。这样就强制所有使用该邮件服务器进行邮件转发的用户在认证后才能发邮件了。
2.运行:
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
用m4重新生成sendmail.cf文件.中途倒是也出现了不少的错误,还好,3年多的unix/linux安装经验帮了我不少的忙,从sendmail 的源代码包里借了好几组文件,总算把它给装上了.可是,装完以后出问题了。本机器上可以访问它的25口,可换了其他机器就不能访问它的25口拉。咋回事呢?研究来研究去,发现sendmail.mc里面dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
这一行并没有取消它的作用,用netstat -na |grep 25发现监听的还是
127.0.0.1:25,而正常的因该是0.0.0.0:25,没办法,删掉这一行.重新m4.然后重起sendmail,嘿,可以了!
该进行测试了.先用 outlook express实验看看,呀!不允许被转发.估计是access的问题,vi /etc/mail/access
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
添加上我发信端服务器的 IP
然后:makemap -v hash access.db < access
重起sendmail,再发发看,嘿成啦.原来是转发设置的问题.
添加个帐号:
useradd -g 10 -s /usr./bin/passwd
然后使用认证看看,呀,不成呀.不用认证可以发信,用认证反而不成了
tail /var/log/maillog
did not issue MAIL/EXPN/VRFY/ETRN during connection to MSA
认证有问题,咋办?查了半天网,遵从了网上的建议,把access清空,然后生成access.db,既不定啥转发规则,让它从sendmail.cf里面找规则吧.改完后从新测试,没有那个该死的错误拉.不过新的问题来拉,让我反复输入密码,难道我的密码有问题??!
再查阅网上的资料,发现原来还需要启动一个叫saslauthd的服务,"真是活见鬼!"
service sendmail
service sendmail stop
service saslauthd
service saslauthd status
service saslauthd start
service sendmail start
再试试看,好象成了.没有认证的时候,显示失败,有了认证以后,刷的一下就发出去了.换个错误的密码看看,认证失败.恩,这还查不多.
看看表,快24点了.老天,又要过凌晨了.就研究到这里吧.
明天准备抽时间彻底重新安装一遍!
|
|