[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > Sendmail > 正文
Sendmail升級速成
本文出自:http://noc.cstnet.net.cn/ 趙巖 (2001-06-08 13:04:00)
    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(unknown) 

FEATURE(nouucp) 

MAILER(local) 

MAILER(smtp) 

改為: 

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升級速成"得到了我們網絡中心(NOC)同僚的鼎立支持,在此表示衷心的感謝,由時間倉促,加之水平有限,相信文章中難免有技術上的疏漏,望各位讀者不吝賜教,我將不勝感激。 

電子郵件:zhaoyan@cstnet.net.cn 

主頁網址:http://www.zhaoyan.bizland.com .cn 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★