local-host-namesを使わないバーチャルホストの設定。

sendmail の設定でバーチャルホストを利用するには「/etc/mail/local-host-names に受信するドメインを登録しましょう。」ってのがほとんどなんだよねぇ・・。けど、まぁ、楽なのでええんですけど、送信時に問題があることが判明。

例えば、以下のファイルがあったとして、これを cat FILE | mail takachan@running-dog.net したとすると Reply-To: に指定したメールアドレスのドメイン名が sendmail.cf 内の DM に掲載されているドメイン名で上書きされてしまう。という、どうしようもない問題に遭遇するX-(。バーチャルドメインでのメールの送信時の問題ですね。バーチャルドメインのメールが受信できることだけで満足してたらいかんぜぉ。って感じ。

To: test@test.jp
Subject: test
From: takano@test.jp
Reply-To: test00@test.jp
test

 
ドメイン名を上書きしてしまうのは Reply-To: ヘッダだけなので、あまり気にならない人とか気づかない人もいるのかな?

しゃーないので local-host-names を使わないバーチャルドメインの設定をするしかない。今回は VIRTUSER_DOMAIN_FILE 項を使って mc ファイルを書き直してみたい。

/etc/mail/freebsd.mc があるんだけど、この中の一部を以下のように修正。class{w} のバーチャルホストの設定を利用しないようにして class{VirtHost} を利用する。

# no class{w} added class{VirtHost}
#define(`confCW_FILE', `-o /etc/mail/local-host-names')
VIRTUSER_DOMAIN_FILE(`-o /etc/mail/virtdomains')

 
この設定だけだと、sendmail.cf の DM が無くなるので、以下の行を更に追加。

Dwmail
Dmicmpv6.org
define(`confDOMAIN_NAME', `$w.$m')

 
以上、できたら make してでき上がり。sendmail.cf の Dj は自分の好みで編集するとして、ローカルホスト配信がもしかしたらエラーになるかもしれないので submit.cf の Dj も設定して上げれば問題はなくなることでしょう。

/etc/mail/virtdomains は、/etc/mail/local-host-names と同じ記述方法で特に問題はないでしょう。

あ、書いてないけど、/etc/mail/virtusertable については触れてませんけど、他のドキュメントとか読んでくださいね;-)。

bfe0 と ifconfig の alias。

自宅のサーバは FreeBSD 6.2-STABLE なんだけど、ドメインを都合三個取ったので、IPv4 はバーチャルドメインにしようと思ったのだけど、IPv6 は腐るほどあるのでサブドメインに対して一個づつアドレスを消費しよう。と思い以下のコマンドをばばばと 80 個位打ったわけですよ。

$ ifconfig bfe0 inet6 2001:240:e9:ffff::1003:n alias

 
そしたら、いきなり通信ができなくなってしました。あれぇ?と言うことで -alias しながら調べてみると bfe0 はどうやら 60 個しか alias ができないみたいです。ひどーー。

$ ifconfig bfe0 | grep inet | wc

 
で付いているアドレスの数が60個まではOKだけど、61個目のアドレスを付けた瞬間に通信ができなくなります。-alias で 60 個に戻すと通信が復活します。インターフェースが down したわけではありません。パケットを受け付けてくれなくなる感じです。

ちなみに rl0 と fxp0、そして bge0 で試しましたがこれらの NIC は alias の 60 個制限はありませんでした。と、言う事で、明らかに bfe0 のバグと言うか仕様?のようです。

bfe0 をお使いの皆様、お気をつけ下さい。