從 FAQ 中搬過來的。
有時候您會發現您要找的機器是在另外一個領域裡面; 例如說,假設您位於 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''問題。
下面是 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 裡找到, 如果您想要對您的郵件設定動任何手腳,我建議您先把它看過。
您想要把區域網路上的 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 記錄就行了。