coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

sendmail.mc LOCAL_RELAYとMAIL_HUB

2007-05-24 00:16:02 | sendmail
引き続き sendmail 8.14.1 ネタですが、あともう少ししたら一応終わりにしたいと思います。

今回は、sendmail.mc で少し分かりにくい、LOCAL_RELAY と MAIL_HUB について調べてみました。

最初に、LOCAL_RELAY mcマクロですが、mc ファイルに指定するためには以下の行を追加します。

define(`LOCAL_RELAY',  `mail.example.co.jp')

これによって生成される sendmail.cf 内で、以下の定義マクロが追加されました。
DRmail.example.co.jp

また、Slocaladdr=5 内で、
R< > $+        $: < $R > $1        try relay

が追加されました。これは、Mlocal の F=式で F=5 が指定されている場合に呼び出されるルールセットです。従って、LOCAL_RELAY とは、local なホスト宛とみなされたメールをエイリアス展開後に別のホストに転送するための機能といえるようです。

普通のローカルユーザ宛のアドレスでは、Parse1 ルールセットで、
$# local $: ユーザ名

に変換されますので、例えば、
> 5 espiya
..................
localaddr    returns: $# relay $@ mail.example.co.jp 
                         $: espiya < @ mail.example.co.jp >
>

となって、LOCAL_RELAY へ再転送されます。(出力は適当に折り曲げてあります。)MXレコードで複数のホストが指定してあり、サブサーバが受けたメールを本サーバに一極集中的に集めるのには便利ですね。

次に MAIL_HUB mcマクロを見てみます。mcファイルでの指定は次のようになります。

define(`MAIL_HUB',  `mail.example.co.jp')dnl

生成される sendmail.cf ファイルは
DHmail.example.co.jp

の定義マクロ追加と、Slocaladdr=5 内で、
R< > $+      $: < $H > $1         try hub

が追加されています。$R が $H に変わっただけですね。つまりどちらかを使えば良いみたいです。

それはともかく、明らかに2つの mc マクロは、ローカルユーザ宛てのメールに対する書き換え用です。

しかも、同じ lhs を持っているので、2つ同時に指定しても最初に定義されているRコマンドの方にだけヒットしてしまうのではないでしょうか。というわけでこれらを使うにはどちらか一方だけ使う方が良いみたいです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする