PostfixのFAQ

最終更新日:2003年7月13日

Q-1. Postfixって本当に良いですか?
A-1. あなたがsendmail.cfに関して、呪文のようなマクロをマスタしているならPostfixにするメリットは少ないかも知れません。特にsendmailは8.12.xからは、従来のセキュリティ上の問題であった、set-user-idによるroot権限での動作では無くなったことから、セキュリティ面だけでの評論は見直しが必要になっています。 貴方が高速なMTAを求めているならPostfixはその解を与えてくれる事でしょう。
Q-2. Postfixとqmailって良く比較されますね。
A-2. ここで述べられているように、Postfixはqmailを競争相手とみていますから比較されるのは当然です。qmailはsendmailのセキュリティ上の弱点に嫌気をさしたD. J. Bernstein氏が一からスクラッチした高速・高セキュリティなMTAです。 Postfixがsendmailからの移行が簡単であるようになっているのに比べqmailではsendmailの環境を廃棄するように目指しています。 この為、メーリングリストやsendmail環境が必要なスクリプトが動いている環境ではPostfixの方が有利だと云われています。

Q-3. Postfixとqmailではどちらが良いですか?
A-3. まったくの個人的な見解ですが、インターネット上の脅威に晒される(例えばDMZ上の)MTAには標準ライブラリすら疑って専用のライブラリで実装したqmailの方が優れていると感じています。 (1998年以降、qmailにはセキュリティ上の大きな問題が見つかっていないことは1つの事実です)
しかし運用に関してはPostfixの方が楽をできるでしょう。
ですから、外部MTAにはqmail、内部MTAにはPostfixというようにそれぞれを適材適所に使うようにすると良いと思います。 勿論、外部MTAとしてPostfixを使っても問題はありません。(あくまでqmailと比較した場合、qmailの方が外部MTAに適しているというだけです)
Q-4. Redhatや最近のディストリビューションにはPostfixが入っていますね。
A-4. はい、最近のLinuxディストリビューションでは、MTAとしてsendmail以外にPostfixを同梱するようになってきています。 Redhat9などでは、「redhat-switch-mail」コマンドなどで、簡単に標準MTAを切り替えることが可能です。ただし、ディストリビューション付属のPostfixはバージョンが古いことが多いので、できるだけソースからビルドするようにしましょう。
Q-5. 大きな添付ファイルがついたメールを受信できません。
A-5. 10MByte(10,240,000)以上のデータを受信しようとすると、Postfixが受信してくれません。デフォルトでは最大の受信サイズは10MBになっています。 これを変更するには、main.cf(ex. /etc/postfix/main.cf)の中で、「message_size_limit=400000000」というようにして最大のメッセージサイズを変更する必要があります。サイズとして0を指定した場合には、サイズの制限はありません。

Q-6. maildir形式のメールボックスにPostfixは対応していますか?
A-6. maildirはqmailで採用されたメールボックスの形式で、従来のmailbox形式にくらべ、一メッセージ単位でファイルに保存するようになっており(mailbox形式ではすべてのメッセージが一ファイルに保存される)、障害に強く、また、ファイルロックやファイルアクセスに有利になっています。 Postfixでもこのmaildir形式に対応しています。(デフォルトではmailbox形式になっています) maildirを使った場合には、popサーバやimapサーバなどもmaildir形式に対応できないと、受信したメールが読めなくなってしまいます。
Q-7. ローカルにアカウントがないユーザ宛てのメールを別のメールサーバへ転送するようにしたいのです。
Postfixのデフォルト設定では、届いたメールの宛名がローカルに存在しないアカウント宛てであった場合に、そのメールを「あて先不明」として処理してしまいます。 しかし、場合によってはあて先不明のメールを別のメールサーバへと転送したいケースも存在することでしょう。
これは、
local_recipient_maps = unix:passwd.byname $alias_maps

という設定がデフォルトで有効になっている為ある。
postfixでは、

fallback_transport = smtp:newms.hogehoge.co.jp

という設定をする事で、存在しないアドレス宛のメールをここで指定した別のサーバ(newms.hogehoge.co.jp)へ転送する事が可能である。ただしこの設定を有効にする為には、

local_recipient_maps =

というように「local_recipient_maps」の設定を空にする必要がある。
Q-8.DMZに配置したPostfixで、届いたメールをすべて別のメールサーバに転送したいのですが
Postfixに届いたメールは、ローカル宛てのメールとして処理されてしまいます。しかし、DMZに配置した場合のPostfixサーバなどでは、受信したメールは別の(内部の)メールサーバに転送したいようなケースがあります。
この場合には、

transport_maps = hash:/etc/postfix/transport

のように設定するとともに、/etc/postfixtransportファイルの中で、

domain.com smtp:inside-gateway.domain.com

といった記述をすることで、@domain.com宛てのメールをすべてinside-gateway.domain.comのメールサーバへと転送することが可能です。

* transport テーブルを編集したら、毎回 postmap /etc/postfix/transport コマンドを実行して下さい。

* 設定の変更後は postfix reload コマンドを実行してください。

Home

Mailwebmaster@robata.org

Copyright© 1998-2003 ROBATA.ORG