sendmail郵件服務器搭載smtp和pop3認證的配置方法
網上介紹sendmail的文章千百種,不多有跟着作下來一次成功的。多少都有些說的不許確的地方。我給你們共享一下我通過實驗環境測試,徹底可行的方法。linux
1.軟件準備數據庫
操做系統:centos5.0centos
我選擇centos5,最新的操做系統,不要再用redhat9了,好久沒有更新了,企業裏用有風險的。更新換代吧。服務器
如下軟件,centos5所有自帶,無需另外下載。測試
郵件系統:
sendmail8.13
sendmail-cf-8.13
m4-1.4操作系統
pop3認證:dovecot-1.0dns
smtp認證:
cyrus-sasl-2.1
cyrus-sasl-md5-2.1
cyrus-sasl-plain-2.1
cyrus-sasl-lib-2.1進程
sasl這裏,我要說一句,網上有人說「sendmail-8.13已經包含cyrus-sasl的功能,所不必再安裝cyrus-sasl」
大 哥大姐們,沒有cyrus-sasl用什麼作認證.....sendmail官方只是說,sendmail的rpm包默認已經支持了cyrus-sasl 認證方式,也就是說,sendmail會在cyrus-sasl的工做目錄下自動建立相關認證配置文件,並監聽25號端口,就不用你去手動本身創建配置文 件和監聽端口了。當有請求進入25號端口的時候,sendmail會自動找到/usr/lib/sasl2/Sendmail.conf讀取認證方法。下 面我會詳細解釋。ip
2.安裝軟件md5
rpm -ivh把上面軟件全裝上,都在光盤裏呢,好裝。
3.認證配置
pop3:
網上說修改/etc/dovecot.conf文件,將第17行的:#protocols = imap imaps pop3 pop3s的#去掉。其實不用,它默認已經啓用了這些服務,除非你只想用dovecot-auth的認證,你能夠改爲protocols = none,不然不用改。
smtp:
注意,smtp稍微麻煩一下。
我講下原理:
當用戶請求進入 25號端口後,sendmail調用cyrus-sasl的saslauthd進程,saslauthd要求對方輸入本地系統用戶的用戶名和密碼,當用戶 輸入好後,saslauthd會去查找系統的/etc/shadow文件,密碼確認無誤,放行,告訴sendmail,這個用戶合法,能夠使用郵件服務來 發郵件。
這時候你去/usr/lib/sasl2/下看看,sendmail已經作好了一個sendmail.conf文件,裏面指明瞭:pwcheck_method=saslauthd,說明sendmail認證時就要調用saslauthd
因此要實現上述功能,就要設置cyrus-sasl的saslauthd,給它指定認證方式。
首先,進入/etc/sysconfig/,打開saslauthd的腳本,找到第7行的:
MECH=
等號後面無論寫什麼,咱們都要改爲:
MECH=shadow
保存
這樣saslauthd纔會去找shadow文件給用戶作認證。
其實saslauthd還能夠用本身的用戶名和密碼數據庫作驗證,但這樣不方便,還要另外建立用戶,不如直接用系統自身存在的用戶名和密碼。
4.Sendmail配置.
配置郵件服務器名稱:
打開/etc/mail/local-host-names
加入你 @後面的郵箱地址。好比我這裏是otto@linuxedentest.com
那麼,你要在local-host-names文件裏的第二行添加:
linuxedentest.com
保存
固然
local-host-names還能夠設置郵箱別名,這個很少說,你們查文檔看看。
改好後還要去你的dns服務器上,打上mx標誌,添加A標記,用來解析dns名和地址。具體方法就要查查bind的設置方法了,或者win2003的dns設置方法。
配置sendmail.mc:
打開/etc/mail/sendmail.mc文件,
找到:
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
把前面的dnl註釋去掉,變成:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
上面兩句的意思是:
放行那些經過EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式驗證的郵件用戶,無視access文件中的設置。
confAUTH_MECHANISMS,肯定系統支持的認證方式。LOGIN PLAIN 方式下,outlook用的多。
還不算完,找到:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, )dnl
改爲:
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, )dnl
這樣全部ip地址均可以經過smtp端口使用咱們的郵件服務器了。
-----------------------------------------------------------
這裏要說一句,不要改
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
這句話!保持註釋狀態。
上面那句話,網上好多文章都說把Port=submission,改爲Port=25,說是強制全部用戶在25端口上作認證。
我不知道sendmail之前的版本是怎麼樣設置smtp認證的。sendmail8.13不用這麼設置,這句話人家sendmail的意思是:取消註釋後,一旦當25號端口被重定向或者被屏蔽,或者在25號端口打不開的狀況下,立刻使用587備用端口給用戶作認證。
原本人家sendmail就已經打開了25端口(Port=smtp了已經),你卻在這裏還Port=25,把備用端口也改爲25,這不是讓sendmail的sm-client認
證進程和sendmail的主進程搶端口麼....
-----------------------------------------------------------
到此爲止,保存sendmail.mc
用m4從新生成sendmail.cf文件
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
啓動dovecot進程:
/etc/init.d/dovecot start
啓動saslauthd進程:
/etc/init.d/saslauthd start
啓動sendmail進程:
/etc/init.d/sendmail start
把這些進程加入到啓動腳本中去:
chkconfig dovecot on
chkconfig saslauthd on
chkconfig sendmail on
ok,全部設置所有完成,能夠正常認證和收發郵件了。