Sendmail 設定一文的建議
 
自從 Sendmail 一文公告之後,接到 網中人 ( netman ) 大哥與小州前輩 ( kenduest ) 的一些建議,這些建議都相當的棒喔!導正了鳥哥不少的觀念與語法說明上面的問題!茲將這些建議原文給他貼上來,以提供大家參考用喔!感謝 netman 與 kenduest 兄喔!
 

來自 netman 的建議 ( 2003/02/24 )
  1. MDA ( Mail Delivery Agent ) : 『郵件遞送代理人』主要的功能就是將 MTA 所收受的本機信件,放置到本機帳戶下的郵件檔案中 ( Mailbox )!

  2. 請注意:MDA 不限指 local ,也由 smtp/esmtp 及 uucp 或專門寫的 MDA 。而光是 local 也不是只有 procmail 可用...
     
  3. 例如,當我的 tsai.adsldns.org 收到一封給 vbird@tsai.adsldns.org 的郵件,那麼我的 tsai.adsldns.org 這部主機,會立刻將該封郵件存放到 /var/spool/mail/vbird 裡面去,而不過問這封郵件的來源。

  4. 這是有條件的,比方說,在 access.db 中有設 REJECT 或 DISCARD 。當然,若有設 ORDB 之類的,也會影響這邊的寫入。
     
  5. 如果這封郵件的『信件收件者』並沒有 MTA 本身的用戶帳號時,那麼 MTA 會開始去檢查 /etc/mail/access.db 這個資料庫裡面,

  6. 不是如此,應是跟據 Class W 來判斷是否 lcoal 。而 Class W 可指接用 CW 來指定,也可用 FW 來指定。若為 FW ,那一般在 /etc/mail/local-host-names 內。一但被認為是 local 才看 user 。而 user 在從 system 或 database(或 LDAP 之類) 中判斷之前,還會參考 virtusertable, aliase 之類的 rewrite 規則。若判斷為 local ,則再看 .forward 來作 rewrite 。若都失敗,以 user not found 為由退信。
     
  7. 暫時看到這裡,其它日後補充。

來自小州兄的建議 ( 2003/02/25 )
作者: kenduest (小州) 看板: Linux
標題: Re: Sendmail 的完整安裝與設定技巧出爐了
時間: Tue Feb 25 01:23:58 2003

※ 引述《VBird.bbs@bbs.csie.ncku.edu.tw (鳥哥)》之銘言:
> 大家好:
> 經過了幾個禮拜的奮鬥與努力之後,終於將 Sendmail 的簡易設定搞定了!
> http://linux.vbird.org/linux_server/0380sendmail.php
> 在這篇文章裡面,包含了簡單的 mail server 運作流程與原理,
> 使用 sendmail 應該要注意的事項,
> 簡略的 procmail 使用與設定,
> 測試 Open Relay 以及 Open Relay 黑名單資料庫的應用,
> 以及 SMTP 郵件認證這個大家有興趣的東西,
> 都包含在裡面!與其他文章比較不相同的地方在於,
> 我使用的是較新版的 Cyrus SASL ( 2.xx 版本 ),
> 這個版本與其他的 1.5 比較不一樣,因為他的認證的程式改變了,
> 所以設定時,需要特別留意喔!
> 請大家多多指教囉! ^_^

  Hi.. 不錯的網頁內容 :>

  不過有些內容建議如下:

  1. 幾乎所有 linux dist 都會納入 sendmail,不過像是 mandrake 預設
     是安裝 postifx 而不是 sendmail,但是 sendmail 還是有納入 dist。

  2. "若有 mx 標誌,那麼這封 e-mail 將會把信先送到該 mx 主機,然後再由該
      mx 主機將信件送達目地"。這句話怪怪的,因為 mx 紀錄可以有很多筆
      紀錄外,mx 紀錄指向的主機也可能就是目的 mail 實際主機。

  3. 使用協定部份,收信一般常用 pop3,但是 imap 使用的也不少,這兩個
     都可以用於收信使用。

  4. "所以我們知道了!一部成功的 MTA ( 不考慮 Web 介面的郵件主機 )
      至少需要兩個協定,分別是 SMTP 與 POP3"。其中 "一台成功的 MTA"
      這句話很奇怪。也許可以改成通常一台提供收發信件的郵件主機都需要提供
      SMTP 與 POP3 服務協定。

  5. "在 MTA 當中加入需要檢查發信者的『帳號與密碼』比對的功能,如果帳號與
      密碼比對正確,則幫忙轉信,如果比對不正確則將該封信件退回原發送站"。

      auth smtp 部份內,連線至 mail server port 25 時會進行驗證動作,若是
      驗證成功接下來會進行 MAIL FROM、RCPT TO、DATA 送出相關信件內容。

      若是驗證失敗,那在 MUA 這端就可以直接看到錯誤訊息,而不是信件送出去
      後再把信件退回原發送站 :)

  6. 所謂 auth smtp,是說當 client 通過驗證後,mta 會願意幫忙該 client
     連線端提供 mail relay 功能。所以說,並不是使用 auth smtp 後不用開
     relay 功能,而應該是開放允許通過驗證的連線端能夠提供 relay 服務。

  7. imap package 有提供 imap 與 pop3 相關程式,這個也許可以說明一下。

  8. /etc/mail/local-host-names 檔案說明內,有一段內容寫錯了。
     "那麼是否每個主機名稱做為寄信來源(From)時, sendmail 都能接受呢"。
     這個應該是 "收信目的 (To)",因為是要寄給這台上面的使用者。

     "沒有寫入這個檔案的『你的主機名稱』,則你將無法使用該主機名稱來寄信",
     這應該是說那信件將無法正確寄達至這台機器上。

     bbs.sayya.org、kenduest.sayya.org、info.sayya.org、
     kenduest.math.nctu.edu.tw 這些主機 ip 都是相同的,也就是指向同一台
     機器上。假設這台主機名稱預設為 kenduest.math.nctu.edu.tw,那預設
     情況寄給 userid@kenduest.math.nctu.edu.tw 都 ok,但是寄給
     userid@bbs.sayya.org、userid@info.sayya.org 都會出現錯誤。

     其中原因是因為沒有告訴 mta 除了 kenduest.math.nctu.edu.tw 這個
     主機名稱外,還有 bbs.sayya.org、kenduest.sayya.org、info.sayya.org
     都是指向這台主機上。所以寄給 userid@bbs.sayya.org 會出現錯誤,
     通常就是 mail loop to me,要不然就是不允許 relay 的錯誤情況。

  9. Sendmail 的執行檔部份,/usr/sbin/ipop3d 這與 sendmail 無關,因為
     sendmail 只是 mta,not pop3 daemon。

     另外 m4 應該不算是 sendmail 的執行檔案之一,因為該程式主要是將
     sendmail 提供的 m4 巨集檔案讀入產生最後 sendmail 要使用的 .cf 設定檔案。

     還有就是,其實最新版本 sendmail 設定檔案有分 sendmail.cf 與 submit.cf,
     目錄除了 /var/spool/mqueue 外還有 /var/spool/clientqueue。

     有興趣可以先閱讀:

     http://www.sendmail.org/~ca/email/doc8.12/SECURITY

  10. "Red Hat 7.xx 版本中,為了杜絕廣告信件的問題,所以在預設的情況下,
       您的 sendmail 將『只會監聽 127.0.0.1"。聽說主要原因是安全性等考量,
       所以預設只有 listen lo interface 讓內部信件處理可以 work 即可,
       需要接收來自 internet 信件需要另外打開。

  11. access 檔案設定內,sendmail 8.10 後已經支援另外的 keywork,包含
      connect、from、to 的設定。

      from:test@your-domain.com.tw  REJECT
      to: blah@your-domain.com.tw   REJECT

      這樣子提供判定功能會比較詳細清楚。另外請建議一下兩端要使用
      TAB 隔開才正確 :>

  12. ~/.forward 檔案部份...

      1) 該檔案所在使用者家目錄權限,其 group、other 不可以有寫入權限。
      2) .forward 檔案權限,其 group、other 不可以有寫入權限。

  13. Linux 下使用 telnet 功能,在 MAIL FROM、RCPT TO 內,後面接的
      項目若是 e-mail 的話,應該使用 "< >" 包起來,這樣子才正確。

      MAIL FROM: kenduest<kenduest.bbs@bbs.sayya.org>
      MAIL FROM: "Kenduest Lee"<kenduest@info.sayya.org>

      另外許多 mta 目前都會限制再使用 MAIL FROM 時要先使用 HELO
      或者是 EHLO 先打招呼過,要不然會不允許進行下面溝通。

      HELO localhost

  就這樣子,大家互相討論囉 :>

--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

   現代人普遍的現象:  「小學而大遺」、「捨本而逐末」
                      「以偏而概全」、「因噎而廢食」
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: kendlee.sayya.org
※ X-Info: kenduest -> VBird.bbs@bbs.csie.ncku.edu.tw
※ X-Sign: 0V5KLABtqWNvUlEGj25M (03/02/25  1:24:27 )

Sendmail 設定一文的建議