各メールプログラムには、内部名があります。内部名は任意ですが、local と prog という名前はそれぞれ 1 番目と 2 番目に定義しなければなりません。ルールセット 0 はこのメールプログラム名 (およびホスト名、ユーザー名) に対する名前を解決します。
P フィールドではメールプログラムのパス名を与えます。このメールプログラムが TCP 接続によりアクセスされる場合、代わりに文字列 [TCP] を使用してください。
F フィールドではメールプログラム用のフラグを定義します。発信者の名前を渡すため、それぞれ f または r フラグのように、f または r フラグを指定します。特定の条件のもとでエラーとなるメールプログラムに対応するために、これらのフラグは、sendmail に渡されたときだけ渡されます。argv テンプレートにおいて f$g を指定できる場合もあります。メールプログラムが root として呼び出され、sendmail が root に対し setuid を実行している場合は、S フラグを使用してください。S フラグでは、メールプログラムを呼び出す前にユーザー ID を再設定しません。このメールプログラムがローカルである (つまり、別のネットワークホップではなく最後の配信を行う) 場合、このフラグを使用してください。s フラグを指定すると、引用符文字 (バックスラッシュおよび二重引用符) は名前から取り除かれます。指定しないと、渡されます。メールプログラムが 1 つのトランザクションで同じホストの複数のユーザーに送信可能な場合は、m フラグを使用します。このフラグがオンならば、$u を含む argv テンプレートはホストの各ユーザーに繰り返されます。e フラグは、「高価」であるとメールプログラムをマークし、sendmail は待ち行列の実行まで接続を延期します。c 構成オプションも設定しなければならないことに注意してください。
C フラグは役に立ちます。メッセージの受信先のメールプログラムではなく、送信元のメールプログラムに適用されます。このフラグをセットすると発信者 (つまり @host.domain 部分) のドメイン指定は保存され、まだドメイン指定を含まないメッセージの名前に追加されます。たとえば、この形式のメッセージは次のとおりです。
From: eric@jupiter To: joe@saturn, sam |
これは、次のように変更されます。
From: eric@jupiter To: joe@saturn, sam@ganymede |
ただし、C フラグが、eric@jupiter に対応するメールプログラムで定義される場合に限ります。
メールプログラムの記述における S と R フィールドは、それぞれ発信者と受信者名に適用されるメールプログラムごとの書き直しセットです。送信するドメインが追加され、一般的な書き直しセット (番号 1 または 2 のいずれか) が適用された後、これらは適用されますが、出力書き直し (ルールセット 4) よりは先に適用されます。通常、ドメインをまだ持たない名前にカレントドメインを追加するため使用します。たとえば、この形式のヘッダーは次のとおりです。
From: eric@host |
これが次のように変わります。
From: eric@host.colorado.edu |
または、
From: saturn!eric |
これは、送信先のドメインによって異なります。また、これらのセットは、ルールセット 4 と同時に使って特殊な目的の出力の書き直しにも使用できます。
表 3-13 には、構成ファイルで使用可能な追加のフラグを示します。
表 3-13 メールプログラム記述の追加フラグ
たとえば、次の指定は、ローカル配信と Ethernet 配信のメールプログラムを指定します。
Mlocal, P=/bin/mail, F=flsSDFMmnP, S=10, R=20, A=mail -d $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=20, A=sh -c $u |
1 番目のメールプログラムは、local という名前でファイル /bin/mail にあり、F フラグをとります。そしてローカル配信を行い、名前から引用符を削除し、同時に複数のユーザーにメールを配信します。ルールセット 10 をメッセージにおける発信者名に適用し、ルールセット 20 を受信者名に適用します。メッセージに送信する引数ベクトルは、mail、d、および受信ユーザーの名前を含む単語です。r フラグを挿入する場合は、mail と d の間に入れます。
2 番目のメールプログラムは ether と呼ばれます。これは TCP 経由で接続され、同時に複数のユーザーを処理できます。接続を延長し、発信者名のドメインをドメインのない受信者名に追加します。ルールセット 11 によってプロセス発信者名を、ルールセット 21 によって受信者名を処理します。このメールプログラムに渡されるメッセージは、100,000 バイトに制限されています。