注意:如果你因為某些原因還在使用8.8.x版本,我們強烈建議你升級到8.9.3和8.10以上(目前最新版本已經是8.12.9)。
Sendmail反垃圾郵件配置可以從以下幾方面進行配置:
1、配置RELAY_*特性
RELAY_*特性是SENDMAIL反垃圾郵件最基本的配置之一。RELAY在8.9后面的版本包括(8.9)均是默認關閉的,在8.9之前的版本Open-Relay是默認開放的,若你堅持要使用之前老版本,你需要使用SENDMAIL(`promiscuous_relay@#)特性,才能避免垃圾郵件的困擾。
最常用的方法是通過使用一個文件名為relay-domains(通常在/etc/mail下)的文件來同意某一個特定的域或IP地址通過此臺服務器來轉發郵件信息。
舉例說,/etc/mail/relay-domains內容如下:
128.32
host.mydomain.com
[UNIX:localhost]
在上例中,只有IP地址為128.32.x.x、主機名為host.mydomain.com的主機和主機自己才可以通過這臺郵件服務器發送郵件。如果有許多網段需要使用此服務器,只需加在里面就可以了。如果不需要對IP地址進行限制,就不必在Relay-domains文件中放置IP地址,并且在Sendmail.mc宏定義文件中加上(‘promiscuous relay’)特性,就可以不用配置relay-domains文件了。
(`accept_unresolvable_domains@#)特性:如果在Sendmail.mc中加入下面一行: Feature (@#accept_unresolvable_domains@#) 就可以傳遞那些域名不能從你的郵件服務器所在主機解析的郵件。當郵件服務器處于防火墻里面時會發生這種情況,所以當郵件服務器處于這種情況時必須使用這個特性,否則有些電子郵件不能送達。使用這個特性后,Sendmail就不會直接去試圖解析那些郵件地址,而是把郵件轉發到上一級郵件服務器,讓其去轉發,這樣就可以繞過防火墻的屏蔽。
ccept_unqualified_senders特性 :如果在Sendmail.mc中加入Feature(‘accept_unqualified_senders’)特性,就可以使那些沒有正確填寫發送者地址的郵件發送者,比如在用戶郵件地址中填入@#aaa@#之類地址的用戶也能發送郵件。一般來說,這個特性是不開放的。
二Access_db特性
在采取上述措施后如果仍然有郵件垃圾,例如,具有系統合法用戶的賬號,可直接用此帳號發信,那么就要使用access_db選項來進行控制,可以使用Feature(‘access_db@#,‘hash /etc/mailaccess@#)或Feature(‘access_db@#,‘dbm /etc/mailaccess@#)特性。兩者之間只在訪問的數據庫類型上有所不同,前一種是哈希表,后一種是傳統的數據庫類型,選用哪一種都不重要,關鍵是看系統上安裝了哪一種數據庫。這樣當Sendmail啟動后就會去讀取名為/etc/mail/access的數據庫,這個數據庫中存放著郵件接收、發送、轉發、拒絕和忽略等信息。一般來說,在使用之前需要手工來生成這個數據庫如下:
# makemap hash(dbm) /etc/mail/access
Makemap這個應用程序在Sendmail發布包中是有的。 如果執行成功就會生成一個名為access的數據庫。在access文本文件中,數據的輸入格式如下:
spammer@aol.com REJECT
cyberspammer.com REJECT
TLD REJECT
192.168.212 REJECT
IPv6:2002:c0a8:02c7 RELAY
IPv6:2002:c0a8:51d2::23f4 REJECT
在這個文件中一共可以有如下7個選項:
ok
relay
reject
discard
skip
###anytext
error:###any text
error D.S.N:### anytext
下面對前4項常用選項作一個簡單說明。
(1) ok意味著這個地址或地址區域內的用戶郵件將會被這個郵件服務器接收,但不一定會有權轉發,即使在這個郵件服務器配置文件中的其他規則不允許發送或接收這些用戶的信件。
(2) relay意味著接收發往指定區域或從指定區域過來的郵件,并且允許它從這個SMTP服務器轉發。
(3) reject意味著拒絕某一個發送者或區域。
(4) discard意味著直接丟棄這個郵件信息
三.配置sendmail的SMTP認證功能
傳統的郵件傳送協定 (SMTP)不具備對使用者身份進行認證的功能。要解決這個問題,可配置搭配 cyrus sasl身分認證程序庫(SENDMAIL也需要8.10以上的版本),具體實現方法如下:
一、 下載并安裝cyrus sasl身分認證程序庫;下載地址是
(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
.回到工作目錄,展開并進入cyrus-sasl-1.5.24.tar.gz目錄:
#tar zxvf cyrus-sasl-1.5.24.tar.gz
#cd cyrus-sasl-1.5.24
# ./configure -prefix=/usr --enable-login --with-pwcheck --with-digest
# make
# make install安裝完成后,建立一個/var/pwcheck目錄,pwcheck程序要用此目錄。 接下來必須設置 sendmail 的使用者身分查驗方式,這里使用系統帳號與密來進行驗證:
# cd /usr/lib/sasl/
# cat > Sendmail.conf
pwcheck_method: shadow
關于 Cyrus SASL 認證程序庫更詳細的說明,請參閱 Cyrus SASL for System Administrators。 <http://www.sendmail.org/%7Eca/email/cyrus/sysadmin.html>
二、編譯和配置sendmail
1.解壓sendmail軟件到你希望的目錄,進入sendmail目錄。
在devtools/Site/目錄下創建config.site.m4文件,加入如下兩行文字,把SMTP認證
功能編譯到sendmail中。
APPENDDEF(`confENVDEF@#, `-DSASL@#)
APPENDDEF(`conf_sendmail_LIBS@#, `-lsasl@#)
2.回到sendmail目錄,再進入sendmail目錄,開始編譯sendmail。
./Build -c(如果不是第一次編譯,需要加入-c選項,清除以前的配置)
編譯成功后,運行./Build install安裝軟件。
3.下一步需要改寫Sendmail的配置文件?;氐缴弦患壞夸?,再進入cf/cf目錄,找到合適
的.mc文件。按照你的要求適當修改,加入如下幾行:
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5@#)
define(`confAUTH_MECHANISMS@#, `LOGIN PLAIN DIGEST-MD5@#)
FEATURE(`no_default_msa@#)
DAEMON_OPTIONS(`Port=25, Name=MSA, M=Ea@#)
說明:"TRUST_AUTH_MECH"的作用是使sendmail不管access文件中如何設置,都能
relay那些通過LOGIN,PLAIN或DIGEST-MD5方式驗證的郵件。
"confAUTH_MECHANISMS"的作用是確定系統的認證方式。
。
4.編譯生成/etc/mail/sendmail.cf文件
m4 xxxx.mc >/etc/mail/sendmail.cf,不過記住一定要備份舊的sendmail.cf文件,
否則就可能麻煩了。
5.現在基本上可以了,啟動sendmail
sendmail -bd -q20m
在結束服務器端的配置之前,我們還要做一件事,運行pwcheck這個daemon程序,這樣才
能完成用戶認證功能。
pwcheck &
四 blacklist_recipients特性
若使用blacklist_recipients特性,則意味著有一些服務器上的用戶已經不適合再接收郵件,這個選項將全面封鎖指定用戶或用戶群。這個選項還可以對被病毒感染的用戶進行有效的隔離。例如:
badlocaluser@ ERROR:550 - Mailbox disabled for this username 錯誤的用戶名
host.mydomain.com ERROR:550 -
That host does not accept mail 此主機不接受郵件
ERROR:550 Mailbox disabled for – 信箱不可用
使用(`dnsbl@#)特性,我們可以在啟動SENDMAIL時將RBL裝載進去。一般,SENDMAIL默認為blackholes.mail-abuse.org.提供的列表為其第一黑名單。然,你也可以選擇其他的黑名單列表,詳情請看http://mail-abuse.org/)
拒絕信息如下:
Rejected: IP-ADDRESS listed at SERVER
where IP-ADDRESS and SERVER are replaced
做為郵件系統管理員,在沒有反垃圾郵件網關硬件配置況下,合理的置好MTA,是每個管理員必須做到的事情,除此之外,還應經常對系統資源及系統日志進行檢查,發現損耗大量系統資源的發信情況或經常大量發送郵件的用戶后應進行特別檢查,一經確認,采取應急措施保證服務器運行正常??傊?,反垃圾郵件是一項非常艱巨的任務,我們希望整個互聯網絡聯合起來,禁屏蔽垃圾郵件,爭取將垃圾圾郵件帶給用戶的困擾做到最小。
Sendmail使用基礎:
Sendmail 是一種通用的 MTA,一直是在UNIX系統中作為缺省的郵件服務器來安裝的。實際上,Sendmail也同UNIX其他郵件系統一樣,應用程序及配置文件是分開放置的。應用程序則放置在/usr/sbin目錄下(可能會隨著不同的UNIX版本而略有變化)。Send mail的配置文件叫做Sendmail.cf,通常放置在/etc/mail或/etc/目錄下,而且Sendmail.cf已經不象最早的版本需要手工修改生成,完全可以借助引入特性(FEATURE)機制來自動生成我們所需功能的Sendmai.cf。而不必須關心其具體內容。為此我們需要使用匹配系統的Sendmail.mc來產生sendmail.cf文件。
具體用法為如下
進入相應的cf子目錄后:
#cp cf/***.mc sendmail.mc
#vi sendmailmc
divert(-1)
# 這里有大量的注釋信息,在此省略
divert(0)dnl
VERSIONID(`@(#)subsidiary-v7sun.mc
FEATURE(`remote_mode@#)dnl
define(`SMART_HOST@#, `mailhost.$m@#)
FEATURE(`blacklist_recipients@#)dnl
DOMAIN(solaris-generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
用M4宏編輯器生成Sendmail.cf文件,并將此文件放置系統所需目錄(/etc/mail/)
# m4 m4/cf.m4 sendmail.mc > /etc/mail/sendmail.cf