長い間遊んできました sendmail (ここでは、8.14.1 ) ですが、今回で一応終わりにしたいと思います。
実際の sendmail.mc 作成で役立つのはこうもり本であることは間違いないですが、とても重いので、 sendmail のソースにある cf/README やインターネット上にあるその日本語訳cf/READMEなどを参考にすれば良いと思います。
次に作成された sendmail.cf のテスト方法をおさらいしてみます。
まず、sendmail をルールテスト・モードで起動します。
これで、プロンプト > が出力されて入力待ちになります。ここで、
とルールセットとアドレスを指定すれば変換結果が得られるのが基本でしたね。
定義マクロの値とクラス・マクロの値の表示はそれぞれ、$ と $= が使えます。
マクロの値を変えるには、.D と .C を使えばよいです。
=S に続いてルールセット番号またはシンボル名を指定すれば、ルールセットも表示できます。
=M は配信エージェントの表示ですが、すべての定義が表示されてしまいます。
/canon は、指定したホストの標準名を表示します。
を指定すればよいです。
さて、今までのルールセットのテストでは、呼び出すルールセットを順番に指定していましたがこれを /tryflags , /parse , /try を使ってテストしてみます。
/tryflags は、引数が、[ h | e ][ s | r ]で、ヘッダまたはエンベロープ、発信者または受信者を表します。
/parse 受信者アドレス は、
3,0 で配信エージェント、受信者のホスト、受信者のアドレスの3組を求めてから、
その配信エージェントの R= 式の指示に従って、
受信者のアドレスを 2,エンベロープ用受信者ルールセット,final によって変換した結果を表示しています。
/try 配信エージェント address は、
/tryflags の指示に従って、アドレスの種類を4つから選んでそれに応じて配信エージェントの R=式 または S=式 からルールセットを選び変換します。つまり、
/tryflags hs なら、 3,1,ヘッダ用発信者ルールセット,final
/tryflags hr なら、 3,2,ヘッダ用受信者ルールセット,final
/tryflags es なら、 3,1,エンベロープ用発信者ルールセット,final
/tryflags er なら、 3,2,エンベロープ用受信者ルールセット,final
のようなルールセットを使ってアドレスが変換されます。最後のケースは/parse の結果と一緒ですね。
これらは、配信エージェントで F=5 が指定されていた場合のルールセット5 の呼び出しまではテストしないので、それは自分で行う必要があります。
最後に、
でルールの動作状況を詳しく見ることができます。
以上長い間 sendmail について見てきましたが、これでこうもり本なしでも簡単な sendmail.mc が作成できる気分になりました。
相変わらずcoLinux は安定していますが、Windows の update でリブートするときに、シャットダウンする必要があり残念です。また coLinux 用の Fedora Core 6 も出ましたので、そろそろ移行を考えています。
実際の sendmail.mc 作成で役立つのはこうもり本であることは間違いないですが、とても重いので、 sendmail のソースにある cf/README やインターネット上にあるその日本語訳cf/READMEなどを参考にすれば良いと思います。
次に作成された sendmail.cf のテスト方法をおさらいしてみます。
まず、sendmail をルールテスト・モードで起動します。
/usr/sbin/sendmail -bt -C./sendmail.cf
これで、プロンプト > が出力されて入力待ちになります。ここで、
> rule,rule,rule... アドレス
とルールセットとアドレスを指定すれば変換結果が得られるのが基本でしたね。
定義マクロの値とクラス・マクロの値の表示はそれぞれ、$ と $= が使えます。
> $j > $=w
マクロの値を変えるには、.D と .C を使えばよいです。
> .Djnew.example.co.jp
=S に続いてルールセット番号またはシンボル名を指定すれば、ルールセットも表示できます。
> =S0 > =SParseLocal
=M は配信エージェントの表示ですが、すべての定義が表示されてしまいます。
> =M
/canon は、指定したホストの標準名を表示します。
> /canon www getcanonname(www) returns fedora.example.co.jp >標準名を得る様子は、デバッグ・スイッチ
> -d38.20
を指定すればよいです。
さて、今までのルールセットのテストでは、呼び出すルールセットを順番に指定していましたがこれを /tryflags , /parse , /try を使ってテストしてみます。
/tryflags は、引数が、[ h | e ][ s | r ]で、ヘッダまたはエンベロープ、発信者または受信者を表します。
> /tryflags hs (例: ヘッダの発信者アドレス)
/parse 受信者アドレス は、
3,0 で配信エージェント、受信者のホスト、受信者のアドレスの3組を求めてから、
その配信エージェントの R= 式の指示に従って、
受信者のアドレスを 2,エンベロープ用受信者ルールセット,final によって変換した結果を表示しています。
> /parse espiya@fedora.example.co.jp ......... parse returns: $# local $: espiya 2 input: espiya 2 returns: espiya EnvToL input: espiya EnvToL returns: espiya final input: espiya final returns: espiya mailer local, user espiya >
/try 配信エージェント address は、
/tryflags の指示に従って、アドレスの種類を4つから選んでそれに応じて配信エージェントの R=式 または S=式 からルールセットを選び変換します。つまり、
/tryflags hs なら、 3,1,ヘッダ用発信者ルールセット,final
/tryflags hr なら、 3,2,ヘッダ用受信者ルールセット,final
/tryflags es なら、 3,1,エンベロープ用発信者ルールセット,final
/tryflags er なら、 3,2,エンベロープ用受信者ルールセット,final
のようなルールセットを使ってアドレスが変換されます。最後のケースは/parse の結果と一緒ですね。
> /try relay espiya@mail000.goo.ne.jp
これらは、配信エージェントで F=5 が指定されていた場合のルールセット5 の呼び出しまではテストしないので、それは自分で行う必要があります。
最後に、
> -d21.12
でルールの動作状況を詳しく見ることができます。
以上長い間 sendmail について見てきましたが、これでこうもり本なしでも簡単な sendmail.mc が作成できる気分になりました。
相変わらずcoLinux は安定していますが、Windows の update でリブートするときに、シャットダウンする必要があり残念です。また coLinux 用の Fedora Core 6 も出ましたので、そろそろ移行を考えています。