コンフィグレーション

基本事項

あなたのマシンに FreeBSD を普通にインストールして, /etc/resolv.conf ファイルを設定するか, またはネームサーバを走らせれば, 他のホストへ電子メールを送ることができるようになります. あなたのホスト宛の メールを特定のホストに配送するようにしたい場合 には, 次の二つの方法があります.

インターネットへ完全に接続された あなたのホストに直接メールが配送される ためには, ネームサーバのどのオプションを使用するかは あまり重要なことではありません. 大切なのは, あなたが恒久的な IP アドレスを持っていなくてはいけないと いうことです. ダイナミック PPP で得られる IP アドレスではダメです. もしあなたがファイアウォールの内側にいる場合は, ファイアウォールが smtp トラフィックを あなたのホストに渡すように設定されていなければいけません. そのためには, ファイアウォールとなるホストの /etc/services

smtp         25/tcp mail         #Simple Mail Transfer

と書いておきます. あなたのホスト上でメールを受けたい場合には, DNS の MX エントリが あなたのホストアドレスを指しているか, あなたのホストの DNS 名に対して MX エントリが存在しないことを 確認してください.

次のコマンドを実行してみてください.

# hostname
newbsdbox.freebsd.org
# host newbsdbox.freebsd.org
newbsdbox.freebsd.org has address 204.216.27.xx

もしあなたのマシンが上記のメッセージだけを出力したならば, へのメールは, 問題なく 配送されるでしょう.

上記のメッセージの代わりに,

# host newbsdbox.freebsd.org
newbsdbox.FreeBSD.org has address 204.216.27.xx
newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org

というメッセージが出力された場合は, あなたのマシンに直接配送された すべてのメールは, freefall 上の同じユーザ名に配送されてます.

この情報は, あなたのドメインネームサーバ上で設定します. この設定をおこなうホストは, /etc/resolv.conf にプライマリネームサーバとして 書いたホストと同じホストであるべきです.

メールルーティング情報をもつ DNS レコードは, メールエクスチェンジャエントリ (MX エントリ) です. MX エントリが存在しない場合には, アドレスレコードにしたがって, 直接宛先ホストに配送されます.

freefall.freebsd.org の現時点での MX エントリは, 次のようになっています.

freefall                       MX    30   mail.crl.net
freefall                       MX    40   agora.rdrop.com
freefall                       HINFO Pentium     FreeBSD
freefall                       MX    10   freefall.FreeBSD.org
freefall                       MX    20   who.cdrom.com
freefall                       A     204.216.27.xx
freefall                       CNAME www.FreeBSD.org

freefall は多くの MX エントリを持っています. もっとも MX の値が小さいホストが, 最終的にメールを受け取ります. もし freefall が他の処理で忙しかったり, ダウンしているような場合には, 他のホストが, 一時的にメールをキューにいれます.

使い勝手をよくするためには, 代替の MX サイトは, それぞれ 別の経路でインターネットへ接続しているとよいでしょう. インターネットプロバイダまたは他の関連サイトが, このサービスを 提供することができます.

dig, nslookuphost コマンド を使うと, とても便利です.

あなたのドメイン (ネットワーク) に対するメール設定

ネットワークメールホストをセットアップするためには, すべての ワークステーション宛のメールを直接受ける必要があります. 言いかえれば, *.smallminingco.com 宛のすべてのメールを ハイジャックし, そのメールをあなたの ``メールホスト'' である個々のマシンにに配送 します.

それらのワークステーション上のネットワークユーザは, たいていメールを POP や telnet 等で受け取ります.

同じユーザ名のユーザアカウントが, 両方のマシンに存在しなければな りません. 必要ならば, アカウントを作成するために adduser コマンドを使用してください. shell /nonexistant に設定すると, ユーザはログインできなくなります.

使用する予定のメールホストは, 各ワークステーションごとにメール交換が できるように設定されていなければなりません. これは, DNS (すなわち BIND や named) の設定が必要です. 詳細は, ネットワークの本を参照してください.

基本的には, 以下の行を DNS サーバに追加する必要があります.

pc24.smallminingco.com A   xxx.xxx.xxx.xxx       ; Workstation ip
            MX  10  smtp.smallminingco.com  ; Your mailhost

自前で DNS サーバを実行しているのでなければ, この作業は, 自分では おこなえません. 自分で DNS サーバを実行したくない場合は, インターネットプロバイダ等に依頼して, 作業をおこなってもらってください.

この作業により, このワークステーション宛のメールは, MX (メールエクスチェンジャ) ホストに送られるようになります. A レコードがどのマシンを指しているかどいうことには関係なく, メールは MX ホストに送られます.

この機能は, 仮想電子メールホスト (Virtual E-Mail Hosting) を実装するために使用されています.

foo.bar というドメインを持つ顧客がいて, foo.bar 宛のメールをすべて, わたしのマシン smtp.amalliap.com に送りたいと思っています. このような場合, あなたの DNS サーバ上で, 以下のようなエントリを作成 しなければなりません:

foo.bar         MX  10  smtp.smalliap.com       ; your mailhost

そのドメインに対して電子メールを送りたいだけなら, A レコードは必要ありません. つまり, foo.bar に対するアドレスレコードが存在しない限り, ping foo.bar コマンドが動作することを期待しては いけません

メールボックスへの最終的な配送が行われる メールを実際に受けている メールホスト上では, sendmail はメールを受け付けているホストを 知っている必要があります.

そのためには, (FEATURE(use_cw_file) を使用している場合) /etc/sendmail.cw ファイルに pc24.smallminingco.com を追加するか, /etc/sendmail.cf ファイルに, Cw myhost.smalliap.com の行を追加してください.

もしあなたが本気で sendmail を使って何かしようと思うなら, sendmail のソースをインストールするべきです. ソースには, たくさんのドキュメントも付いています. UUCP のセットアップ の節に sendmail の ソースを入手するのに必要な情報が掲載されています.

UUCP のセットアップ

よくある質問 (FAQ) より抜粋.

FreeBSD に付属する sendmail のコンフィグレーションは, 直接インターネット接続しているサイトに合うように作られてい ます. メールを UUCP 経由で交換するようにしたい場合には, 別の sendmail コンフィグレーションファイルをインストールし なければなりません.

/etc/sendmail.cf を手動で作成することは, 純正主義者 がおこなうことだと考えられています. sendmail のバージョン 8 では, m4 プリプロセッサを使用して, コンフィグレーションファイルを生成する方法が取られています. この場合, 実際に手動で作成したコンフィグレーションは, 実際のコンフィグレーションより簡潔です. 以下の場所にあるコンフィグレーションファイルを 使用してください. /usr/src/usr.sbin/sendmail/cf

システム上にすべてのソースをインストールして いない場合, sendmail の設定ツールは不完全なままであり, それは個別のソース配布物の中にあります. CD-ROM をマウントしてあれば, 以下のようにします.

# cd /usr/src
# tar -xvzf /cdrom/dists/src/ssmailcf.aa

驚かないでください. これはたった数百キロバイトのサイズのファ イルです. cf ディレクトリ上にある README ファイル には, m4 コンフィグレーションの基本的な紹介が書かれてい ます.

UUCP での配送には, mailertable 機能を使用すること をおすすめします. これは sendamil が配送経路を決定するのに 使用するデータベースファイルです.

まずはじめに, .mc ファイルを作成します. /usr/src/usr.sbin/snemdail/cf/cf ディレクトリに これらのファイルを置きます. ここには既にいくつかの例が 置いてあるので, 見てください. foo.mc という名前で作成したと仮定すると, それを有効な sendmail.cf に変換するためには, まず次のようにします:

# cd /usr/src/usr.sbin/sendmail/cf/cf
# make foo.cf

続いて, もし /usr/obj 以下のディレクトリが存在しなければ:

# cp foo.cf /etc/sendmail.cf

とし, 存在すれば次のようにします:

# cp /usr/obj/`pwd`/foo.cf /etc/sendmail.cf

典型的な .mc ファイルは次のような内容です:

include(`../m4/cf.m4')
VERSIONID(`Your version number')
OSTYPE(bsd4.4)

FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)

define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    your.alias.host.name
Cw    youruucpnodename.UUCP

nodns nocanonify は, メール配送をおこなう 際に, DNS を参照しないようにするための設定です. UUCP_RELAY は, 必要な設定ですが, ここでは理由を 説明できません. その理由について, ここでは質問しないでください. .UUCP 仮想ドメインアドレスを扱うことができるインターネット ホスト名を書いてください. おそらく, 使用する ISP のメール中継ホスト名をそこに記述する ことになります.

この設定が終了したら, /etc/mailertable と呼ばれる ファイルが必要になります. このファイルの典型的な例を示します:

#
# makemap hash /etc/mailertable.db < /etc/mailertable
#
horus.interface-business.de   uucp-dom:horus
.interface-business.de        uucp-dom:if-bus
interface-business.de         uucp-dom:if-bus
.heep.sax.de                  smtp8:%1 horus.UUCP
uucp-dom:horus                if-bus.UUCP
uucp-dom:if-bus .         uucp-dom:sax

見て分かるように, これは実際に使用されているファイルの一部 です. はじめの三行は, ドメインアドレスが指定されたメールが デフォルトルートに送信せずに, 配送パスを``短縮''して, 隣接 UUCP サイトにメールを送るための設定です. 次の行は, メールを SMTP を使用して配送されているローカル イーサネットドメイン上のマシンに送信するための設定です. 最後に, UUCP 接続されているドメインが, .UUCP という仮想ド メイン表記されている場合です. これは, uucp-neighbor!recipient をデフォルト規則で書換えるため です. 最終行は必ず シングルドット (.) を指定します. 上記のどのパターンにも当てはまらない送信先に対して, あなた のメールの世界中へのゲートウェイとして動作してくれる隣接 UUCP サイトに, UUCP を使って配送します. uucp-dom: というキーワードの後に書かれたすべての ノード名は, 隣接 UUCP サイトでなければなりません. そのサイトと UUCP 接続を行っているかどうかは, コマンド uuname を使用して確かめることができます.

実際に使用するには, このファイルを DBM データベースファイ ルに変換する必要があることを忘れないでください. これを実行するためのコマンド 行は, mailertable の先頭にコメントとして記述されています. 通常, このコマンドは, mailertable を変更するたびに実行しな ければなりません.

最終ヒント: もしいくつかの特定のメール経路が正しく動作する かどうかが心配ならば, sendmail-bt オプション を覚えておいてください. このオプションは sendmail を ``アドレステストモード'' で起動します. メールの経路をテストするには, 0 のあとにメール経路をテスト したいアドレスを入力してください. 最後の行にあなたが使用する インターネットメールエージェント (メール中継プログラム) と, このエージェントに呼び出される宛先のホスト名と, (翻訳可能な場合) アドレスがが表示されます. このモードを 終了するには, Control-D を入力します.

% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 foo@interface-business.de
rewrite: ruleset  0   input: foo @ interface-business . de
...
rewrite: ruleset  0 returns: $# uucp-dom $@ if-bus $: foo < @ interface-business . de