今回は、そんなあなたに、自分の FreeBSD でメールのバーチャルドメインをしようっ!!。特集です;-)。
理屈は簡単です。例えば、環境を以下の様にした場合を説明します。
自分の取得したドメイン:running-dog.net
メール用ドメイン:running-dog.net
メール用サブドメイン1:kuro.running-dog.net
メール用サブドメイン2:pochi.running-dog.net
メールアドレス:takachan
と、有った場合、自分のマシンで受信出来るメールアドレスは、
takachan@running-dog.net
takachan@kuro.running-dog.net
takachan@pochi.rorunning-dog.net
全てを login 名 takachan で受信出来る様にする。と、言う設定を行う事です。送信に付いてはちょっと後で説明します。
では早速とらいっ!!一番最初に行う事。
↓
DNS のサブドメインの MX レコードを自分の FreeBSD に向けるっ!!
次にっ!! sendmail.cf の設定と・・。うーうー。けどもだいじょーぶ。今回のは非常に楽です。では順を追って設定して行きましょう(^^)。
1.メールアドレスと loginID の対応リストを作ります。
--------------- takachan@running-dog.net takachan takachan@pochi.running-dog.net takachan takano@kuro.running-dog.net takachan takano@boyoyon.foo.co.jp takachan boyoyon@boyoyon.foo.co.jp takachan@running-dog.net ----------------大体上記の様に、スペースで区切ります。見ての通り、左側のアドレスに来たメールが、右側のアドレスに変換され、その人のスプールに溜ります。二つの loginID とメールアドレスはどの様に書いても特に問題は無いです。
2.hash デタベース作ります。
FreeBSD に標準バンドルのコマンド makemap コマンドを使います。後、環境も一緒に構築しましょう。
---------------- roman# mkdir /etc/maildb roman# cd /etc/maildb roman# vi list roman# /usr/sbin/makemap -v hash /etc/maildb/maildb.db < list key=`takachan@running-dog.net', val=`takachan' key=`takachan@pochi.running-dog.net', val=`takachan' key=`takano@kuro.running-dog.net', val=`takachan' key=`takano@boyoyon.foo.co.jp', val=`takachan' key=`boyoyon@boyoyon.foo.co.jp', val=`takachan@running-dog.net' roman# roman# ls -l total 74 -rw-r--r-- 1 root wheel 848 Oct 15 00:00 README -rw-r--r-- 1 root wheel 256 Oct 15 00:00 list -rw-r--r-- 1 root wheel 32768 Oct 15 00:00 maildb.db roman# ----------------と、言う事で、/etc/maildb と言う所に一通り、環境が整いました。makemap の hash オプションは gdbm が付きでコンパイルされてないと対応していません。sendmail を自分でバージョンアップした人は一緒に makemap もコンパイルしてあげましょう。
3.いよいよ sendmail.cf を編集します。
って書いても・・。なぁんも問題無いです。FreeBSD に最初から標準に付いている /etc/sendmail.cf をそのまま利用します。そんでもって以下の行を適当な部分に追加します。
・追加そのいち
---------------- # Varchial Mail by Takano. # Declare mbt as a hash-lookup database: Kmaildomains hash /etc/maildb/maildb.db ----------------作製したデータベースの宣言を行います。この設定は比較的上の方に書きます。私のには 106 行目位に書いています。
・追加そのに
---------------- ################################################################### ### Ruleset 98 -- local part of ruleset zero (can be null) ### ################################################################### S98 # Varchial Mail by Takano. # 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 . > ----------------見ての通り、Ruleset 98 セクションに書きます。注意点ですが、各パラメータの区切りは 一応 TAB にしましょう。私の場合、$: で始まる所は TAB が無いと正しく動きませんでした。
と、言う事で早々とバーチャルメールの設定が完了してしまいました(^^;;。今後のアカウント追加等は /etc/maildb/maildb.db を更新するだけで OK です。あーーらくちん。
#余談ですが、同じ機能を Solaris2.5.1 に持たせようとしたけれど、どうしても makepam が正しくコンパイル出来ませんでした・・(g_g)。
4.さてっ!!いよいよテストだっ!!
ここまで来たら sendmail をリスタートしてテストです。テスト方法はこっちを見て参考にしてください。list に宣言した全てのアドレスがローカルホスト内で処理されれば OK。もし外に出て行ってしまう様ならちょっと間違えたかもしれない。もう一度トライして見ましょう。
5.バーチャルメールその後・・。
これで一応、バーチャルなメールサーバが完成しました。後は、qpopper をインストールして DNS に 自分のマシンに mx なるサブドメインなりを付けてあげるともーすっかり SMTP/POP サーバとなります。ふっふっふっ。どーするぅ?プロバイダでも初めてみるぅ?;-P。
私の書いたホームページの項目を全て見ている方であれば、mule(xemacs)+mew+im+pwerl5.00403 の組合せのメールの処理をちょっとは知っているはず。知らない方は こっちゃへごー → ごーごー
mew1.90 以上のバージョン、im-70 以上のバージョンでは、送信するアドレス(From: になるメールアドレス)を、自分の任意のメールアドレスに書き換える事が可能になっています。
今までの FreeBSD 標準バンドルの /etc/sendmail.cf はメールを送信すると、From: 行にホスト名が付いてしまったりして、 sendmail.cf を書き直さなければならなかったのですが、このメーラセットを使うと sendmail.cf を書き直す必要もじぇーんじぇーん有りません。
im-70 以上をインストールすると、自分のホームディレクトリ内に ~/.im/Config と言う環境設定ファイルを作製するのですが、そのファイルの設定をちょこっといじるだけで良いです。
~/.im/Config のサンプルはここにあります。一応目を通してください;-)。
さて、この mule(xemacs)+mew+im のセット。すごぉく使いやすくて良かったぞなもし。メールの設定もずいぶんとらくちんになったっ!!良かったっ!!
----------------
###### DOMAIN Field
Address=takachan@running-dog.net # set ~/.im/Config !
FromDomain=running-dog.net
ToDomain=running-dog.net
#
#Address=takachan@foo.co.jp # set ~/.im/Config !
#FromDomain=foo.co.jp
#ToDomain=foo.co.jp
######
----------------
~/.im/Config の中の上記の設定を送信したい時のドメインに変更するだけで OK です。ただ、この場合、実質的に変更出来るのはドメインだけで、login 名までは変える事が出来ません。login 名を変えたい時は User=takano と宣言してあげましょう。
----------------
Address=takano@running-dog.net # set ~/.im/Config !
FromDomain=running-dog.net
ToDomain=running-dog.net
User=takano
----------------
これで、takachan で login していても takano@running-dog.net でメールの送信が可能です。ただ、From 行のメールアドレス以外のメッセージは /etc/passwd から持って来ていますので、いざと言う場合はそこも変えてあげましょう。本当はやはり ~/.im/Config で変更が可能なのですが、いかんせん mew のマニュアルが無いので設定方法がいまいち解りません。詳しくは mew の ML に入るしかありません・・。