sendmail(8) は FreeBSD のデフォルトの メールトランスファエージェント (MTA) です。 sendmail の仕事はメールユーザエージェント (MUA) からのメールを受け取り、 それを設定ファイルで定義された適当なメーラに届けることです。 sendmail はネットワーク接続を受け入れて、 ローカルのメールボックスにメールを届けたり 別のプログラムにメールを渡したりもできます。
sendmail は次の設定ファイルを使用します。
ファイル名 | 機能 |
---|---|
/etc/mail/access | sendmail アクセスデータベースファイル |
/etc/mail/aliases | メールボックスエイリアス |
/etc/mail/local-host-names | sendmail が受け付ける配送先ホストのリスト |
/etc/mail/mailer.conf | メーラプログラムの設定 |
/etc/mail/mailertable | メーラ配送表 |
/etc/mail/sendmail.cf | sendmail の主設定ファイル |
/etc/mail/virtusertable | 仮想ユーザおよび仮想ドメイン表 |
アクセスデータベースは、 どのホストまたは IP
アドレスがローカルメールサーバに接続できるか、
そして接続の種類は何か、ということを定義します。 ホストは OK
, REJECT
, RELAY
として指定できます。
または、メーラエラーを指定することで、 単に sendmail
の エラー処理ルーチンに渡されます。 OK
として指定されたホスト (これはデフォルトです) は、
メールの最終宛先がローカルマシンである限り、
このホストへメールを送ることを認められます。 REJECT
として指定されたホストは、 すべてのメール接続を拒絶されます。 ホスト名に対して
RELAY
オプションを指定されたホストは、
このメールサーバを通過して任意の宛先へメールを送ることを認められます。
例 21-1. sendmail アクセスデータベースの設定
cyberspammer.com 550 We don't accept mail from spammers FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY
この例では五つのエントリがあります。 表の左側に当てはまるメール送信者は、表の右側の動作に支配されます。 はじめの二つの例は、エラーコードを sendmail のエラー処理ルーチンに渡します。 メールが表の左側に当てはまると、リモートホストにそのメッセージが表示されます。 次のエントリは another.source.of.spam というインターネット上の特定のホストからのメールを拒絶します。 次のエントリは okay.cyberspammer.com からのメール接続を受け入れます。 このエントリは上にある cyberspammer.com という行よりもさらに厳密です (厳密に一致すればするほど、そうでないものより優先されます)。 最後のエントリは 128.32 から始まる IP アドレスのホストからの電子メールのリレーを認めます。 これらのホストは他のメールサーバに到達できるこのメールサーバを使ってメールを送ることができるでしょう。
このファイルを変更したら、 データベースを更新するために /etc/mail/ ディレクトリで make コマンドを実行する必要があります。
エイリアスデータベースには、 他のユーザ、ファイル、プログラムまたは他のエイリアスに展開される 仮想的なメールボックスの一覧が記載されています。 /etc/mail/aliases において使用できる例をいくつかあげます。
例 21-2. メールエイリアス
root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail"
ファイル形式はシンプルです。 コロンの左側にあるメールボックス名は、右側のターゲットに展開されます。 はじめの例は単純に root のメールボックスを localuser のメールボックスに展開し、 それからエイリアスデータベースをもう一度調べます。 一致するエントリがなければメッセージはローカルユーザである localuser に配送されます。 次の例はメールリストです。 ftp-bugs のメールボックスへのメールは joe, eric および paul の三つのローカルメールボックスに展開されます。 リモートメールボックスは user@example.com のように指定できることに注意してください。 次の例はメールをファイル、この場合 /dev/null に書き込みます。 最後の例はメールをプログラムに送ります。 この場合メールのメッセージは UNIX® パイプを通じて /usr/local/bin/procmail の標準入力に書き込まれます。
このファイルを変更したら、 データベースを更新するために/etc/mail/ ディレクトリで make コマンドを実行する必要があります。
これは sendmail(8) がローカルホスト名として認めるホスト名のリストです。 sendmail がメールを受け取るすべてのドメインやホストにこのファイルを置いてください。 たとえば、このメールサーバは example.com というドメインおよび mail.example.com というホストへのメールを受け取るとすると、 local-host-names ファイルの内容は次のようになるでしょう。
example.com mail.example.com
このファイルを更新したら、変更を読み込むために sendmail(8) を再起動する必要があります。
sendmail の主設定ファイルである sendmail.cf は、電子メールアドレスの書き換えから、 リモートメールサーバへ拒絶メッセージを送ることまで sendmail の全般的な動作をすべて制御します。 当然、そのようなさまざまな役割によりこの設定ファイルは大変複雑で、 その詳細についてはこの節の少し範囲外です。好運なことに、 標準的な構成のメールサーバではこのファイルをめったに変更する必要はありません。
sendmail の主設定ファイルは sendmail の機能と動作を決定する m4(1) マクロから構築できます。 詳細については /usr/src/contrib/sendmail/cf/README を参照してください。
このファイルを更新したら、その変更を反映するために sendmail を再起動する必要があります。
virtusertable は仮想ドメインおよび仮想メールボックスに対するアドレスを実際のメールボックスと対応づけます。 これらのメールボックスにはローカル、リモート、 /etc/mail/aliases に定義されたエイリアス、 またはファイルを使用できます。
例 21-3. 仮想ドメインメール対応表の例
root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe
上の例では example.com ドメインへの対応づけをしています。 このファイルはファイルの下までファーストマッチ (訳注: 一致するルールが複数ある場合、 一番最初に一致したルールが適用されること) で処理されます。 はじめの行では root@example.com を ローカルの root メールボックスに対応づけています。 次のエントリでは postmaster@example.com を noc.example.net ホスト上の postmaster メールボックスに対応づけています。 最後に、今までのところでは example.com に関して何も一致しない場合、最後のエントリと一致するでしょう。 これは example.com の誰かに送ったすべてのメールが一致します。これは joe のローカルメールボックスに対応づけられています。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で)
連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で)
送ってください。