ここには、いくつかのよく聞かれる質問とその答があります. それらは FAQ からこちらに移りました.
恐らく, そのホストは実際には別のドメインにあるのでしょう. 例えば foo.bar.edu ドメインにいて, bar.edu というドメイン内の mumble というホストにアクセスしたいとします. この時は単に mumble ではなく mumble.bar.edu と FQDN で参照しなければなりません.
そもそも, BSD BIND のリゾルバー (resolver) ではこのようなことが可能でしたが, FreeBSD に入っている最新版の BIND では自分のドメイン以外に対する FQDN でない省略形は許されません. 従ってホストを mumble と曖昧に指定した場合は mumble.foo.bar.edu という名前があればそれになり, そうでなければ root ドメインから検索されます.
これは, mumble.bar.edu と mumble.edu ということなったドメイン名に対してホスト名のサーチがおこなわれていた以前の振る舞いとは異なったものです. このような事が悪い例もしくはセキュリティホールとみなされる理由については RFC 1535 を見てください.
/etc/resolv.conf で
domain foo.bar.eduと書いてある行を
search foo.bar.edu bar.eduと書き換えることで上のようなことができます. しかし, RFC 1535 にあるように検索順序が"内部 (local) と外部 (public) の管理の境界"をまたがないようにしてください.
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 宛てのメールを受け取れるような設定になっていない場合です. 設定の際に FEATURE(use_cw_file) を指定してある場合には /etc/sendmail.cw の中に domain.net を追加してください. もしくは, /etc/sendmail.cf の中に "Cw domain.net" を追加してください.
sendmail FAQ は /usr/src/usr.sbin/sendmail にありますので, メールの設定に"おかしなこと"があれば常に読んでください.
LAN 上にある FreeBSD マシンを, インターネットに接続したいとします. FreeBSD マシンは, その LAN でのメールゲートウェイになります. FreeBSD マシンは専用線接続ではありません (訳注:ダイアルアップ接続など).
これには, 少なくとも二つの方法があります.
一つは UUCP を使うことです.
このとき鍵になるのは, あなたのドメインに対するセカンダリ MX サービスを提供してくれるインターネットサイトをみつけることです. 例えば以下のように.
bigco.com. MX 10 bigco.com.
MX 20 smalliap.com.最終的なメール受信先としては, 一つのホストだけが定義されるべきです (bigco.com 上の /etc/sendmail.cf ファイルに, Cw bigco.com を追加します).
送信側の sendmail が, メールを配送しようとしている時, モデムの接続を 介してあなたのところに接続しようとします. 大抵の場合, あなたのマシンがオンラインでないために, 接続はタイムアウト してしまうでしょう. sendmail は自動的に, メールをセカンダリの MX サイト に (あなたのインターネットプロバイダ) に配送します. セカンダリ MX サイトは, (/etc/rc.conf ファイル に sendmail_flag = "-bd -q15m"と書かれている場合) 15 分ごとに, プライマリ MX サイトにメールを配送しようと, あなたのホストに接続しに いきます.
ログインスクリプトとして, このようなものを使うとよいでしょう.
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppbigcoユーザごとにログインスクリプトを作りたい場合には, 上記 のスクリプトの代わりに, sendmail -qRbigco.com を使用する こともできます. このようにすると, キューの中の bigco.com に対する すべてのメールは, すぐに強制的に処理されます.
さらに, 次のような改良もできます.
以下は, FreeBSD インターネットサービスプロバイダーメーリングリスト <freebsd-isp@FreeBSD.org> メイリングリストから抜粋してきたメッセージです.
> 私たちはお客様に対して, セカンダリ MX を提供しています.
> お客様は一日に何回か私たちのサービスに接続し, メールを彼らのプライマリ MX
> に受け取ります (彼らのドメインに対するメールが到着した時には,
> 私たちは彼らのサイトを呼び出しません).
> 私たちの sendmail は, 30 分ごとにメールキューに溜っているメールを配送します.
> ちょうどその時に, すべてのメールがプライマリ MX に送られたかどうかを確かめるためには,
> 彼らは 30 分は オンラインでいなければなりません.
>
> すべてのメールを今すぐ送るために 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
このようにすると, リモートサイトからのメールが,
顧客のマシンと接続しようとせず, 直接あなたがたのホストマシンに配送されるようになります.
ホストマシンに配送されたメールは, 続いて顧客のマシンに送られます.
これはホスト名にのみ有効なので, 顧客のメールマシンに,
"host.customer.com" とは別に, "customer.com"も定義する必要があります.
DNS 上で, "customer.com"に対する A レコードを定義してください.