1 - このドキュメントの目的 ========================== このドキュメントには Postfix システムの作成・インストール・設定の仕方が 書いてあります。これにより、次のうち一つが出来るようになります。 - すでにインストールされている sendmail を変更せずにメールを送信の のみを行なう。 - すでにインストールされている sendmail を変更せずに、 バーチャルホストインターフェースを通してメールを送受信する。 - sendmail を完全に置き換える。 2 - 表記方法 ============ 以下の説明で # command と書かれたコマンドはスーパーユーザで実行します。 % command のように書かれたコマンドは一般ユーザとして実行します。 3 - ドキュメント類 ================== ドキュメント類は HTML 形式( html/index.html をブラウザでみて下さい)と UNIX 形式の man page (MANPATH 環境変数に man サブディレクトリを 絶対パスで加えて下さい)で提供されています。 conf ディレクトリにある設定ファイルのサンプルには多くのコメントが ありますが、全ての特徴・機能の全てのニュアンスを記述したものでは ありません。 多くのファイルには、それ自身にマニュアルページが含まれています。 mantools ディレクトリにはそのように埋め込まれたマニュアルページを 取り出すツールがあります。 4 - サポートされたシステムでのビルド ==================================== 以下のシステム、もしくはそれによく似たシステムがサポートされています。 AIX 3.2.5 AIX 4.1.x AIX 4.2.0 BSD/OS 2.x BSD/OS 3.x BSD/OS 4.x FreeBSD 2.x FreeBSD 3.x FreeBSD 4.x FreeBSD 5.x HP-UX 9.x HP-UX 10.x HP-UX 11.x IRIX 5.x IRIX 6.x Linux Debian 1.3.1 Linux Debian 2.x Linux RedHat 4.x Linux RedHat 5.x Linux RedHat 6.x Linux RedHat 7.x Linux Slackware 3.x Linux Slackware 4.x Linux Slackware 7.x Linux SuSE 5.x Linux SuSE 6.x Linux SuSE 7.x Mac OS X server Mac OS X Public Beta NEXTSTEP 3.x NetBSD 1.x OPENSTEP 4.x OSF1.V3 (Digital UNIX) OSF1.V4 aka Digital UNIX V4 OSF1.V5 aka Digital UNIX V5 OpenBSD 2.x Reliant UNIX 5.x Rhapsody 5.x SunOS 4.1.x SunOS 5.4..5.8 (Solaris 2.4..8) Ultrix 4.x (well, that was long ago) Solaris では、"make" コマンドやその他のソフトウェア開発用 ユーティリティは /usr/ccs/bin にあるので、コマンド検索パスに /usr/ccs/bin を「必ず」含めなければいけません。 Postfix を複数のアーキテクチャ用にビルドする必要がある場合、 lndir コマンドを使ってソースファイルにシンボリックリンクを 張ったシャドウツリーを作って下さい。lndir は X11R6 の一部です。 ビルド中に "make: don't know how to ..." というようなメッセージが 出る場合、Postfix の一番上のディレクトリに行き、次のコマンドを 実行することで回復できます。 % make -f Makefile.init makefiles 他のマシンでビルドした後に Postfix をコピーしてきた場合、 まず一番上のディレクトリで次のコマンドを実行するのがよいでしょう。 % make tidy これは他でコンパイルした時に残されたシステムに依存する部分を 除去します。 GCC を用いてビルドする場合や、ネイティブのコンパイラの方がよいと 報告されているシステムについてはそのコンパイラを使ってコンパイル する場合、Postfix のソースツリーの一番上のディレクトリに cd し、 次のコマンドを実行するだけです。 % make デフォルトではないコンパイラを使用するには、コンパイラの名前を 以下のように指定する必要があります: % make makefiles CC=/opt/SUNWspro/bin/cc (Solaris) % make % make makefiles CC="/opt/ansic/bin/cc -Ae" (HP-UX) %make % make makefiles CC="purify cc" % make 最適化は自動的にオフになる場合があります。 デフォルト以外の設定でビルドする場合、例えば /etc/postfix 以外に 設定ファイルのディレクトリを作る場合には、次のコマンドを使います。 % make makefiles CCARGS=-DDEF_CONFIG_DIR=\\\\\\\"/some/where\\\\\\\" % make バックスラッシュが7つありますが :-) これで少なくとも sh でも csh でも 動作します。 1000 以上の配送プロセスを動かすような、非常に大きなアプリケーションの ために Postfix をビルドするには、FD_SETSIZE マクロの定義を select() が正しく動くように上書きする必要があるかもしれません: % make makefiles CCARGS=-DFD_SETSIZE=2048 次のコマンド % make でコンパイラエラーメッセージが出る場合は、FAQ を調べて下さい。 5 - 未サポートシステムへのポーティング ======================================= - 新しいシステムの SYSTEMTYPE 名を選んで下さい。違うリリースの 同じシステムが混乱なくサポートできるように、名前にはオペレーティング システムのメジャーバージョンを含むように (SUNOS4 や LINUX2 のように) して下さい。 - トップディレクトリにある "makedefs" シェルスクリプトに 新しいシステムが確実に認識されるように条件文を付け加え、 正しいシステム依存の情報を出すようにしてください。 コードはユーザの PATH 設定に robust であることを確認してください; もしシステムが様々な UNIX の環境(例えば BSD と SYSV)を提供できる ならば、エミュレートされたものではなく、ネイティブな形式であることを 確認して下さい。 - util/sys_defs.h インクルードファイルの中に #ifdef SYSTEMTYPE セクションを付け加えます。新しいマクロを作る必要があるかもしれません。 マクロは HAS_DBM や FIONREAD_IN_SYS_FILIO_H のようなわかりやすい 名前にして下さい。それぞれのソースファイルで #ifdef SYSTEMTYPE に依存性を書かないことを強く推奨します。これは最も速い解決法に 見えますが、時間が経つと保守が難しくなっていきます。さらに、 次のポーティングの際に全てのソースコードに再び #ifdef を書く 必要性が生じてしまいます。 6 - コンパイルが成功した後のソフトウェアのインストール ====================================================== 重要: もし現在インストールされている sendmail を Postfix で 置き換えるのであれば、古い sendmail をしばらくの間走らせておいて、 メールキューを消す必要があります。スーパーユーザで次のコマンドを 実行して下さい (sendmail, newaliases や mailq コマンドは別の場所に あるかもしれません)。 # mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF # mv /usr/bin/newaliases /usr/bin/newaliases.OFF # mv /usr/bin/mailq /usr/bin/mailq.OFF # chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF \ /usr/bin/mailq.OFF Postfix のインストールやアップグレードをするために: - ユニーク(他のユーザが使用していない)なユーザIDとグループIDを持った ユーザ "postfix" を作成します。できればこれは誰もログインできない アカウントにします。このアカウントにはログインシェルやホーム ディレクトリは必要ありません。私のパスワードファイルエントリは 次のようになっています。 postfix:*:12345:12345:postfix:/no/where:/no/shell - 次のようなエイリアスが /etc/aliases にあることを確認します。 postfix: root - このファイルの12章を参照し、誰でも書き込み可能(world-writable)な maildrop を利用するか、set-gid されたポスト用エージェントを利用するか 決定します。 - INSTALL.sh スクリプトをスーパーユーザで実行します。 # make install (インタラクティブバージョン、 初めてのインストール時) # make install