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
オプションを指定されたホストは、
このメールサーバを通過して任意の宛先へメールを送ることを認められます。
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
において使用できる例をいくつかあげます。
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
に定義されたエイリアス、
またはファイルを使用できます。
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
のローカルメールボックスに対応づけられています。
本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。