| 導購 | 订阅 | 在线投稿
分享
 
 
 

SENDMAIL郵件服務器-安裝篇

來源:互聯網  2008-05-31 00:05:18  評論

Sendmail對一般的系統管理者而言,往往是個不敢入手的「禁區」 ,因爲絕大多數系統的使用者對E-Mail的需求與依賴的程度之高,可說是稍有分毫差錯,系統管理者就要准備接受如雪片般飛來的抗議與 抱怨!而Sendmail這個東東的「內函」,似乎又有點不太容易理解: 與設定有關的sendmail.cf 檔,如果不是下過一番死功夫,則讀起來如同讀天書一樣,只知道裏面有英文字與數字!所以一般人總是能不 動則不動,只要能用就好。不過,很不幸的,一般跟著機器而來的sendmail總是有著令人心驚膽跳的「附加功能」,就是常常都有一些可以讓無聊人士作爲侵入路徑的BUG 或後門,某些BUG 還可以讓侵入 者經由Sendmail而取得最高權限的root!一旦root權限被人拿走了, 那麽這機器就可被人任意屠宰,最惡劣的,還可能破壞系統!

Sun 在國內的使用人口相當的多,筆者對Sun 也稍微比較熟悉一點。不過,Sun 的Sendmail卻是令人頗不敢恭維的,幾乎可以說:只要還在使用Sun 的Sendmail而沒有「常常」patch 的話,那甚麽系統安全都不必談了,談了也是白談;如果還在使用Sun 的Sendmail,那就如果系統抱著一顆不定時炸彈,隨時一個不注意,都可能引爆:(。這一點,大家可以翻一翻CERT或8lgm看一看,幾乎是只要有sendmail 的問題,Sun 大多跑了....。其他系統的Sendmail也不要偷笑,雖然大家的出場率沒有Sun 高,可是也常會問題的。 另一方面,Sendmail 8.6.9與之前的版本最近剛發現有個ident方面的Bug 。如果方便的話,請大家務必換成最新版。如果不方便的話,在v8.6.5之後的版本有個克難式的補救法,即在sendmail.cf 加入這麽一行:

Orident=0

表示不作ident 的檢查。

v8.6.5之前的版本就一定要換成最新版。

本軟體在系統安全方面,是目前評價最高的,目前已知的BUG都已經改好了,最主要的原因,當然是要感謝作者Eric Allman ,他(或他們)能作到一發現重大的Bug (如系統安裝)就立刻出新版。本軟體是一public domain ,可以在網路上各ftp server上找到其source code。由於該軟體的發展者把一些必要的設定步驟自動化了,所以,其實安裝這個軟體並不是想像中那麽樣的困難。如果連compile 的時間也算下去,順利的話,不用半個小時就可以安裝完畢!

3.1 下載Sendmail最新版本

最新版本的Sendmail可以從 ftp://ftp.sendmail.org/pub/sendmail/ 得到!

如 sendmail.8.9.3.tar.gz 這是截止到文章發布的最新版本,size:1068290byte

有關最新版本的發布,請浏覽Sendmail的主頁 http://www.sendmail.org

3.2 安裝Sendmail

用root登陸或su成root後,先把tar.gz的包解開tar fvxz sendmail.8.9.3.tar.gz,用make -f 開始編譯

編譯完成後系統會産生系統設定文件,也就是sendmail.cf (一般這個文件都存放在/etc下)

接下來,這按幾步繼續安裝: (注:~/sendmail爲解開後的sendmail目錄)

1.請切換至設定檔目錄~/sendmail/cf/cf 之下。找一個合適自己系統的XXXX.mc檔。筆者一般上是使用tcpproto.mc 這一個不用uucp的檔。如果是用tcpproto.mc 這個檔,筆者在solaris 2.3 試了,得記得在檔中要加上一行:

OSTYPE(solaris2)

Sun 4.1.3 不必,其他系統就不曉得了。在目錄 ~/sendmail/cf/ostype下有幾個OSTYPE()可以的 檔,只有這個目錄有資料的才可能能夠OSTYPE()。還有, 如果是 system V的/bin/mail,似乎就得要加OSTYPE()。

一句老話,詳情請看DOCUMENT:~/sendmail/cf/README。這希望有經驗的朋友能夠補充:)

如果不小心忘了加上OSTYPE()會怎樣?也不會怎樣,只會有"unknow mailer error" 的錯誤,然後信收不到。

有一點要提醒大家的,就是:在~/sendmail/cf/cf 所看到的各種系統的.mc 檔,都是Sendmail 8.6.x的作者Eric Allman 「演示」給大家看的,所以,可以看到檔名都有個"cs",要是沒有修改就用這些檔的話,那一定會發生錯誤的。而要修改,有相當多地方要改,所以,如筆者一般懶的人,用tcpproto.mc 還是比較簡單又不會出錯:)

2.好,選定了某一個合意的.mc 檔,那接下來可執行m4産生.cf 檔。請下指令:

# m4 XXX.mc YYY.cf 如果是sun 4.1.3 ,可能系統會抱怨m4的版本太舊了。那請試一試用:

# /usr/5bin/m4 XXX.mc YYY.cf

要是還是不行,那就請去抓新版的m4回來compile (可以在 http://www.gnu.org 找到gnu 的m4)。

這個步驟是要把compile好的files, install 到系統上去了。

羅嗦的我還是得再一次提醒您看看:把舊檔案備份好了嗎?

好,假設compile 的結果非常沒挑戰性的沒有任何錯誤,産生.cf 檔過程也沒有甚麽值得注意的訊息。所産生的.cf 檔 也改好了。而且最重要的:作好舊檔的備份(不是我要嚇人,這是以防萬一)。

1.挑個老板沒有在用mail的時間,快手快腳的切換至目錄~/sendmail/src ,下指令:

# make -f Makefile.XXX install

系統會把compile出來的~/sendmail/src/sendmail與man document拷貝到它們該有的目錄(所以你還如果沒有備份/usr/lib/sendmail ,那趕快祈禱待回不要出問題,要不然就趕快准備淚水哭吧!

因爲舊的會被compile 出來的sendmail覆蓋)

2.切換至目錄~/sendmail/cf/cf ,把産生出來的YYY.cf檔拷貝到本系統sendmail.cf 應該在的地方,

如:/etc或 /etc/mail 。

3.把舊sendmail daemon 的process 殺掉。(這應該不用我羅嗦吧!用ps -ax |grep sendmail |grep -v grep 找出舊daemon的process(或head -1 /etc/sendmail.pid 或 head -1 /etc/mail/sendmail.pid),

然後用 kill -9 processID幹掉它(或直接用 kill -9 `head -1 /etc/sendmail.pid`)。

4.啓動新daemon。例如下指令:

/usr/lib/sendmail -bd -q30m

當然,保守一點,看舊的daemon怎麽跑,照舊的來下參數應該是沒有問題。

這時,初步安裝就已經完成了,接下來請看設置sendmail

3.3安裝Sendmail注意事項

如果安裝不成功,請參考下面的問題:

用vi或任一種編輯器,編輯的makefile檔,作一點點 必要的修改。所要修改的地方不多,下面是可能要修改的地方:

1."CC ="如果原檔所用的compiler並不是我們系統的,這才要改。

2.本系統是否有安裝Berkerlay 的New database?如果有,跳過本點,到第3點。 如果沒有

(如:一般SunOS 都沒有裝),那麽請修改這幾 行(下面以Makefile.SunOS爲例,但其他系統也類似):

A.在 DBMDEF= -DNDBM -DNEWDB -DNIS 一行,請改成: DBMDEF= -DNDBM -DNIS (即去掉-DNEWDB)

B.把這兩行REMARK起來: INCDIRS=-I/usr/sww/include/db # INCDIRS=-I/usr/sww/include/db

LIBDIRS=-L/usr/sww/lib # LIBDIRS=-L/usr/sww/lib

C.修改LIBS= -ldb -ldbm -lresolv 這一行成: LIBS= -ldbm -lresolv (即去掉-db )

3.把nroff 的"-mandoc "參數改成一般系統可以接受的 "-man"(當然,這得依你的系統而定,

如果你是用groff,那就可以很愉快的直接使用,不必改這個參數:)。如果不改也並不會影響

sendmail的安裝,只是不能看到格式化後的sendmail相關文件罷了。

關于DIRECTORY PERMISSIONS的問題你需要執行2條命令:

chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

許多系統的spool目錄使用/usr/spool來代替/var/spool,設置別名的etc/mail取而代之的是/etc,

如果你要在sendmail.cf設置RunAsUser許選項,/var/spool/mqueue這個目錄需要RunAsUser 用戶的權利,ok,這時開始編譯Sendmail,執行這條命令

sendmail -v -bi

這時,開始初始化alias database. 如果它顯示:

WARNING: writable directory /etc

WARNING: writable directory /usr/spool/mqueue

那麽這個目錄列出了不適當的寫特權,應該避免多方面的的安全攻擊。

Sendmail對一般的系統管理者而言,往往是個不敢入手的「禁區」 ,因爲絕大多數系統的使用者對E-Mail的需求與依賴的程度之高,可說是稍有分毫差錯,系統管理者就要准備接受如雪片般飛來的抗議與 抱怨!而Sendmail這個東東的「內函」,似乎又有點不太容易理解: 與設定有關的sendmail.cf 檔,如果不是下過一番死功夫,則讀起來如同讀天書一樣,只知道裏面有英文字與數字!所以一般人總是能不 動則不動,只要能用就好。不過,很不幸的,一般跟著機器而來的sendmail總是有著令人心驚膽跳的「附加功能」,就是常常都有一些可以讓無聊人士作爲侵入路徑的BUG 或後門,某些BUG 還可以讓侵入 者經由Sendmail而取得最高權限的root!一旦root權限被人拿走了, 那麽這機器就可被人任意屠宰,最惡劣的,還可能破壞系統!   Sun 在國內的使用人口相當的多,筆者對Sun 也稍微比較熟悉一點。不過,Sun 的Sendmail卻是令人頗不敢恭維的,幾乎可以說:只要還在使用Sun 的Sendmail而沒有「常常」patch 的話,那甚麽系統安全都不必談了,談了也是白談;如果還在使用Sun 的Sendmail,那就如果系統抱著一顆不定時炸彈,隨時一個不注意,都可能引爆:(。這一點,大家可以翻一翻CERT或8lgm看一看,幾乎是只要有sendmail 的問題,Sun 大多跑了....。其他系統的Sendmail也不要偷笑,雖然大家的出場率沒有Sun 高,可是也常會問題的。 另一方面,Sendmail 8.6.9與之前的版本最近剛發現有個ident方面的Bug 。如果方便的話,請大家務必換成最新版。如果不方便的話,在v8.6.5之後的版本有個克難式的補救法,即在sendmail.cf 加入這麽一行:   Orident=0   表示不作ident 的檢查。   v8.6.5之前的版本就一定要換成最新版。   本軟體在系統安全方面,是目前評價最高的,目前已知的BUG都已經改好了,最主要的原因,當然是要感謝作者Eric Allman ,他(或他們)能作到一發現重大的Bug (如系統安裝)就立刻出新版。本軟體是一public domain ,可以在網路上各ftp server上找到其source code。由於該軟體的發展者把一些必要的設定步驟自動化了,所以,其實安裝這個軟體並不是想像中那麽樣的困難。如果連compile 的時間也算下去,順利的話,不用半個小時就可以安裝完畢!   3.1 下載Sendmail最新版本    最新版本的Sendmail可以從 ftp://ftp.sendmail.org/pub/sendmail/ 得到!   如 sendmail.8.9.3.tar.gz 這是截止到文章發布的最新版本,size:1068290byte   有關最新版本的發布,請浏覽Sendmail的主頁 http://www.sendmail.org   3.2 安裝Sendmail    用root登陸或su成root後,先把tar.gz的包解開tar fvxz sendmail.8.9.3.tar.gz,用make -f 開始編譯   編譯完成後系統會産生系統設定文件,也就是sendmail.cf (一般這個文件都存放在/etc下)   接下來,這按幾步繼續安裝: (注:~/sendmail爲解開後的sendmail目錄)   1.請切換至設定檔目錄~/sendmail/cf/cf 之下。找一個合適自己系統的XXXX.mc檔。筆者一般上是使用tcpproto.mc 這一個不用uucp的檔。如果是用tcpproto.mc 這個檔,筆者在solaris 2.3 試了,得記得在檔中要加上一行:   OSTYPE(solaris2)   Sun 4.1.3 不必,其他系統就不曉得了。在目錄 ~/sendmail/cf/ostype下有幾個OSTYPE()可以的 檔,只有這個目錄有資料的才可能能夠OSTYPE()。還有, 如果是 system V的/bin/mail,似乎就得要加OSTYPE()。   一句老話,詳情請看DOCUMENT:~/sendmail/cf/README。這希望有經驗的朋友能夠補充:)   如果不小心忘了加上OSTYPE()會怎樣?也不會怎樣,只會有"unknow mailer error" 的錯誤,然後信收不到。   有一點要提醒大家的,就是:在~/sendmail/cf/cf 所看到的各種系統的.mc 檔,都是Sendmail 8.6.x的作者Eric Allman 「演示」給大家看的,所以,可以看到檔名都有個"cs",要是沒有修改就用這些檔的話,那一定會發生錯誤的。而要修改,有相當多地方要改,所以,如筆者一般懶的人,用tcpproto.mc 還是比較簡單又不會出錯:)   2.好,選定了某一個合意的.mc 檔,那接下來可執行m4産生.cf 檔。請下指令:   # m4 XXX.mc YYY.cf 如果是sun 4.1.3 ,可能系統會抱怨m4的版本太舊了。那請試一試用:   # /usr/5bin/m4 XXX.mc YYY.cf   要是還是不行,那就請去抓新版的m4回來compile (可以在 http://www.gnu.org 找到gnu 的m4)。   這個步驟是要把compile好的files, install 到系統上去了。   羅嗦的我還是得再一次提醒您看看:把舊檔案備份好了嗎?   好,假設compile 的結果非常沒挑戰性的沒有任何錯誤,産生.cf 檔過程也沒有甚麽值得注意的訊息。所産生的.cf 檔 也改好了。而且最重要的:作好舊檔的備份(不是我要嚇人,這是以防萬一)。   1.挑個老板沒有在用mail的時間,快手快腳的切換至目錄~/sendmail/src ,下指令:   # make -f Makefile.XXX install   系統會把compile出來的~/sendmail/src/sendmail與man document拷貝到它們該有的目錄(所以你還如果沒有備份/usr/lib/sendmail ,那趕快祈禱待回不要出問題,要不然就趕快准備淚水哭吧!   因爲舊的會被compile 出來的sendmail覆蓋)   2.切換至目錄~/sendmail/cf/cf ,把産生出來的YYY.cf檔拷貝到本系統sendmail.cf 應該在的地方,   如:/etc或 /etc/mail 。   3.把舊sendmail daemon 的process 殺掉。(這應該不用我羅嗦吧!用ps -ax |grep sendmail |grep -v grep 找出舊daemon的process(或head -1 /etc/sendmail.pid 或 head -1 /etc/mail/sendmail.pid),   然後用 kill -9 processID幹掉它(或直接用 kill -9 `head -1 /etc/sendmail.pid`)。   4.啓動新daemon。例如下指令:   /usr/lib/sendmail -bd -q30m   當然,保守一點,看舊的daemon怎麽跑,照舊的來下參數應該是沒有問題。   這時,初步安裝就已經完成了,接下來請看設置sendmail   3.3安裝Sendmail注意事項   如果安裝不成功,請參考下面的問題:   用vi或任一種編輯器,編輯的makefile檔,作一點點 必要的修改。所要修改的地方不多,下面是可能要修改的地方:   1."CC ="如果原檔所用的compiler並不是我們系統的,這才要改。   2.本系統是否有安裝Berkerlay 的New database?如果有,跳過本點,到第3點。 如果沒有   (如:一般SunOS 都沒有裝),那麽請修改這幾 行(下面以Makefile.SunOS爲例,但其他系統也類似):   A.在 DBMDEF= -DNDBM -DNEWDB -DNIS 一行,請改成: DBMDEF= -DNDBM -DNIS (即去掉-DNEWDB)   B.把這兩行REMARK起來: INCDIRS=-I/usr/sww/include/db # INCDIRS=-I/usr/sww/include/db    LIBDIRS=-L/usr/sww/lib # LIBDIRS=-L/usr/sww/lib   C.修改LIBS= -ldb -ldbm -lresolv 這一行成: LIBS= -ldbm -lresolv (即去掉-db )   3.把nroff 的"-mandoc "參數改成一般系統可以接受的 "-man"(當然,這得依你的系統而定,   如果你是用groff,那就可以很愉快的直接使用,不必改這個參數:)。如果不改也並不會影響   sendmail的安裝,只是不能看到格式化後的sendmail相關文件罷了。   關于DIRECTORY PERMISSIONS的問題你需要執行2條命令:   chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue   chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue    許多系統的spool目錄使用/usr/spool來代替/var/spool,設置別名的etc/mail取而代之的是/etc,   如果你要在sendmail.cf設置RunAsUser許選項,/var/spool/mqueue這個目錄需要RunAsUser 用戶的權利,ok,這時開始編譯Sendmail,執行這條命令   sendmail -v -bi   這時,開始初始化alias database. 如果它顯示:   WARNING: writable directory /etc   WARNING: writable directory /usr/spool/mqueue   那麽這個目錄列出了不適當的寫特權,應該避免多方面的的安全攻擊。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有