<%Moblog()%> [Postfix] バーチャルメールボックスドメインでMDAを使う場合 - がーぶろぐ(G-Blog)
[Postfix] バーチャルメールボックスドメインでMDAを使う場合
情報が少なくて苦労したけど、何とか設定に成功したのでメモ。

Postfixでは、システムアカウントのメールボックスに配信を行うときはlocalがやりますが、バーチャルメールボックスの場合だとvirtualが配信を行います。
で、localだと配信エージェント(procmailとかね)を使うのは簡単(.forwardに書くだけ)ですが、バーチャルメールボックスの場合はvirtualが直接メールボックスに配信するので、MDAが利用できないため、spamassassinやbsfilterなどのスパムフィルタや、個人的なメール振り分けができなくなっています。

でいろいろ調べた結果、localのようにエージェント経由でメールボックスに配信するのではなく、MDAに直接メールボックスへの配信が行えるようなのでやってみました。
環境:
OS: Debian Linux 4.0r1(lenny)
MTA: Postfix 2.4.6-2

Postfixでのバーチャルメールボックス運用は、本家のPostfix バーチャルドメインホスティング Howtoでも書かれているので割愛。

今までMDAはずーっとprocmailを使ってたんですが、レシピの書き方が複雑で間違えやすいのに辟易してたので、courier-MTAシリーズのMDA、maildropを使ってみました。

さっそく必要パッケージをGET。
apt-get install maildrop

その後、配送マップをエディタで作成します。
以下サンプルでは/etc/postfix に transport と言うファイル名で配送マップを記載します。
[/etc/postfix/transport]
virtualdomain.domain maildrop:

もちろん、作成した後は「postmap /etc/postfix/transport」でハッシュデータベース化します。

その後、main.cfに以下の1行を足し、バーチャルドメインでの配送をmaildropに落とすように指定します。

[main.cf]
transport_maps = hash:/etc/postfix/transport
virtual_transoprt = maildrop

(08/05/17 追記)
main.cfには以下の一文を追記してください。
maildrop_destination_recipient_limit = 1
これを入れないと、複数Toに入れたメールアドレスが送信できないみたいです…。

その後、maildropエージェントでの配送設定を変更します。
[master.cf]
maildrop unix - n n - - pipe
flags=Ru user=mail argv=/usr/bin/maildrop -d ${user}@${nexthop}

※ ここでの「user」に注目。debianパッケージで入れたmaildropの場合、
※ mail・daemonユーザ以外でmaildropを実行すると「not trasted user」として
※ 動作してくれません。

maildropに「${user}@${nexthop}」として渡しているのは、うちのサーバではバーチャルドメインアカウントの認証は全てcourier-authdaemonに任せており、ユーザ名は全て「name@domain」形式で管理しています。
ここで「「${user}@${nexthop}」」として渡してあげると、「maildrop -d user@domain」として実行されたことになり、maildropがcourier-authdaemonの認証データベースに記載されているホームディレクトリやUIDなどを環境変数HOMEとして、設定UIDで動作してくれるようになります。

あとはcourier-authdaemonで指定されている場所に.mailfilterとして振り分けルールを書いてあげればOK。maildropの振り分けについては、「maildrop 利用のメモというかtips」に詳しく書いてあります。

ちょっと前から、サーバにつけていたドメインもバーチャルドメインとして動作させるようにしていたので、振り分けができなくなるかと思い悩んでいたのですが、これにてスパムの振り分けもできるようになってスッキリ。やっぱりUNIXって便利だわー。

作者について

おなまえ:がー
仕事したくないから会社作ったニートヒッキーのキモヲタオヤジ。 乗ってるバイクはBaliusII(B9)。
バイク乗りに100の質問
UNIXユーザーに50の質問
現在の経県値
twitter
blogpeople
blogpeople
blogpeople
blogpeople