歡迎您光臨本站 註冊首頁

Sendmail升級速成術

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

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升級速成術已經有512次圍觀

http://coctec.com/docs/linux/show-post-204111.html