18.3. FAQ

從 FAQ 中搬過來的。

18.3.1. 什麼我必須在我的機器上用 FQDN 來表示其他機器呢?

有時候您會發現您要找的機器是在另外一個領域裡面; 例如說,假設您位於 foo.bar.edu, 而您要找一台在 bar.edu 中叫 mumble 的機器,您就必須用 fully-qualified domain name mumble.bar.edu 而不是用 mumble

照慣例來說,這在 BSD BIND resolver 中是可行的。 然後目前隨 FreeBSD附上的 BIND 早已不為除了同一領域外的非 FQDN 提供縮寫的服務了。 因此這個不完整的主機名稱 mumble 可能是指 mumble.foo.bar.edu;如果不是的話, 系統就會往根領域搜尋。

這跟它前一版的行為是不一樣的,前一版會繼續找 mumble.bar.edu 以及 mumble.edu。 如果您想知道為什麼這種行為是不好的,甚至會造成安全方面的漏洞, 請您參閱 RFC 1535。

>如果您想要求一個良好的工作環境,您可以使用

    search foo.bar.edu bar.edu
而不是前一版所用的
    domain foo.bar.edu
把這一行放在 /etc/resolv.conf 中。 然而,請一定要確定這個搜尋的順序不會造成 RFC 1535 中所謂的 ``boundary between local and public administration''問題。

18.3.2. Sendmail 說 ``mail loops back to myself''

下面是 sendmail FAQ 中的回答:

    * 我得到了一個如下的訊息: "Local configuration error"
    
    553 relay.domain.net config error: mail loops back to myself
    554 <user@domain.net>... Local configuration error
    
    我要怎麼解決這個問題?
    
    您是否有問過寄到您領域 (如:domain.net) 的郵件是否由 MX
    記錄而被轉送到某特定的主機 (在這個例子中是 relay.domain.net),
    而這個轉送的主機不認為它自己是 domain.net。
    請把 domain.net 加到 /etc/sendmail.cw 
    (如果您用 FEATURE(use_cw_file) 的話) 
    或是把 "Cw domain.net" 加到 /etc/sendmail.cf。

sendmail FAQ 可以在 /usr/src/usr.sbin/sendmail 裡找到, 如果您想要對您的郵件設定動任何手腳,我建議您先把它看過。

18.3.3. 我要怎麼做才能透過一個撥接上網的 PPP 主機使用電子郵件?

您想要把區域網路上的 FreeBSD 主機連到網際網路上,而這臺 FreeBSD 主機將會成為這個區域網路的郵件閘道器。 這個 PPP 連線不必一直保持在連線狀態。

至少有兩個方法可以達到這個要求。

另外的方法就是使用 UUCP。

重點在於您要找到一個網路主機來為您的網域當次要 MX 主機。舉例來說:

    bigco.com.	      MX	10	bigco.com.
                          MX        20      smalliap.com.

您只能指定一部主機當做您的最終收信主機 ( 在 Cw bigco.com/etc/sendmail.cf) 。 (譯註:此處指您不能同時把兩台以上機器的 MX 值都設成最小。)

當別人要寄信給您的時候,寄信端的 sendmail 程式會試著透過 modem 連線到您的機器上。因為您並非處於連線狀態,所以 sendmail 送信就會得到一個逾時的錯誤。 此時 sendmail 就會自動把信送給次要 MX 主機, 如:您的 ISP。這次要 MX 主機會每 15 分鐘 (視您在 /etc/rc.conf 的設定而定,如: sendmail_flags = "-bd -q15m" ) 把信送給主要 MX 主機,也就是您的機器。

您可能會想把下面這段設成每次登錄都會自動執行:

    #!/bin/sh
    # Put me in /usr/local/bin/pppbigco
    ( sleep 60 ; /usr/sbin/sendmail -q ) &
    /usr/sbin/ppp -direct pppbigco

如果您想要為一般使用者設定登錄自動執行檔的話, 您最好用 sendmail -qRbigco.com 而不是用上面那一段。這樣做會令 sendmail 馬上處理您郵件佇列中送往 bigco.com 的所有郵件。

更講究的解法是參考下列這段。

這段資料是從 freebsd-isp mailing list 中拿來的。

    > 我們為顧客提供次要 MX 主機的服務。顧客每天都會上線好幾次並且自動把
    > 信件取回主要 MX 主機 (當有他們的郵件時我們並沒有通知他們)。我們的
    > mailqueue 程式每30 分鐘清一次郵件佇列。那段時間他們就必須上線
    > 30 分鐘以確保他們的信件有送達他們的主要 MX 主機。
    >
    > 有任何指令可以啟動 sendmail 並令它把所有郵件寄出嗎?當然該使用者在
    > 我們的機器上沒有 root 的權限。
    
    在 sendmail.cf 的 'privacy flags' 這段中,有這麼一個設定
    Opgoaway,restrictqrun
    
    為了要讓非 root 使用者也可以啟動佇列處理的程式,請把 restrictqrun 給去
    掉。您可能也必須要重新安排您的 MX 設定。我們是我們顧客的主要 MX 主機,
    而且我們還設定了這個:
    
    # If we are the best MX for a host, try directly instead of generating
    # local config error.
    OwTrue
    
    這樣一來,別的機器就不會去試著連往您的顧客的機器而會直接把信送給您。然
    後您再把信送給您的顧客就可以了。這個設定只對 "主機" 有效,所以您必須請
    您的顧客在 DNS 中把他們的郵件主機取名為 "customer.com" 或是
    "hostname.customer.com"。只需要在 DNS 中為 "customer.com" 多加一個 A 
    記錄就行了。