引き続き sendmail 8.14.1 ネタですが、あともう少ししたら一応終わりにしたいと思います。
今回は、sendmail.mc で少し分かりにくい、LOCAL_RELAY と MAIL_HUB について調べてみました。
最初に、LOCAL_RELAY mcマクロですが、mc ファイルに指定するためには以下の行を追加します。
これによって生成される sendmail.cf 内で、以下の定義マクロが追加されました。
また、Slocaladdr=5 内で、
が追加されました。これは、Mlocal の F=式で F=5 が指定されている場合に呼び出されるルールセットです。従って、LOCAL_RELAY とは、local なホスト宛とみなされたメールをエイリアス展開後に別のホストに転送するための機能といえるようです。
普通のローカルユーザ宛のアドレスでは、Parse1 ルールセットで、
に変換されますので、例えば、
となって、LOCAL_RELAY へ再転送されます。(出力は適当に折り曲げてあります。)MXレコードで複数のホストが指定してあり、サブサーバが受けたメールを本サーバに一極集中的に集めるのには便利ですね。
次に MAIL_HUB mcマクロを見てみます。mcファイルでの指定は次のようになります。
生成される sendmail.cf ファイルは
の定義マクロ追加と、Slocaladdr=5 内で、
が追加されています。$R が $H に変わっただけですね。つまりどちらかを使えば良いみたいです。
それはともかく、明らかに2つの mc マクロは、ローカルユーザ宛てのメールに対する書き換え用です。
しかも、同じ lhs を持っているので、2つ同時に指定しても最初に定義されているRコマンドの方にだけヒットしてしまうのではないでしょうか。というわけでこれらを使うにはどちらか一方だけ使う方が良いみたいです。
今回は、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コマンドの方にだけヒットしてしまうのではないでしょうか。というわけでこれらを使うにはどちらか一方だけ使う方が良いみたいです。