このセクションは, FAQ から移動してきました.
おそらく, そのホストは実際には違うドメインに属しているのでしょう. 例えば, もしあなたが foo.bar.edu ドメインにいて, bar.edu ドメインの中のmumble というホストに接続したいと します. その場合あなたは, mumbleではなく mumble.bar.edu という完全な形のドメイン名 (FQDN) によっ てそのホストを参照しなければなりません.
伝統的に, これは BSD BIND リゾルバでは許されていました. しかしながら, FreeBSD に付属する現在の BIND の バージョンでは, 自分が属しているドメイン以外では, 完全な形でないドメイン名に対するデフォルトの省略形は 使用できません. ですから, 完全でないホスト名 mumble は, mumble.foo.bar.edu として解決されるか, ルートドメインに検索しにいくでしょう.
これは, mumble.bar.edu, mumble.edu というように検索し続けるような過去の動作とは異なります. なぜこれが悪い慣例, さらにはセキュリティーホールと考えられ るようになった理由については, RFC1535 を参照してください.
この問題を回避するには,
search foo.bar.edu bar.eduという行を
domain foo.bar.eduに置き換えます.これを自分のマシン上の /etc/resolv.conf ファイルに 記述してください. しかしながら, 検索順序は, RFC 1535 に 書かれている, ``ローカル管理と公共の管理の間の境界線'' を越えないことを, あらかじめ確認してください.
これについては, sendmail FAQ の中で, 次のように答えられて います:
* 次のような 「Local configuration error」というメッセージが出ます: 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error この問題をどうやって解決すればよいでしょうか? MX レコードを使って, あるドメイン(例: domain.net)宛にメールを 特定のホスト (この場合, relay.domain.net) に転送しようと設定したと していますが, 中継ホストは自身が domain.net であるとは認識 していません. (FEATURE(use_cs_file) を使用している場合は) /etc/sendmail.cw に, domain.net を追加してください. または, 「Cw domain.net」を /etc/sendmail.cf に追加してください.
sendmail FAQ は, /usr/src/usr.sbin/sendmail に あります. ``ちょっと凝った''メール設定 をしたい場合は, FAQ を読むことをおすすめします.
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-isp メイリングリストから抜粋してきたメッセージです.
> 私たちはお客様に対して, セカンダリ 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 レコードを定義してください.