跟隨 FreeBSD 套裝而來的 sendmail 設定是適合那些直接連上網際網路 的站台。想透過 UUCP 交換郵件的站台必須另外安裝 sendmil 的設定檔 案。
手動修改 /etc/sendmail.cf
是絕對必要的。第 8 版的
sendmail 提供一個全新的入口以透過一些像 m4 的處理就能
產生設定檔,這事實上是一個高層概念等級的技巧性設定。你應該可以在以
下檔案裡使用它:
/usr/src/usr.sbin/sendmail/cf
假如你不是用 full sources 方式安裝系統,那麼 sendmail 設定項目可 能已經分散成好幾個來源分布檔在等著你,假設你已經 mount 光碟機,做 以下動作:
cd /usr/src tar -xvzf /cdrom/dists/src/ssmailcf.aa
別驚慌,這只有數十萬個位元組的大小。在 cf
目錄裡的
README
可以提供一個 m4 設定法的基本介紹。
以 UUCP 遞送來說,建議你最好使用 mailertable 特點。 建構一個資料庫讓 sendmail 可以使用它自己的路徑決策。
首先,你必須建立自己的 .mc
檔。
/usr/src/usr.sbin/sendmail/cf/cf
目錄是這些檔案的家。
查看一下,已經有好幾個範例檔,假設你已經命名自己的檔叫
foo.mc
,你要做的只是把它轉換成一個有效的
sendmail.cf
:
cd /usr/src/usr.sbin/sendmail/cf/cf make foo.cf cp foo.cf /etc/sendmail.cf
一個典型的 .mc
檔看起來可能像這樣:
include(`../m4/cf.m4') VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable) define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP
nodns 和 nocanonify 特性將避免任何在遞送郵件 時會用到 DNS 的機會。UUCP_RELAY 項目的出現理由很奇怪, 就不要問為何了。簡單的放入一個網際網路上可以處理 .UUCP 虛擬網域 位址的主機名稱;通常,你只需要在這裡填入你 ISP 的信件回覆處 (mail replay)。
你已經做到這裡了,你還需要這個叫 /etc/mailertable
的
檔案。一個典型的範例如下:
# # makemap hash /etc/mailertable.db < /etc/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom:sax
如你所見,這是某個真實檔案裡的一部份。首三行處理網域定址信件
不應該被送出到內定路徑,而由某些 UUCP 鄰居(UUCP neighbor)取代
的特殊情形,這是為了``縮短''遞送的路徑。下一行處理到本地乙太
網路網域的信件讓它可以使用 SMTP 來遞送。最後,UUCP 鄰居提到
.UUCP 虛擬網域的記載,允許一個``uucp-neighbor!recipient''推翻內定規則。最後一行則以一
個單獨的句點做結束,以 UUCP 遞送到提供當你全世界性郵件閘門的
UUCP 鄰居。所有在 uucp-dom:
關鍵字裡的節點名稱必須都是
有效的 UUCP 鄰居,你可以用 uuname
命令去確認。
提醒你這個檔案在使用前必須被轉換成 DBM 資料庫檔案,最好在 mailertable 最上面用註解寫出命令列來完成這個工作。當你每次更換你 的 mailertable 後你總是需要執行這個命令。
最後提示:如果你不確定某些特定的信件路徑可用,記得把 -bt
選項加到 sendmail。這會將 sendmail 啟動在 address test mode
;只要按下 ``0'',接著輸入你希望測試的信件路徑位址。最後一行告訴你使
用內部的信件代理程式,代理程式的會通知目的主機,以及(可能轉換的)位址
。要離開此模式請按 Control-D。
j@uriah 191% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 foo@interface-business.de rewrite: ruleset 0 input: foo @ interface-business . de ... rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \ < @ interface-business . de > > ^D j@uriah 192%