小州 撰寫於文章 <3YWGR0$3Pm@bbs.cynix.com.tw>...
>※ 引述《li3356@hello.com.tw (Josph)》之銘言:
>> 在sendmail.cf裡加上DMdomain這一行好像不行呢?
>
> 怎樣不行法? 錯誤訊息是什麼?
請說清楚一點好嗎?
>
>> 這樣的話,在dns裡要如何設定?
>
> 對不起,DNS
設定超出來弟所知道的範圍,所以要請其他人來幫你忙。
DNS
我也不是很明白﹐故且就所知的和大家討論一下﹐如果有錯誤務請指正﹕
在 Oreilly 那本“Send mail”裡面﹐已經指出一點﹕盡管您已經為
domain 設定好
MX 記錄﹐但嚴格來說﹐還應該為 domain 的每一台主機設定 MX
記錄。
比如﹐我要設定一個 Net ID 為 192.168.0.0 ﹐叫做 test.domain 的 DNS
﹐在 SOA
後面﹐您通常都會為該 zone 設定好 NS 和 MX 記錄的﹕
IN NS ns1.test.domain.
IN NS ns2.test.domain.
IN NS ns.dr.domain.
然後您可以直接將 MX 記錄寫好﹐不過﹐也可以專門用 domain
名稱來指定﹕
test.domain. IN A
192.168.0.1
IN MX 10 mail1.test.domain.
IN MX 20 mail2.test.domain.
IN MX 30 mail.dr.domain.
如果您這裡為這個 domain name 指定一個 A 記錄﹐那麼當您 ping
這個 domain 的時
候﹐就會回應那個 IP﹐而未必就是 mail server
﹐除非那台主機同時也是 mail
server 啦。(不過﹐有一個有趣現象是﹕我試過用 Net ID 來做 A
記錄﹐當 ping 這
個 domain 的時候﹐會分別輪流重複的回應所有 online 的主機 IP﹐但
Windows 98
和 虛擬 IP 則不會回應﹐也不知道是什麼原因呢﹖﹖﹖)
然後﹐您還要分別為各主機指定 MX 記錄﹕
ns1 IN A 192.168.0.1
IN MX
10 mail1.test.domain.
IN MX
20 mail2.test.domain.
ns2 IN A 192.168.0.2
IN MX
10 mail1.test.domain.
IN MX
20 mail2.test.domain.
mail1 IN A 192.168.0.3
IN MX
0 mail1.test.domain.
IN MX
10 mail2.test.domain.
mail2 IN A 192.168.0.4
IN MX
0 mail2.test.domain.
IN MX
10 mail1.test.domain.
您或許會用“0”作為偏愛值來設定當 MX
指向自己的時候。因為 MX 偏愛值越底﹐越
有優先權處。當設為 0
的時候﹐就確保郵件傳給自己的時候﹐會被自己處理﹐除非您
想郵件交由別的機器處理。
當郵件系統通過 DNS 來查詢該 domain
的郵件交換記錄的時候﹐如果 @ 後面是以
test.domain 結尾而沒有帶主機名稱的話﹐DNS 回先回應 zone
的最低偏愛值的 MX 記
錄﹐然後會再查詢 zone MX 所指定的主機﹐如果該主機沒有 MX
記錄的話﹐會以 zone
MX 為依據﹐然後又回到這主機去﹐這通常會出現 MX loop back
的錯誤信息。
如果通過 MX
查詢的第一台主機由於故障或其它原因未能作出回應﹐則會轉向查詢下一
個 MX 偏愛值﹐其工作過程和前一個一樣。假如故障是整個
domain 的問題﹐這樣您所
指定的 MX 各主機也應該沒有什麼作用了。作為 disater recovery
的考量﹐還應該設
定一個 MX 記錄指向別的 domain 。當然﹐別的 domain
也應該會設定好他們的 DNS
和 MX 記錄﹐這需要雙方的管理員要建立良好的溝通渠道。
不過﹐我們要注意一點是﹕ DNS 僅提供 name resolving
而已﹐其本身並不參與郵件
交換的﹐換一句話說﹕ DNS 把 IP 回應給發出查詢的 mail server
後就不管了。然後
mail server 會通過 IP 渠道找到目的 mail server ﹐再通過 smtp (也可以用其它
protocol 哦) 來進行交談﹐如果對方的 mail server 沒設定好 Cw 或
sendmail.cw
(這是用來管理別名的)﹐那麼它並不認知到除了本身主機名稱以外的其它名稱﹐這樣就
會拒絕收信了。所以您要將您的 domain name 加到 Cw 或 sendmail.cw
去才可以成功
接收該 domain 的郵件。
而 DM這個 class
呢﹐則是用來改寫傳出郵件的回郵地址﹐也就是確保 @
後面會用
domain name 來結尾而不是 host name
結尾。這點我還是前不久偷小州的師學來的呢
~~~ 哈哈﹐很好用啦﹐以前我只知道用 genericstable
來做﹐實在有的捨近求遠了。
謝謝小州兄﹗
郵件系統和 DNS
系統可以說是最常合作的夥伴了﹐而且﹐這兩個系統都不容易設得
好。小弟不才﹐用自己的實作經驗把一些步驟寫在 http://go.to/study-area
“學習
Linux”上面去了﹐同時﹐關於 DNS 的簡淺原理寫在“網路基礎”中。假如閣下有興趣
一起探討一下﹐可以先到這個網站看看﹐然後歡迎隨時來信和我討論﹐也極希望指正錯
誤之處﹐以免誤導後來的讀者了。