サイトの都合でカスタマイズしたい場合は
my.domain に属するクライアント用の設定例
divert(0) VERSIONID(`...') OSTYPE(freebsd4) DOMAIN(generic) MASQUERADE_AS(`my.domain')dnl @ の後ろをドメイン名にする MASQUERADE_DOMAIN(`$j')dnl 自分の FQDN が書換え対象 EXPOSED_USER(``daemon news usenet postmaster MAILER-DAEMON'') FEATURE(`limited_masquerade')dnl 書換えるドメインを制限 FEATURE(`masquerade_envelope')dnl エンベロープも書換える FEATURE(`allmasquerade')dnl To:, Cc: などもすべて書換える FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access') FEATURE(blacklist_recipients) FEATURE(local_lmtp) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') define(`confCW_FILE', `-o /etc/mail/local-host-names') define(`confMAX_MIME_HEADER_LENGTH', `256/128') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') MAILER(local) MAILER(smtp)
divert(0) VERSIONID(`...') OSTYPE(freebsd4) DOMAIN(generic) MASQUERADE_AS(`my.domain')dnl @ の後ろをドメイン名にする MASQUERADE_DOMAIN(`$j')dnl 自分の FQDN が書換え対象 EXPOSED_USER(``daemon news usenet postmaster MAILER-DAEMON'') FEATURE(`limited_masquerade')dnl 書換えるドメインを制限 FEATURE(`masquerade_envelope')dnl エンベロープも書換える FEATURE(`allmasquerade')dnl To:, Cc: などもすべて書換える define(`LOCAL_RELAY', `mx.my.domain.') define(`MAIL_HUB', `mx.my.domain.') define(`SMART_HOST', `mx.my.domain.') define(`confCW_FILE', `-o /etc/mail/local-host-names') define(`confMAX_MIME_HEADER_LENGTH', `256/128') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') MAILER(smtp)
サンプルが /etc/mail/access.sample にある。
となっていると、@foo.my.domain および @bar.my.domain 宛も受けとる。 自ホスト名を書く必要はない。 ワイルドカードは使えない。# # sample /etc/mail/local-host-names # foo.my.domain bar.my.domain
戦略としては、メイルアドレスの書換えを利用して、自ホスト名 (FQDN) のみ希望のドメイン名に書換える手法をとる。
を定義。MASQUERADE_AS(`my.domain')dnl From: 等を @my.domain にする MASQUERADE_DOMAIN(`$j')dnl 自ホスト名が書換え対象 EXPOSED_USER(``daemon news usenet postmaster MAILER-DAEMON'') FEATURE(`limited_masquerade')dnl 自ホスト名のみ書換える FEATURE(`masquerade_envelope')dnl エンベロープも書換える FEATURE(`allmasquerade')dnl Cc: のアドレスなども書換える
なお、 EXPOSED_USER(`usernames ...') または EXPOSED_USER_FILE(`filename') で指定されたユーザーに関しては書換えは行なわれない。 これらが未定義であっても、root はデフォルトで入っている。 CF-3.7W では
root daemon news usenet postmaster MAILER-DAEMONが定義されていたので、同様の動作を望む場合は
EXPOSED_USER(``daemon news usenet postmaster MAILER-DAEMON'')を定義する。 ハイフンが入っているため `...' ではなく ``...'' で括る必要があることに注意。
※ limited_masquerade を使う理由MASQUERADE_DOMAIN(または MASQUERADE_DOMAIN_FILE)と limited_masquerade を用いないと、仮想ドメインを扱う時に混乱が生じる。 具体的には、 ローカルで受けとるべき別々のアドレスを Cc: や From: で指定していても、 それらがすべて MASQUERADE_AS のアドレスに書換えられてしまう。
例) foo.my.domain と bar.my.domain が local-host-names にあって MASQUERADE_AS(`foobar.my.domain') かつ FEATURE(`allmasquerade') の場合
limited_masquerade を定義しないと
がTo: alpha@foo.my.domain Cc: bravo@bar.my.domain From: charlieに書き換わってしまう。 このようなことを防ぐために、limited_masquerade を使って自分の FQDN だけを書き換え対象とする。To: alpha@foobar.my.domain Cc: bravo@foobar.my.domain From: charlie@foobar.my.domain
FEATURE(`always_add_domain')を定義する。
サブドメインの数がそれほど多くなく、変更が滅多にないのであれば、すべて local-host-names に書く手もある。 しかし、local-host-names ではワイルドカードは使えないので、変更があるたびに設定を変えなければならない。 それを避けるには
を全部同じホストに定義。 ホスト名の最後に . を付ける。define(`LOCAL_RELAY', `hostname.')dnl @ 以下がない時に送られるホスト define(`MAIL_HUB', `hostname.')dnl @my.host の時に送られるホスト define(`SMART_HOST', `hostname.')dnl @other.host @[x.y.z.w] の時の送り先
※ masquerading していて limited_masquerade を定義しない時は注意が必要。既述の通り、To: Cc: From: のうちローカルで受けとるべきドメインがすべて MASQUERADE_AS のものに書換えられてしまうので、
MASQUERADE_EXCEPTION(`foo.my.domain bar.my.domain')などと指定して、これらについて書換えが行なわれないようにする必要がある。
を定義した上で(標準の sendmail.cf でも定義されている)、/etc/mail/access にFEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
などと書く。192.168 RELAY
を定義する。 デフォルトでは未定義。define(`confCOPY_ERRORS_TO', ``MAILER-DAEMON'')
を定義すればよい。FEATURE(`relay_based_on_MX')