[Up] [Next] [Previous]

仮想ドメイン環境での電子メールの 設定方法

WWWのレンタルサーバ等を構築して、一つのホストで複数のドメイン環境をサ ポートする場合、webmaster のような同じユーザ名が電子メールアドレスとし て使われるので、困ってしまいます。(/etc/aliases で処理できれば良いので すが、リモートアドレスを別名にできないので、困ってしまいます。)

例えば、下記のような場合、

メールアドレス 受け取るメールボックス名
user@aaaaa.com user1
user@bbbbb.com user2
user@ccccc.com user3
sendmail.cf をいちいち書き直す方法もありますが、できればこれは避けたい ものです。

一般的な解決方法として、メールアドレスと受け取るメールボックスの対応表 を別に作って、sendmail.cf で読み込ませるという方法が行われています。そ の一つを紹介します。

  1. まず、メールアドレスと受け取るメールボックス名の対応表 (/etc/sendmail.db) を作ります。右のメールボックスは他のメールア ドレスでも構いません。
    webmaster@client1.com        bill
    webmaster@client2.com        tom
    webmaster@client3.com        mary@hogehoge.com
    errordom.com                 ERROR "No such user"
           
  2. データベースをコンパイルします。
    % /etc/makemap hash /etc/out.db </etc/sendmail.db
    そうするとハッシュテーブルが作られます。データベースが更新の際、 上記コマンドを実行します。ハッシュは、hash , btree, dbm を使い ます。これは、sendmail を作る時に選択して下さい。
  3. sendmail.cf に下記の行を加えます。

    1. 最初の方にデータベースを定義しておきます。
      # Declare mbt as a hash-lookup database:
      Kmaildomains hash /etc/out.db
      	      
    2. ルールセット 98 (ルールセット0の一部) に下記を加えます。 自動生成したものでなければ、ルールセット0の適当な箇所に 加えます。

      # Use mailboxtable-database:
      R$+ < @ $+ . >      $: $1 < @ $2 > .
      R$+ < @ $+ > $*     $: $(maildomains $1@$2 $: $1 < @ $2 > $3 $)
      R$+ < @ $+ > $*     $: $(maildomains $2 $: $1 < @ $2 > $3 $)
      RERROR $*           $#error $: $1
      R$+ < @ $+ > .      $: $1 < @ $2 . >
      	      
  4. sendmail をテストし、問題がなければ実行します。

[Up] [Next] [Previous]