Sendmail作為郵件服務軟體,一直以來,始終為各IT行業廠家的郵件伺服器廣泛使用,但由於Sendmail在設計當初,只考慮為用戶提供郵件發送和接收等服務,並未對網路安全作過多考慮,因此這就為日後的網路黑客提供了攻擊他人郵件伺服器的可乘之機,即我們通常所說的"郵件轉發"。
郵件黑客正是利用了Sendmail的這一漏洞,利用某些伺服器的SMTP不設防的缺陷,將自己的私人郵件通過他人的郵件伺服器發向目的地,以滿足一己私慾;更有甚者,利用他人郵件伺服器,肆意的向外界的任意地址發送"垃圾郵件",這樣做,不僅給他人的網路維護造成巨大損失,同時也給接收方帶來的諸多不便。
由於Sendmail自始至終一直作為郵件伺服器的標準後台進程,並為廣大伺服器生產廠家所採納,因此現階段,想通過其它軟體替代Sendmail做為郵件服務,似乎有遠水難解近渴之感;當務之急,只有通過升級Sendmail來達到防止"郵件轉發"的目的。
鑒於篇幅有限,現只對Sendmail的實現做具體說明,有關Sendmail的詳細原理,請讀者查詢相關文檔。
一. Sendmail的獲取
在一般情況下,將sendmail升級到sendmail.8.9.3即可達防止郵件伺服器轉發的功能。
TIPS:可到以下WWW或FTP站點下在最新的sendmail版本:
http://www.sendmail.org
ftp://ftp.ncic.ac.cn
ftp://ftp.pku.ac.cn
ftp://ftp.tsinghua.edu.cn
sendmail的源代碼文件為:sendmail..8.9.3.tar.gz
在獲得sendmail.8.9.3.tar.gz后,可通過gunzip和tar命令將此文件解包。
二. Sendmail的生成
這是sendmail升級過程中較為重要的一步,它將生成sendmail可執行文件。
1. 進入當前目錄下的/src目錄,編輯文件Makefile.m4
將:MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
改為:MAPDEF= ifdef(`confMAPDEF', `confMAPDEF',`NDBM')
2. 在/src目錄下,運行./Build進行編譯。
TIPS:在編譯過程中,可能會出現:sh groff not found 的提示信息。
可將Makefile.m4文件中有關groff的行註釋掉即可:
#NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
若想將編譯結果直接安裝到預設目錄下,可通過:
./Build install 來實現。
若出現gcc not found 或cc not found,可在/usr/bin下做如下軟連接:
ln -s /usr/bin/gcc gcc的實際位置,或 ln -s /usr/bin/cc cc的實際位置。
如果還出現上述信息,則需要你重新安裝gcc或cc編譯器。
三. 生成配置文件sendmail.cf
1. 進入sendmail-8.9.3目錄下的cf/cf目錄,編輯tcpproto.mc文件:
將源代碼:
divert(0)dnl
VERSIONID(`@tcpproto.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(*Your Os Type)
DOMAIN(*Your Domain Name)
FEATURE(access_db,dbm -o /etc/mail/access)
FEATURE(blacklist_recipients)
FEATURE(nouucp)
MAILER(local)
MAILER(smtp)
TIPS:在*Your Os Type一項中填寫"你的系統類型"(例如:solaris2),該型文件可在sendmail-8.9.3目錄下的/cf/ostype目錄下查到。
在*Your Domain Name一項中填寫你的域名,並用單引號括起(例如:'cstnet.net.cn')
這其中FEATURE(blacklist_recipients),也可省略。
2. 進入sendmail-8.9.3目錄下的cf/domain目錄,將文件"generic.m4"更名為"你的域名.m4"(例如:cstnet.net.cn.m4)。
3. 用m4編譯生成sendmail.cf文件。在sendmail-8.9.3/cf/cf目錄下執行: m4 ../m4/cf.m4 tcpproto.mc>sendmail.cf 在m4編譯過程中不應該出現任何錯誤提示。
四. 重新啟動sendmail
在重新啟動sendmail之前,需要做一些配置工作:
1. 檢查在/etc目錄下是否存在sendmail.cw和aliases文件,若沒有,需要建立此二文件:touch /etc/sendmail.cw /etc/aliases
2. 檢查是否存在/etc/mail目錄,若沒有,則建立此目錄並在該目錄下建立文本文件access,此文件非常重要,它是用來控制可用此郵件伺服器發送郵件的IP地址。此文件將在後面做具體說明.
3. 在sendmail-8.9.3/makemap目錄下,運行./Build,此時在當前目錄下會生成一個obj.xxx目錄,在此目錄下,已經生成了makemap可執行文件。
TIPS:此時,可在/usr/bin下做makemap的軟連接,以備將來使用: Ln -s /usr/bin/makemap makemap的實際位置
4. 下面,我們對access文件的格式加以說明: 左邊 右邊 解釋說明
左邊 右邊 解釋說明
159.226.8.5 RELAY RELAY必須大寫,表示允許159.226.8.5主機通過此郵件伺服器發送和接收郵件,其餘IP格式相同。
159.226.8 RELAY RELAY必須大寫,表示允許159.226.8這一個C通過此郵件伺服器發送和接收郵件,其餘網段格式相同。
*aaa@cstnet.net.cn OK或RELAY OK或RELAY必須大寫,表示允許aaa@cstnet.net.cn這個郵箱可通過此郵件伺服器發送和接收郵件。
*@cstnet.net.cn OK或RELAY OK或RELAY必須大寫,表示允許域名 為cstnet.net.cn郵箱通過此郵件伺服器發送和接收郵件。
註釋:帶*號的格式在實際升級過程中往往不成立,一般情況下請讀者不要使用。
TIPS:在m4編譯工程中,有可能出現:m4 not found的提示信息,此時之需要輸入m4的完整路徑(例如:/usr/bin/m4 ../m4/cf.m4 tcpproto.mc>sendmail.cf)即可。
如果還未找到m4,那就需要你重新安裝m4編譯器了。
這時,可將生成的sendmail.cf文件拷貝到/etc目錄下,以備日後使用。
5. 接下來需要用makemap(上文中已提到)將文本文件/etc/mail/access生成庫文件:
makemap dbm /etc/mail/access
運行后,將在/etc/mail/目錄下生成access.dir和access.pag兩個庫文件。
6. 最後啟動Sendmail
執行:/usr/lib/sendmail -bd -q15m
如果sendmail在預設目錄下,可直接執行:sendmail -bd -q15m
如果sendmail.cf不再預設目錄下,則執行:/usr/lib/sendmail -bd -q15m -C"sendmail.cf的實際位置"。
五. 升級維護
當你需要添加/刪除某些用戶,允許/禁止他們通過本郵件伺服器轉發郵件時,只需按照以上格式修改/etc/mail/access文本文件,並執行:
makemap -dbm /etc/mail/access
[火星人
]
Sendmail升級速成術已經有518次圍觀
http://coctec.com/docs/linux/show-post-204111.html