murase@tunagu.gr.jp
Copyright © 2000, 2001 by Masaki Murase
この文書は、NEXTSTEP に付属する sendmail の置き換え (バージョンアップ、セキュリティ対策)に苦慮されている方に Postfix を紹介することを目的として作成したものです。 NEXTSTEP 固有の内容は極力含まないように心掛けましたので、 NEXTSTEP ユーザに限らず、 「Postfix ってどんなメールサーバプログラムなの?」 という方に参考にして頂けると幸いです。
なお、2009 年6月からは、それまで利用していた Web サーバの閉鎖に伴い、 http://www.hautbois.jp/~masaki/sys/mail/postfix.html にて公開をしていますが、内容がかなり古いため、リンクを張るのはお控えください。
Postfix は、 素のままの sendmail に見られる パフォーマンスやセキュリティ上の不満、および 導入・メンテナンス時の敷居の高さを解消した新しい MTA です。 また、sendmail 互換インターフェースが用意されているので、 sendmail を前提としたシステムのインストール・運用が容易です。 Postifix の詳細を知りたい方は、以下に紹介するリンクを辿って下さい。
The Postfix Home Page (日本の ミラーサイト)
Positfix のぺーじ(設定ファイル、マニュアルページの日本語訳、その他日本語情報)
動作設定は master.cf と、 main.cf および lookup テーブルを 編集することで行ないます。 master.cf は、 Postfix の master プロセスから呼び出される各サービスと 実際の各種メーラプログラムとの対応付けをし、 main.cf では Postfix の各種メーラの動作に 関する設定をします。 Postifx には約 100 個の パラメータが用意されていますが、多くの場合、 数個のパラメータを設定するだけで済むのではないかと思います。 (Postfix Documentation や、Positfix のぺーじ: 設定ファイルのコメントを読まれることをお勧めします。)
コマンドラインでの使用例です。 Postfix は sendmail 互換インターフェースの一部として sendmailコマンドを用意しているので、 sendmail を使ったことのある人には 馴染み易いのではないかと思います。
起動(root 権限で)。 sendmail -bd とあるが、 smtpd を動かさない場合もこのコマンドを使うので注意。
終了(root 権限で)。
設定ファイルの再読み込み(root 権限で)。
main.cfのデフォルト値(-d)/デフォルトでない設定パラメータ(-n)の表示
main.cf のパラメータを書き換える。(例では、明示的に指示されるまでメッセージを キューに貯めて配送しない。)
alias データベースの作成/更新(sendmail v8 互換, NIS 対応)。
alias データベースの初期化。
alias 以外の lookup table(ここでは hash:/etc/postfix/virtual) の作成/更新
キューにたまったメッセージの配送。 -qR も利用できる。
キューの表示。
sendmail コマンドや alias ファイルなど、 sendmail 互換インターフェースが 用意されているため、sendmail 環境を 前提としたシステム(ML ドライバ等)を、 Postfix 環境において ほとんどそのまま利用することができます。 その他を含めた詳細については、 Compatibility(by 池田さん) を参照して下さい。
main.cfに
allow_mail_to_commands = alias,forward,includeを加えて include を有効にすれば sendmail で動作するものは ほとんどがそのまま動きます(Table 1参照)。
なお、Postfix では、 alias や include ファイルの 所有者の権限で配送が行なわれ、そのユーザの userid がヘッダに付加されます。 (リストの所有者がスーパーユーザの場合は、 main.cf に記述される設定パラメータである default_privs で指定されるユーザの権限で 配送がなされる。) sendmail のように Trusted User の指定をする必要はありません。
Table 1. ML dirvers and Postfix
ドライバ | インストールの際の注意事項 |
---|---|
CML | Deliverd-To 絡みの問題、その他。(2001.07.30: CML-4.1-*-snap に関する記述を追加。) |
distribute | 特になし。 |
fml | 特になし。 付属文書の doc/INSTALL_with_POSTIFIX.jp に fml を Postfix と一緒に用いる場合の注意事項が書かれている。 |
Majordomo | FAQに Deliverd-To: 絡みの問題について記述あり。 |
ppml | 知り合いの情報に依れば、インストール、運用時に 特に注意すべきことはないようだ。 |
NFS インポートしたファイルシステム上にスプールを おくのは lock の問題等から好ましくありません。 どうしてもリモートホストにメールスプールを置きたいのであれば、 SMTP もしくは LMTP over TCP を用いてスタティックにリモートホスト にメッセージを送るのが良いです。 (LMTP サーバは Cyrus IMAP Server に含まれている。) どうしても NFS を使いたいのであれば、Postfix ではなく qmail を使うべきです。
スプールが独自仕様であるCyrus IMAP Serverにも対応しています。 具体的には、pipe mailer を利用して外部の配送エージェントに メッセージを渡しています。 (Postfix からの Cyrus-imapd の利用設定例)
基本的には POP 認証の成功したホストを main.cf の smtpd_recipient_restrictions で参照指定する check_client_access データベースに 登録(そして一定時間後に削除)するだけなので自作も難しくないと思いますが、 今ではパッケージがいくつか出ています。 Postfix のぺーじの関連リンクで、いくつかの構築例が紹介されています。
master デーモンが管理する各種デーモン(local と pipe を除く)は chroot 環境下で動作させることができます。 パッケージのexamples/chroot-setup に 各 OS での chroot 環境の作り方についての例があります。
なお、chroot した環境下に必要なファイルを置くことを忘れないように。 (alias は local デーモンが参照するので、 chroot 下に置く必要はありません。)
Postfix での Spam 対策を参照のこと。
なお、SMTP によるメールの受信をする必要のないホスト(LAN 上の ほとんどのホストがこれに該当するのでは?)では、 master.cfにおいて `smtp inet ... smtpd' エントリをコメントアウトしておくことをお勧めします。 こうしておけば多少設定ミスをしても SPAM リレーすることはありません。