next up previous contents
Next: 5.3.3 設定のチェック Up: 5.3 メイル環境の設計 Previous: 5.3.1 ハブホストに集中、内側は直接配送の設定

5.3.2 Other Setting

Maildir

Postfix は sendmail 互換を意識しているために、ユーザーのメイルの格納 形式はデフォルトでは sendmail と同じ、mbox 形式で、格納場所は通常 /var/mail/$USER になっている。mbox 形式は一つのファイルに From で区切られたメイルを継ぎ足して行く形式になっているために、 ファイルのロックなどの問題が元もとあるのと、/var/mail の共有場所に ファイルを置くための問題が指摘されている。これに対して、qmail など ではユーザのあるディレクトリ以下に、メイル毎に別々のファイルとして 置く方法が取られており、これを Maildir 形式と呼ぶ。Postfix でも Maildir 形式で利用することも可能である。これを行いたい場合には、以下の ように設定する。

  home_mailbox = Maildir/

末尾の / を忘れてはならない。この場合、$USER/Maildir/ の 下にメイルが格納される。

Maildir 形式は確かに優秀な方法ではあるが、これまでのアプリケーションとの 互換性が最大の問題であり、既に mbox 形式で運用しているサイトが Maildir形式 に移行するには、未だに障壁が高いのが難点である。

アドレスエクステンション

配送的には一人のユーザでありながら、最終的なローカル配送の段階で複数 に分かれるようなメイルのアドレスの拡張が行える。具体的には、

  recipient_delimiter = +

のように設定する(デフォルトでコメントアウトされているので、コメントを取る だけで良い)。これによって、hogehoge+foo も同じアドレス hoge として扱われ、配送される。従って、振り分け ソフトで自分で振り分けても良いが、通常 .forward+foo という ファイルを用意すると、hoge 宛のメイルは .forward が参照 されるが、hoge+foo については .forward+foo が参照される という仕掛けがあるので、メイリングリストなども簡単に運営出来るように なっている。

コマンドへのパイプ

aliases におけるコマンドへのパイプ ( |command ) 機能は メーリングリストなどで良く使われる。しかし、より管理の柔軟性のために include 機能と共に用いられる事が多い。

include は以下のような形で使う。
# /etc/aliases
mailinglist: :include:/home/mailinglist/hogemail

つまり、mailinglist の aliases として /home/mailinglist/hogemail が使われる のであるが、このファイルの中で更に以下のように使う場合がある。

# /home/mailinglist/hogemailの中身
"|/home/mailinglist/hogemail/fml.pl /home/mailinglist/hogehoge"

このような場合に、デフォルトではPostfix はコマンドを実行しない。 これを変更するには、以下のように設定する。

allow_mail_to_commands = alias,forward,include

一方デフォルトでは、以下のようになっている。

allow_mail_to_commands = alias,forward

但し、実行権限は include したファイルの権限で実行される。しかし、これには 例外があり、そのファイルの所有者が root であった場合のみ default_privs に指定した値(デフォルトではnobody)の権限で実行される。これは root 権限での 実行などをそれまでに期待した設定をしていて、sendmail からPostfix に移行 した場合に問題となるので注意して欲しい。

バーチャルドメイン

Postfix は qmail と同様にバーチャルドメインに対応している。こうした機能が sendmailと比較した場合、新しい MTAの優位な部分であると言える。 バーチャルマップは、main.cf に以下の設定をし、
virtual_maps = hash:/usr/local/etc/postfix/virtual
ここで指定した /usr/local/etc/postfix/virtual に以下のように記述する。
hoge@virtual.domain  hoge
foo@virtual.domain    user1,user2
左に記述したバーチャルドメインのユーザ宛にメイルが来たならば、右の リストのユーザにメイルは送られるようになる。

詳細についてはドキュメントを参照されたい。

local_recipient

これはPostfixバージョン2.0になってからの問題ですが、 2.0からは$mydestination宛のメイルでも、宛先ユーザをPostfixが 知らない場合には全てユーザーを知らないとして拒否します。従って、 /etc/aliases や、/etc/passwd などにユーザがあるには問題ありませんが、 バーチャルホストや、その他いくつかの場合に問題になる場合があります。 このチェックを外したい場合には、以下のように設定します。
local_recipient_maps =
つまり、陽にパラメータを空にする訳です。ちなみに、 デフォルトでは以下のようになっています。
local_recipient_maps = proxy:unix:passwd.byname $alias_maps

詳しくは、LOCAL_RECIPIENT_README にあります。



Noriyo Kanayama