跟隨 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%