2.源碼安裝方式
首先取得最新版本的源代碼,可以從http://www.sendmail.org/或ftp://ftp.sendmail.org/pub/sendmail/兩個網站取得。
然後,將其存放在/usr/local目錄下。並執行以下命令,解壓縮:
#cd /usr/local
#tar -zxvf sendmail-8.13.4.tar.gz
這樣就會在/home目錄下建立一個sendmail-8.13.4目錄:
/usr/local/sendmail-8.13.4/README
/usr/local/sendmail-8.13.4/src
/usr/local/sendmail-8.13.4/cf
/usr/local/sendmail-8.13.4/doc
接下來需要編譯源代碼。由於Sendmail自己帶了一個編譯程序Build,所以不用make命令:
#cd /usr/local/sendmail-8.13.4/src
#./Build install
安裝好了該軟件以後,可以使用以下命令來確認sendmail是否已經啟動:
#pstree |grep sendmail
如果啟動了Sendmail,那麼這個命令將顯示出其相關信息。否則將沒有任何提示地回到命令行。如果沒有啟動,用戶可以手動啟動。如下面命令所示:
#service sendmail start
配置Sendmail抑制垃圾郵件
1.關閉Sendmail的Relay功能
所謂Relay功能就是指別人能用這台SMTP郵件服務器給任何人發信,這樣別有用心的垃圾發送者就可以使用這台郵件服務器大量發送垃圾郵件,而最後別人投訴的不是垃圾發送者,而是這台服務器,因此必須關閉Relay。具體的方法就是,到Linux服務器的/etc/mail目錄編輯access文件,去掉“*relay”之類的設置,只留“localhost relay”和“127.0.0.1 relay”兩條即可。注意,修改access文件後還要使用命令使修改生效:makemap hash access.db < access。
2.在Sendmail中添加RBL功能
RBL(Realtime Blackhole List)是實時黑名單。
只要在Sendmail中加入RBL認證功能,就會使郵件服務器在每次收信時都自動到RBL服務器上去查實,如果信件來源於黑名單,則Sendmail會拒收郵件,從而使單位的用戶少受垃圾郵件之苦。在Sendmail中添加RBL認證,需要對sendmail.mc添加以下內容:FEATURE(`dnsbl',`relays.ordb.org',`″Email blocked using ORDB.org - see ″')。
最後執行“m4 sendmail.mc>sendmail.cf”和“service sendmail restart”兩條命令,使有關Sendmail的修改生效。
3.使用access數據庫
訪問數據庫定義了什麼主機或者IP地址可以訪問本地郵件服務器和它們是哪種類型的訪問。主機可能會列出OK、REJECT、RELAY或者簡單的通過Sendmail的出錯處理程序檢測一個給定的郵件錯誤。主機默認列出OK,允許傳送郵件到主機,只要郵件的最後目的地是本地主機。列出REJECT將拒絕所有的郵件連接。如果帶有RELAY選項的主機將被允許通過這個郵件服務器發送郵件到任何地方。
/etc/mail/access.db是一個散列表數據庫,是使用/etc/mail/access文件產生的,該文件為純文本文件,其格式是“地址 操作”。
下面給出使用上述地址和操作字段,修改/etc/mail/access文件,從而生成/etc/mail/access.db數據庫的操作步驟:
首先,使用vi編輯/etc/mail/access文件。
#vi /etc/mail/access
然後,添加如下內容。
samsung.com RELAY //允許samsung.com的域內所有主機使用服務器轉發郵件
10.0.6.134 RELAY //允許IP地址為10.0.6.134的主機使用服務器轉發郵件
192.168.10 RELAY //允許192.168.10網段內的主機使用服務器轉發郵件
info.com REJECT //拒絕info.com的域內所有主機使用服務器
最後,存盤退出,並且使用makmap命令生成/etc/mail/access.db數據庫即可。
#cd /etc/mail
#makemap hash access.db 4.打開Sendmail的SMTP認證功能
雖然可以在Sendmail中使用上述的access數據庫來管理用戶,使其合法地使用SMTP服務器進行郵件的傳遞。但是,由於用戶的不斷增多,以及很多用戶都是在一個網段裡面,如果單單依靠上述的access數據庫很難有效地管理SMTP服務器的使用,那樣會使得access數據庫規模增大,管理混亂,從而造成效率降低,甚至出錯。所以,非常有必要使用Red Hat Linux下自帶的身份認證程序庫,配合Sendmail服務器一起使用,對使用SMTP服務的用戶進行身份認證,從而保證該服務的合法使用。
使用前要下載sasl庫,該函數庫提供了安全認證所需函數,下載地址是“ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/”,目前網上最新版本為cyrus-sasl-2.1.21.tar.gz。下面介紹使用該身份認證程序庫配置帶認證的sendmail的步驟:
首先檢查系統是否已經安裝了sasl相關的RPM包。
#rpm -a |grep sasl
一般系統都會默認安裝,如果沒有,則需要使用如下命令安裝四個工具包:
#rpm -ivh cyrus-sasl-md5-2.1.10-4
#rpm-ivh cyrus-sasl-2.1.10-4
#rpm-ivh cyrus-sasl-plain-2.1.10-4
#rpm -ivh cyrus-sasl-devel-2.1.10-4
或者通過使用下載下來的源代碼安裝包,進行如下安裝:
#cp cyrus-sasl-2.1.21.tar.gz /usr/local
#gzip cyrus-sasl-2.1.21.tar.gz
#tar -xvf cyrus-sasl-2.1.21.tar
#cd cyrus-sasl-2.1.21
#./configure -prefix=/usr --enable-login --with-pwcheck --with-digest
#make
#make install
然後,查看sendmail與認證相關的配置。
#cat /usr/lib/sasl/Sendmail.conf
pwcheck_metod:pam
接著,需要編輯sendmail.mc,修改和認證相關的配置內容,刪除每行的dnl即可。
#cd /etc/mail
#vi sendmail.mc
取消如下的幾行注釋:
//TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
//define(`confAUTH_
MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
再接著,使用m4命令生成cf文件。
#m4 sendmail.mc > sendmail.cf
然後,重新啟動sendmail服務器。
#service sendmail restart
最後,測試sasl。
#sendmail -d0.1 -bv root | grep SASL
NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
通過上述六個步驟的配置工作後,就成功地完成了對帶SMTP認證的Sendmail郵件服務器的配置。