Frequently Asked Questions for FreeBSD 2.X : 系統管理 : 當我用撥接連上網路時該怎麼設定信件遞送?
Previous: 我該如何使用 sendmail 透過 UUCP 來遞送郵件?
Next: 咦!我忘記 root 的密碼了!

8.19. 當我用撥接連上網路時該怎麼設定信件遞送?

如果你已經有一個固定的 IP 數字,你不需要調整任何內定值。設好 你要指定的網路名稱,其他的 sendmail 都會幫你做完。

如果你拿到的是動態配置的 IP 數字而使用撥接 ppp 連接到網 際網路,你可能已經在你的 ISP 信件主機上有一個信箱。假設你的 ISP 網域是 myISP.com,你的使用者名稱是 user。亦假 設你稱自己的主機名稱是 bsd.home 而你的 ISP 告訴你可以使用 relay.myISP.com 當作信件回覆處。

為了從你的信箱接收信件,你將需要安裝取信程式以便從信箱取回信件。 Fetchmail 是一個不錯的選擇因為它支援許多不同的通訊協定,通常 你的 ISP 會提供 POP3。如果你選擇使用 user-ppp,你可以在連線到網路 成功後自動抓取你的信件,只要在 /etc/ppp/ppp.linkup 裡面 設定以下這項:

        MYADDR:
          !bg su user -c fetchmail
      

假使你正使用 sendmail(如下所示)傳送信件到非本地帳號 ,置入以下命令:

         !bg su user -c "sendmail -q"
      

在上面那項命令之後。這會強迫 sendmail 在連接上網路後馬上開始處 理 mailqueue。

我假設你在 bsd.home 機器上有一個 user 的帳號。在 bsd.home 機器上 user 的家目錄裡建立一個 .fetchmailrc 的檔案:

        poll myISP.com protocol pop3 fetchall pass MySecret;
      

無須贅言,這個檔除了 user 外不應該被任何人讀取,因為它包含 了 MySecret 這個密碼。

為了在寄信時有正確的抬頭 from: ,你必須告訴 sendmail 使用 user@myISP.com 而非 user@bsd.home。你可能會希望告訴 sendmail 從 relay.myISP.com 送出所有信件,加快信件傳送。

以下的 .mc 檔應能滿足你的要求:

        VERSIONID(`bsd.home.mc version 1.0')
        OSTYPE(bsd4.4)dnl
        FEATURE(nouucp)dnl
        MAILER(local)dnl
        MAILER(smtp)dnl
        Cwlocalhost
        Cwbsd.home
        MASQUERADE_AS(`myISP.com')dnl
        FEATURE(allmasquerade)dnl
        FEATURE(masquerade_envelope)dnl
        FEATURE(nocanonify)dnl
        FEATURE(nodns)dnl
        define(SMART_HOST, `relay.myISP.com')
        Dmbsd.home
        define(`confDOMAIN_NAME',`bsd.home')dnl
        define(`confDELIVERY_MODE',`deferred')dnl
      

如何轉換這個 .mc 檔案到 sendmail.cf 檔的詳細細節請 參考上一節。另外,在更新 sendmail.cf 以後不要忘記重新啟動 sendmail。


Frequently Asked Questions for FreeBSD 2.X : 系統管理 : 當我用撥接連上網路時該怎麼設定信件遞送?
Previous: 我該如何使用 sendmail 透過 UUCP 來遞送郵件?
Next: 咦!我忘記 root 的密碼了!