http://www.sendmail.org/m4/masquerading_relaying.html
マスカレードと中継
次のようにして、ホスト名を別のものに見せかける (マスカレードする) こと
ができます。
MASQUERADE_AS(`host.domain')
これにより、メールが $j からではなく、host.domain からの発信であるよう
にして送信することができます。自分自身のホスト名ががサブドメインとなる
ようなマスカレードは普通に行なわれます
(逆に、Berkeley が MIT のサイトであるように名前を偽るようなことは普通行ないません)。
この動作は、
FEATURE 定義
を使ってさらに細かく設定することが出来ます
(その為にありあまるほどの機能が用意されています)。例えば、
masquerade_envelope,
allmasquerade,
limited_masquerade,
masquerade_entire_domain
を参照してください。
マスカレード名は正規化されることはありませんので、
それは唯一の本当の名前であること
(すなわち FQDN であって CNAME ではないこと) が重要です。
そうしないで、もしCNAME を使ってしまうと、
受信側でその CNAME が (意図に反して) 正規化されてしまうかもしれません。
したがって、この方法で CNAME 変換をだませる(正規化を抑制できる)
という訳ではありません。
通常、マスカレード出来るのは、
自分の機械から発信されたアドレス
(つまり正当でなく、まだ @domain が付いていない名前か、
{w} クラス、つまりローカルドメイン名のリストにある名前)
だけです。
このようにして定義された
マスカレードされる機械の名前は
{M} クラスで参照出来るのですが、それは次の方法で
増やすことも出来ます。
MASQUERADE_DOMAIN(`otherhost.domain')
この定義により、user@otherhost.domain 宛てのメールはローカルには配送されないものでも、
中継時に、user@otherhost.domain の文字の部分が、
MASQUERADE_AS で指定されたアドレスであるように書き換えられて配送されます。
この定義内容は、上記記述は、空白で区切ることで名前をいくつでも並べて
指定することも出来ます。
このような名前の一覧がファイルに格納されている場合、
MASQUERADE_DOMAIN_FILE(`filename')
とすることで、指定されたファイルから名前の一覧を読む (すなわち、クラス
{M} に要素を追加する) ことができます。
ホストあるいはサブドメインがマスカレードされることから除外するためには、
次のように指定することができます。
MASQUERADE_EXCEPTION(`host.domain')
この指定は、
一つ (もしくは二、三の) ホストの例外を除いて、
ドメイン全体をマスカレードしたい場合に便利だと思います。
通常は、ヘッダアドレスだけがマスカレードされます。もし、エンベロープも
同様にマスカレードしたい場合は、次のようにしてください。
FEATURE(`masquerade_envelope')
例外的に、内部のマスカレードする前の名前を
外部に見せることが必要とされるユーザが必ずあります。
root はその一例です
(root は 8.10 より前では「外部に見せる」のが既定となっていました)
このような場合に、
次のように指定することで、このリストにユーザを追加することができます。
EXPOSED_USER(`usernames')
この指定は、クラス {E} にユーザを追加します。同様のことを次のようにし
て行なうこともできます。
FE/etc/mail/exposed-users
正当でない名前(つまり @hostのない名前) があったら、
その全てをリレーホストに中継するようにもできます。
たとえば、中央のメールサーバがある場合、
そのホストに中継させることで、ユーザは .forward ファイルや aliases
を使用する必要がなくなるでしょう。
そうするには次のようにします。
define(`LOCAL_RELAY', `mailer:hostname')
この記述で、配送に使用するメイラの既定値を "relay" にする場合、
"mailer:" の部分を省略することができます。
ローカルの別名定義があって、中継する必要がない(して欲しくない)
ユーザ名がある場合、例えば
rootで、
これはローカルに別名が定義されているのが普通です。そのような場合には
次のようにすることで、
このリストにエントリを追加することができます。
LOCAL_USER(`usernames')
この指定はクラス {L} にユーザを追加します。
同様のことを次のようにして行なうこともできます。
FL/etc/mail/local-users
/var/spool/mail を共有する形を取っていて、
入って来るメールすべてを中央のハブに送りたい場合、次を使用します。
define(`MAIL_HUB', `mailer:hostname')
この場合も "mailer:" の既定値は "relay" です。
もし、
LOCAL_RELAY
と MAIL_HUB
の両方を定義し、
そして FEATURE(`stickyhost') を設定した場合は、
正当でない名前は LOCAL_RELAY に送られ、
それ以外のローカルな名前は MAIL_HUB に送られます。
注意:
user+detail 形式のアドレス
について、
この LOCAL_RELAY と MAIL_HUB を組み合わせて使用できないというバグが
(長い間ずっと) 存在しています。
クラス {L} 中の名前はローカルに配送されるので、
それらに対しては aliases ファイルまたは .forward
ファイルを持つ必要があります。
たとえば、mastodon.CS.Berkeley.EDU というホストで
FEATURE(`stickyhost')
を設定している場合、
LOCAL_RELAY, MAIL_HUB の設定と、宛先の組合せ
によって次のような効果があります。
FEATURE('stickyhost') がある時の LOCAL_RELAY と MAIL_HUB の効果
| メールの宛先 | 訳注 |
eric | eric@mastodon.CS.Berkeley.EDU |
LOCAL_RELAY に
mail.CS.Berkeley.EDU
を設定
|
mail.CS.Berkeley.EDU
(ローカルな別名はないとして。)
|
(ローカルに配送される。
別名があれば効く)
|
正当名だけ受取る |
MAIL_HUB
に
mammoth.CS.Berkeley.EDU
を設定
|
mammoth.CS.Berkeley.EDU
(別名付けされた)
|
mammoth.CS.Berkeley.EDU
(別名付けされた)
|
必ず転送 |
LOCAL_RELAY と
MAIL_HUB の両方に上記をそれぞれ設定
|
mail.CS.Berkeley.EDU
(MAIL_HUB は効かず、
LOCAL_RELAY 優先)
|
mammoth.CS.Berkeley.EDU
(ローカルな別名はないとして。
MAIL_HUB が効く)
|
FEATURE(`stickyhost') を設定しない場合、LOCAL_RELAY と MAIL_HUB はそれ
ぞれ個別に動作し、MAIL_HUB の設定が優先されます。
外部に出て行くメールすべてを中央の中継サイトに送りたい場合は、次のよう
に
SMART_HOST
を定義します。つまり、以下のようになります。
- LOCAL_RELAY
-
LOCAL_RELAY は正式でない宛先 (たとえば "eric")
に適用されます。
- MAIL_HUB
- はローカルなドメイン上のホストに正式な宛先
(例えば "eric@mastodon.CS.Berkeley.EDU") に適用されます。
- SMART_HOST
- は他のホストあるいはブラケットで囲まれたアドレスで
正式な宛先 (例えば
"eric@mastodon.CS.Berkeley.EDU" あるいは
"eric@[127.0.0.1]") に適用されます。
しかし、他の中継定義 (たとえば、UUCP_RELAY, BITNET_RELAY,DECNET_RELAY,
FAX_RELAY) は SMART_HOST に優先することに注意してください。このため、
本当にすべてのメールを単一の中央のサイトに送りたい場合は、他の中継定義
をすべて unset しなければなりません。あるいは、さらによい方法として、
それを行なう最小限の設定ファイルを見つけるか作成するかしなければなりま
せん。
適切に動作させるために重複を抑制するには、ホスト名はドットで終端させる
のがもっともよい方法です。
define(`MAIL_HUB', `host.domain.')
host.domain. の最後のドットに注意して下さい。
|