Postfix + Maildrop Howto


はじめに

このドキュメントは maildrop 配送エージェントを Postfix に組み込むための 様々なオプションを議論します:

local 配送エージェントを使わない直接配送

local(8) 配送エージェントを媒介として 使わずに、メールを直接 maildrop に 配送するように Postfix を設定することができます。これはローカル aliases(5) 展開や $HOME/.forward ファイルの 処理が受けられないことを意味します。たいていは UNIX ホームディレクトリを 持たない受信者を持つ、ホスティング しているドメイン に対してこれをおこないます。

以下の例は some.domain と someother.domain に対して maildrop を使う方法を 示しています。

 1 /etc/postfix/main.cf:
 2     maildrop_destination_recipient_limit = 1
 3     virtual_mailbox_domains = some.domain someother.domain
 4     virtual_transport = maildrop
 5     virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
 6     virtual_alias_maps = hash:/etc/postfix/virtual_alias
 7 
 8 /etc/postfix/virtual_mailbox:
 9     user1@some.domain        ...text here does not matter...
10     user2@some.domain        ...text here does not matter...
11     user3@someother.domain   ...text here does not matter...
12 
13 /etc/postfix/virtual_alias:
14     postmaster@some.domain           postmaster
15     postmaster@someother.domain      postmaster

以下で使われる vmail ユーザ ID は maildrop が走るときに使うユーザです。 これはバーチャルメールボックスが全て同じ所有者の場合に、その所有者となります。 maildrop が suid の場合 (maildrop のドキュメントを参照)、maildrop はメールを 配送するのに適切な所有者に変わります。

注意: maildrop ユーザとして postfix ユーザを使ってはいけません。

/etc/postfix/master.cf:
    maildrop  unix  -       n       n       -       -       pipe
      flags=ODRhu user=vmail argv=/path/to/maildrop -d ${recipient}

上記のコマンドライン引数などの詳細は pipe(8) マニュアルページにあります。

user+extension@domain 形式のアドレスをサポートしたければ、代わりに 以下を使ってください:

/etc/postfix/master.cf:
    maildrop  unix  -       n       n       -       -       pipe
      flags=ODRhu user=vmail argv=/path/to/maildrop 
      -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${nexthop}

メールは ${user}@${nexthop} に配送されます (キーは maildrop userdb 検索に マッチします)。${extension} やその他のアドレスの要素は $1, $2, $3, ... として maildrop ルールで使え、master.cf では省略可能であり、不要であれば maildrop で 無視されます。

local 配送エージェントを使った間接的な配送

local(8) 配送エージェントを通して、メールを maildrop に配送するように Postfix を設定することができます。これは上で議論した "直接" なアプローチ よりは若干効率が落ちますが、ローカル aliases(5) 展開や $HOME/.forward ファイルの利便性が得られます。たいていは UNIX システムアカウントを持ったユーザを持つ、 mydestination にリストアップ されたドメインに対してこれを使います。

全ての UNIX システムアカウントに対して maildrop 配送するよう設定するには:

/etc/postfix/main.cf:
    mailbox_command = /path/to/maildrop -d ${USER}

注意: ${USER} は大文字でつづります。

特定のユーザのみに maildrop 配送を有効にするには、 Postfix local(8) 配送エージェントの mailbox_command_maps 機能が使えます:

/etc/postfix/main.cf:
    mailbox_command_maps = hash:/etc/postfix/mailbox_commands

/etc/postfix/mailbox_commands:
    you    /path/to/maildrop -d ${USER}

特定のユーザに対する maildrop 配送はユーザの $HOME/.forward ファイルから 呼び出すことでも可能です:

/home/you/.forward:
    "|/path/to/maildrop -d ${USER}"

クレジット