Frequently Asked Questions for FreeBSD 2.X : 系統管理 : 我該如何使用 sendmail 透過 UUCP 來遞送郵件?
Previous: FreeBSD 支援 System V IPC 格式指令集?
Next: 當我用撥接連上網路時該怎麼設定信件遞送?

8.18. 我該如何使用 sendmail 透過 UUCP 來遞送郵件?

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

nodnsnocanonify 特性將避免任何在遞送郵件 時會用到 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%
      


Frequently Asked Questions for FreeBSD 2.X : 系統管理 : 我該如何使用 sendmail 透過 UUCP 來遞送郵件?
Previous: FreeBSD 支援 System V IPC 格式指令集?
Next: 當我用撥接連上網路時該怎麼設定信件遞送?