標籤:檔案中 dma 6.2 centos 6 efi centos dig centos6 centos6.6
網上介紹sendmail的文章千百種,很少有跟著做下來一次成功的。多少都有些說的不準確的地方。
我給大家共用一下我經過實驗環境測試,完全可行的方法。
1.軟體準備
作業系統:centos6.6
我選擇centos6.6,
以下軟體,centos6.6全部內建,無需另外下載。
郵件系統:
cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-2.1.23-15.el6_6.2.x86_64
sendmail-cf-8.14.4-9.el6_8.1.noarch
cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64
m4-1.4.13-5.el6.x86_64
cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64
sendmail-8.14.4-9.el6_8.1.x86_64
cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64
dovecot-2.0.9-22.el6.x86_64
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讀取認證方法。下面我會詳細解釋。
2.安裝軟體
rpm -ivh把上面軟體全裝上,都在光碟片裡呢,好裝。
yum安裝更方便
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/lab/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
加入你 @後面的郵箱地址。比如我這裡是[email protected]
那麼,你要在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,所有設定全部完成,可以正常認證和收發郵件了。
本文如有不準確的地方,請各位海批~~~
centos 6.6 系統中配置sendmail和dovecot