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

首頁 > 應用技術 > Sendmail > 正文
Sendmail 管理
不詳 (2001-05-02 03:26:18)
# 版權宣告: 1999 Copyright OLS3 All rights reserved.

# 作者: OLS3 (臥龍小三)
# 本講義僅供台南縣 87 學年度網路管理進階研習班上課之用.
# 學員可保存一份自用, 供日後網管時參考備查.
# 作者保有一切形式的著作權.
# 欲作其它用途者, 需經作者授權同意.
# 未經作者授權同意之前, 請勿轉載刊登.

Sendmail 的設定

一. 8.8.x 版本的設法

RedHat 安裝完成之後, sendmail 已大致上就緒, 只要再加點修改, 便可以開始運作.

對於 Mail Server 而言, 最重要的工作是:

能正常送信收信. 
避免當垃圾信件的中繼站. 
避免 root 被 mail bomb 攻擊. 
第 1 個目標應該沒問題, 以下將針對第 2 和第 3 個目標進行說明.

◎ 防止 SPAM 的幾個主要的設定檔都在 /etc/mail 目錄中.

共有幾個重要的檔案, 您必須以 root 身份來修改才行.

deny   記錄哪些郵址將被拒絕收件, 格式如下
郵件位址   錯誤代碼   錯誤訊息
mskuo@ms9.hinet.net  550  REJECT
     
      修改之後, 需作成 deny.db 資料庫檔, 才能生效. 
     
ip_allow   哪些 ip 位址的機器可以使用本機來 relay您可以將貴校 domain IP 放進來, 例如:
163.26.167第四位數字不加, 表示 167 這個 C class 的所有 IP 機器都可以用這部 mail server 來 relay 信件.
通常設這個檔案會比較方便且安全!!! 
 
  原文: file containing IP numbers of machines which can use our relay
設了 ip, 則不管那個網域都能 relay to !!
 
name_allow  哪些網域名稱可以使用本機來 relay?! 

原文: file containing names of machines which can use our relay
若是設網址, 即 relay_allow 也要設定那些網域可以被允許送件過去!!
 
relay_allow  哪些機器或網域允許由本機來送達?!

  原文: file containing names we relay to      


◎ 修改 deny 檔之後, 如何作成 deny.db 檔呢? 方法如下:

makemap  hash   deny      < /etc/mail/deny
指令  資料檔型態 資料庫檔名 原始ASCII設定檔名

請 man 一下 makemap 指令, 大略看一下其說明.

◎ 上述四個檔案修改之後, 必須先停止 sendmail 的運作(stop), 再重新啟動 sendmail(start), 如此修改才會生效. Sendmail 若只是下 kill -HUP pid , 是不行的喔! 

操作的方法如下:

/etc/rc.d/init.d/sendmail stop
此時, 會出現 sendmail 停止運作的訊息.

/etc/rc.d/init.d/sendmail start
此時, 會出現 sendmail 重新啟動的訊息. 

於是, 剛剛的修改正式生效.
您可以開始發幾封 email 來測試一下, 是否能照您設限的方式運作?!

◎ 修改 /etc/aliases, 以防止 root 帳號被人用 Mail bomb 攻擊.

1. 增加一位僅具普通權限的 user, 如 rletter. 此 user 受 quota 的限制.

2. 在 /etc/aliases 中加入:

root:   rletter

則 mail 給 root 的 email 都會轉給 rletter, 因為 rletter 是普通 user, 受 quota 的限制, 所以 root 便不怕被人用巨量的 mail bomb 攻擊.

修改完 /etc/aliases 之後, 記得要執行一次 newaliases.

以下是 mail 給 root 的情形, 但卻是由 rletter 收的 head 表:

Return-Path: 
Received: from win95.ols3.com.tw ([203.68.102.145])
by test3.tnc.edu.tw (8.8.7/8.8.7) with SMTP id VAA03296
for ; Thu, 15 Jul 1999 21:19:46 +0800
Message-ID: <002301becec5$4e97c140$0236a8c0@ols3.com.tw>
From: "webmaster" 
To: 
Subject: test aliases
Date: Thu, 15 Jul 1999 21:23:56 +0800
MIME-Version: 1.0
Content-Type: text/plain;
charset="big5"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
Status:   

以下是被拒絕收信的情形:
The original message was received at Thu, 15 Jul 1999 20:38:07 +0800 (CST)
from h150.s188.ts32.hinet.net [163.32.188.150]

   ----- The following addresses had permanent fatal errors -----


   ----- Transcript of session follows -----
... while talking to test3.tnc.edu.tw.:
>>> MAIL From: SIZE=158 BODY=8BITMIME
<<< 550 ... REJECT  (這就是您在 /etc/deny 中設定的)
   ^^^^^                        ^^^^^^^^
554 ... Service unavailable

   ----- Original message follows -----

Return-Path: 
Received: from win95.ols3.com.tw (h150.s188.ts32.hinet.net [163.32.188.150])
by ms9.hinet.net (8.8.8/8.8.8) with SMTP id UAA13416
for ; Thu, 15 Jul 1999 20:38:07 +0800 (CST)
Message-ID: <001301becebe$21d26fe0$0236a8c0@ols3.com.tw>
From: "OLS3" 
To: 
Subject: test
Date: Thu, 15 Jul 1999 20:32:36 +0800
MIME-Version: 1.0
Content-Type: text/plain;
charset="big5"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211

test deny.db 的功用.

OLS3



二. 8.9.1 及 8.9.2 的設定:

 

三. 8.9.3 版本的設定:

控制檔:

8.9.3 的設定檔有點不同: 主要控制檔是 /etc/mail/access.

設定方法:

這個版本預設值是不 relay 任何信件的. 因此, 您應該將自己的網址加入 /etc/mail/access 這個檔案.

把允許經由你這台主機 relay 的 domain 設定進去即可.

格式如下:

domain      RELAY

例:

jmjh.tnc.edu.tw   RELAY

那麼 jmjh.tnc.edu.tw 這個網域主機即可使用本機來 relay 信件.

若欲明確拒絕某一個網域的信件, 可以採用以下方式:

foo.com.tw     REJECT

或 

foo.com.tw     550 We do not relay messages for you

設定完之後, 必須將 access 的設定內容轉成資料庫檔才能使設定生效.

方法如下:

在 /etc/mail 目錄中執行 make
它會將 ASCII 的設定內容轉成 database 格式, 控 sendmail 讀取.

當你執行 make 時, 其實, 它是按 Makefile 中的規則來處理的, 我們來看一下它的內容:

all: virtusertable.db access.db domaintable.db mailertable.db

%.db : %
@makemap hash $@ < $<


clean:
@rm -f *.db *~

當設定檔的時間日期比資料檔還要新時(表示設定檔有改變了), 才會產生新的資料檔.


例子: 

relay test 信件內容 , 紅色數字編號表示解讀信件傳遞的過程)

Return-Path: 
Received: from hacker.ols3.com.tw (hacker.ols3.com.tw [192.168.54.88])
(4. 由 hacker 這台主機送信過來)
by ols3-note.ols3.com.tw (8.9.3/8.9.3) with ESMTP id LAA00648
(5. 由 ols3-note 這台主機收取)
for ; Sun, 18 Jul 1999 11:52:55 +0800
(6. 由 ols3@ols3-note.ols3.com.tw 這個人收到了)
Received: from win95.ols3.com.tw (win95.ols3.com.tw [192.168.54.2])
(1. 這封信是由 win95.ols3.com.tw 發出的)
by hacker.ols3.com.tw (8.9.3/8.9.3) with SMTP id LAA00982
(2.這封信由 hacker 這台主機收取)
for ; Sun, 18 Jul 1999 11:43:47 +0800
(3.這封信的收信人)
Message-ID: <005001bed0cf$1b97e660$0236a8c0@ols3.com.tw>
From: "OLS3" 
To: 
Subject: tst
Date: Sun, 18 Jul 1999 11:39:05 +0800
Organization: 
MIME-Version: 1.0
Content-Type: text/plain;
charset="big5"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
Status:

 

安全問題: 如何作匿名信件?

一位網管人員, 應該要知道最基本的搞怪技巧, 如此, 才能魔高一尺, 道高一丈.

方法如下:

1. 先 telnet 到某一台有跑 sendmail 主機, 並指定連上 port 號 25

telnet hacker.ols3.com.tw 25

該主機會回應自己的 hostname 及所使用的協定. 如下所示:

220 hacker.ols3.com.tw ESMTP Sendmail 8.9.3/8.9.3; Sun, 18 Jul 1999 15:37:13 +08 00

hacker 這台主機回應說它現在正跑 ESMTP (SMTP 的加強版), sendmail 的版本是 8.9.3

2. 偽造自己的 domain

helo fool.com.tw

該主機會回應歡迎的訊息, 如下所示:

250 hacker.ols3.com.tw Hello [192.168.54.4], pleased to me et you 

3. 偽造發信人

mail from: jack@fool.com.tw

該主機會回應以下訊息, 表示發信人的位址被接受了.

250 jack@fool.com.tw... Sender ok

4. 指定收信人

rcpt to: ols3@hacker.ols3.com.tw

該主機會回應以下訊息, 表示收信人的位址被接受了.

250 ols3@hacker.ols3.com.tw... Recipient ok

5. 送出信件內容

送出信件內容之前, 應先通知對方:

data

該主機回應如下, 表示你可以開始送出信件內容, 信件結束時用 . 號檔結尾符號

354 Enter mail, end with "." on a line by itself

Hi, this is a email test ...
.

該主機回應:

250 PAA01122 Message accepted for delivery

表示信件件已被接收了.

6. 離線

quit

 

以下是這封信的表頭:

Return-Path: 
Received: from fool.com.tw (ols3-note.ols3.com.tw [192.168.54.4])
             ︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿
by hacker.ols3.com.tw (8.9.3/8.9.3) with SMTP id PAA01122
for ols3; Sun, 18 Jul 1999 15:46:01 +0800
Date: Sun, 18 Jul 1999 15:46:01 +0800
From: jack@fool.com.tw
Message-Id: <199907180746.PAA01122@hacker.ols3.com.tw>
Status:   

雖然寄信人可以偽造, 但 sendmail 還是會在 header 中記錄下連線當時的主機IP,因此, 
通常欲寄匿名信的人, 不會真的用他登錄上線的那台機器, 他會找一台中繼站台來當替死鬼.


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章

======
 

★  樊強制作 歡迎分享  ★