複数ドメイン メール バーチャル http://home.jp.FreeBSD.ORG/cgi-bin/showmail/FreeBSD-users-jp/24586 USERTABLE_MAPS=<ドメイン名=タイプ:データベース:フラグ> (複数記述可能) USERTABLE_MAPS に指定したドメイン名に対して、usertable を参照した メールアドレスの書き換えやメールの転送を行なう。この機能は、userdb として sendmail R8 に用意されているものに似ているが、userdb はローカル の発信/受信メールに関して処理を行なうのに対し、usertable は任意のアド レスに関して処理を行なうことができるという点で異なっている。 ドメイン名に local を指定すれば、対応するデータベースは userdb と同様 にローカルの発信/受信用として扱われる。 例) USERTABLE_MAPS='another.domain=hash:/etc/ut.ad' (/etc/ut.ad の内容:) # user1@another.domain 宛のメールを user1 のメールボックスへ user1:maildrop user1 # user2@another.domain を user3@foo.bar に書き変え user2:mailname user3@foo.bar # user2@another.domain 宛のメールを user4@foo.bar に転送 user2:maildrop user4@foo.bar # exact match がなければ any@another.domain 宛のメールを # user5@foo.bar に転送 *:maildrop user5@foo.bar :default:maildrop user5@foo.bar # user6@another.domain が default match した場合 user6@foo.bar # に転送 *:maildrop %1@foo.bar :default:maildrop %1@foo.bar ここに定義されていない user@another.domain 宛のメールの扱いは フラグの指定によって決定される。フラグに error を指定した場合 は、User Unknown エラーになる。フラグになにも指定しなかった 場合は、上位の MX ホストが存在すればそちらに転送される。 当然ながら上位の MX ホストが存在しなければ local config error となる。 USERTABLE_MAPS には複数のドメイン名およびドメイン名毎のデータベースを 指定することができるため、一つのホストでユーザ空間の異なる複数のドメ インを扱いたい場合に便利である。 userdb にない usertable だけの機能として maildrop 機能を利用すると、 postmaster@host.domain と postmaster@domain を区別させるようなことが できる。 例) USERTABLE_MAPS='domain1=hash:/etc/ut.dom1 \ domain2=hash:/etc/ut.dom2' (/etc/ut.dom1 の内容:) postmaster:maildrop u1 (/etc/ut.dom2 の内容:) postmaster:maildrop u2 postmaster@domain1 宛のメールは u1 に、 postmaster@domain2 宛のメールは u2 に送られる。 最初の例において、ドメイン部のつかない user2 あるいは OFFICIAL_NAME のついた user3@OFFICIAL_NAME に対しては、another.domain に対する マップは参照されない。このようなアドレスに対して書換えを行ないたい 場合は、ドメイン名 local に対するデータベースを定義し、その中で user2:mailname user3@foo.bar の定義をしておく必要がある。 データベースタイプは btree, hash(NEWDB), dbm(DBM), nis が利用できる。 データベース名は、nis の場合は NIS データベース名を指定する。 btree, hash(NEWDB) の場合、データベース名に指定した名前に .db を 補ったファイルを用意する。usertable から usertable.db を作成する には、sendmail R8 のパッケージに付属している makemap を利用する。 % makemap btree usertable.db < usertable (btree の場合) dbm(DBM) の場合は、makedbm を利用する(/usr/etc/yp/ などにある)。 なお、外部データベースを利用しているため、更新の際に sendmail の 再起動は必要ない。 *.def に hash で設定した場合は、 makemap hash /etc/ut.xxxxxxxxxxx.db < /etc/ut.xxxxxxxxxxx makemap hash /etc/ut.yyyy.db < /etc/ut.yyyy となると思います。 [設定例] Samples/Tables/* ###################################################################### # sample of usertable # # user:mailname string-used-as-name-of-sender # user:maildrop address-of-mail-spool # (this format is as same as user database) # motonori:mailname Nakamura.Motonori nakamura.motonori:maildrop motonori@kuis.kyoto-u.ac.jp root:maildrop root-all@host.domain postmaster:maildrop pmasters@host.domain USERTABLE_LOCAL_REWRITE=yes/no yes を指定すると、local に対するマップ定義が指定されている場合に、 user@OFFICIAL_NAME や user@ACCEPT_ADDRS 形式のアドレスを、mailname に指定されたアドレスに書き換える。ただし、発信者アドレスについて のみ。 デフォルトは no。 USERTABLE_RECIPIENT_REWRITE=yes/no USERTABLE_LOCAL_REWRITE による書き換えを受信者アドレスについても おこなう。 デフォルトは no。