メールシステムの管理

sendmail 構成ファイルの構文

構成ファイルは一連の行から編成されており、各行は、その行の残りのセマンティクスを定義する 1 文字で始めます。スペースまたはタブで始まる行は (そのセマンティクスは定義されない場合も多い) 継続行です。ブランク行と番号記号 (#) で始まる行は無視されます。

DL - マクロの定義

マクロには 1 文字の名前を付けます。マクロは ASCII 文字から任意の文字を選んで定義できますが、定義するマクロには大文字の英字だけを使用します。ただし、sendmail によってすでに使用されている MRLG、および V などの文字は使用できません。小文字の英字と特殊記号は内部で使用されます。

マクロを定義する方法は、次の 2 通りです。

D マクロ定義の構文は次のとおりです。


DXval

ここで、X はマクロ名であり、val はその値です。スペースは使えません。マクロは、エスケープシーケンス $X を使ってほとんどの場所で挿入できます。

以下に、構成ファイルからの D マクロ定義の例を示します。


DRmailhost
Dmeng.acme.com

変数 Rmailhost の値を入れるように設定され、内部変数 m は値 eng.acme.com を入れるように設定されます。

m マクロはメールドメインを定義します。定義しなければ、ネームサービスドメインネームが最初の構成要素を除いて使用されます。たとえば、ecd.east.acme.comeast.acme.com になります。メールドメインネームを定義するさらに柔軟な方法は、L マクロ定義を使用することです。

L マクロ定義の構文は次のとおりです。


LXsearch-key

ただし、X はマクロ名であり、search-keysendmailvars データベースから検索されます。検索キーによって探し出されたエントリにある値が X に割り当てられます。

以下に、構成ファイルからの内部 L マクロ定義の例を示します。


Lmmaildomain

変数 m は、検索キーとして maildomain を使用した sendmailvars データベースの値に設定されます。sendmailvars データベースのエントリが


maildomain        eng.acme.com

の場合、m の値は eng.acme.com になります。


注 -

sendmail/etc/nsswitch.conf ファイルにある sendmailvars エントリを使用し、/etc/mail/sendmailvars ファイルと名前空間を検索する順序を決定します。


CFG - クラスの定義

アドレス書き換えルールの左辺で対応する単語のクラスを定義できます。たとえば、自分にメールを送信しないためには、このサイトのローカル名すべてのクラスを作成します。

大文字の英字の組み合わせでクラス名を選ぶことができます。小文字の英字と特殊文字はシテスムに使用されます。

クラスを定義する方法は、次の 3 通りがあります。

表 3-6 にクラス定義のさまざまな形式の構文を以下に示します。

表 3-6 構成ファイル内のクラス定義の構文

規則 

説明 

CX word1 word2

クラス X を指定された単語中の任意のものと対応させる 

FX fi1e [pattern]

file からクラス X 単語を読み込む

FX | command

command の出力をクラス X に読み込む

GXsearch_key

sendmailvars データベースから search_key を読み込み、クラス X に割り当てる

最初のフォームでは指定された単語をクラス X と対応するように割り当てます。次の例では、monetucbmonet という名前をクラス H に割り当てています。


CHmonet ucbmonet

第 2 の形式は、たとえば、FC /.rhosts など、ファイルからクラス X に単語を読み取ります。Pattern 引数が指定されている場合は、scanf を使ってファイルから読み込み、ない場合は、各行の最初の単語が使用されます。

第 3 の形式は、あるコマンドを実行してコマンドの標準出力からクラスの要素を読み取ります。


FC | awk '{print $2}' /etc/hosts  

第 4 の形式は、検索キーによって示された sendmailvars データベースにあるエントリからクラスの要素を読み込みます。たとえば、


GVuucp-list

これは、sendmailvars データベースにある uucp-list エントリからクラス V の定義を読み込みます。

sendmailvars データベースにあるエントリが、


uucp-list        sunmoon hugo comic  

の場合、V の値は sunmoon hugo comic になります。


注 -

sendmail/etc/mail/sendmailvars ファイルにある sendmailvars エントリを使用し、/etc/nsswitch.conf ファイルと名前空間を検索する順序を決定します。


クラス定義は、複数行に分割できます。たとえば、


CHmonet ucbmonet

は、次のようにも表示できます。


CHmonet 
CHucbmonet 

O - オプションの設定

構成ファイルから (メールプログラム用のフラグまたはコマンド行引数と混同しないように) 複数のオプションを設定できます。オプションも 1 文字で表されます。この行の構文は次のとおりです。


Oc value

これはオプション cvalue に設定します。オプションに応じて、value は、文字列、整数、ブール値 (有効な値 tTf、または F があるもの、デフォルトは「true」) 、または時間間隔などです。オプションのリストについては、sendmail 構成オプション」 を参照してください。

P - 優先順位の定義

P 制御行を使って Precedence: フィールドの値を定義できます。このフィールドの構文は次のとおりです。


Pname=num

namePrecedence フィールドにあるとき、メッセージクラスは num に設定されます。数値が大きいほど、優先順位が高くなります。0 より小さな数値では、エラーメッセージが戻されないという特殊な特性があります。デフォルトの優先順位は 0 (ゼロ) です。以下に例を示します。


Pfirst-class=0 
Pspecial-delivery=100 
Pjunk=-100

T - 信頼されるユーザーの定義

この構成行は削除されます。これは受け付けられますが無視されます。

H - ヘッダーの定義

ヘッダー行のフォーマットは H 行によって定義します。この行の構文は次のとおりです。


H[c ?c mflagsc ?]c hnamec :c htemplate  

この指定における継続行は送信メッセージに直接挿入されます。htemplate はメッセージに挿入される前にマクロ展開されます。展開しても空であれば、ヘッダー行は入れられません。疑問符で囲まれた mflags を指定すると、ヘッダーを自動的に出力させるには指定するフラグの少なくとも 1 つがメールプログラムで定義される必要があります。これらのヘッダーの 1 つが入力にあれば、これらのフラグとは関係なく出力に送られます。