postfix logo Postfixのぺーじ
− 2.1.5 インストール記録
更新: 2005年2月19日  


ホームオリジナルドキュメント >2.1.5 インストール記録


Postfixインストール手順

/tmp/postfix にソースのtar ballがあるものとします。
また、#はスーパーユーザでの実行をあらわし、%は一般ユーザでの実行を あらわします。シェルはcsh系を仮定してるので、bsh系の方は読み替えて下さい。
以下の例では、設定ファイルは /etc/postfix に、実行ファイル類は /usr/postfix 以下にインストールしました。

この記録はバージョン2.1.5のものです。インストールはFreeBSD 5.3Rで 行ないました。

コンパイルも含めて、問題が生じなければsendmailからの移行時間は およそ30分です。sendmailをデーモンモードで起動していれば、メールサービスの 停止はほんの数秒です。


Postfixパッケージのチェック

Postfixのパッケージが第三者によって加工されていない、正当なものか どうかをPGP/GnuPGを使ってチェックします。

これまでにPostfixの作者、Wietse Venema氏のPGP公開鍵をPGPまたは GnuPGのkey ringに加えていなければ、まずは氏のPGP公開鍵を入手します。 パッケージの改ざんを検出するためには、たとえば Wietseさんのホームページなど、 Postfixのパッケージとは別の場所から入手する方がよいでしょう。

入手した公開鍵は、次のようにインポートします:

  % pgp -ka wietse.pgp        (PGPの場合)
  % gpg --import wietse.pgp   (GnuPGの場合)

公開鍵をインポートしたら、ソースパッケージとシグニチャ (postfix-2.1.5.tar.gzとpostfix-2.1.5.tar.gz.sig) を同じディレクトリに置き、 以下のコマンドを実行して正しいファイルであることを確認します:

[pgpの場合]
  % pgp postfix-2.1.5.tar.gz.sig
  Pretty Good Privacy(tm) Version 6.5.8
  Internal development version only - not for general release.
  (c) 1999 Network Associates Inc.

  Export of this software may be restricted by the U.S. government.

  File 'postfix-2.1.5.tar.gz.sig' has signature, but with no text.
  Text is assumed to be in file 'postfix-2.1.5.tar.gz'.
  Good signature from user "wietse venema <wietse@wzv.win.tue.nl>".  <この行があればOK
  Signature made 2004/09/15 15:36 GMT

[gpgの場合]
  %gpg postfix-2.1.5.tar.gz.sig
  gpg: Signature made Thu Sep 16 00:36:03 2004 JST using RSA key ID D5327CB9
  gpg: Good signature from "wietse venema <wietse@porcupine.org>"    <この行があればOK
  gpg:                 aka "wietse venema <wietse@wzv.win.tue.nl>"
  gpg: WARNING: This key is not certified with a trusted signature!
  gpg:          There is no indication that the signature belongs to the owner.
  Primary key fingerprint: 78 96 4A 4D F0 F0 D1 3C  45 E9 03 FC 17 67 DC D8

Postfix パッケージのコンパイル

お好みの場所でtar ballを展開して、コンパイルします。SASLサポートや MySQL/PostgreSQLサポートなどはmake時にオプションが必要です。詳細は対応する READMEファイルを参照してください。

% setenv SRCDIR /tmp/postfix
% cd ${SRCDIR}
% tar xvzf postfix-2.1.5.tar.gz
% cd postfix-2.1.5
% make

Postfix ユーザの追加

% su
# pw groupadd postfix
# pw groupadd postdrop
  (ユーザ `postfix' 用、およびmaildrop用のグループを作成)

# pw useradd postfix -d /nonexistent -g postfix -s /sbin/nologin
  (ユーザ `postfix' をパスワード・ホームディレクトリ・ログインシェルなしで追加)

# vi /etc/aliases
  postfix:  root
  (postfix 宛のメールを root に向ける)

お使いのシステムにあわせてpw, useradd, adduser, vipwなどでグループ・ ユーザを作成してください。


旧 sendmail の停止

通常は次のように旧sendmailを別名にして、保護しておきます。 /etc/inetd.conf でsendmailを叩いている場合には、その記述をコメントアウトして、 kill -HUP を送ります。その場合は、ここからpostfixを起動するまでの 間メールの送受信は できません。

# 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

なお、mailq.OFFnewaliases.OFF を実行しても 機能しないことが多いので、Sendmailでキューをフラッシュするときには sendmail -q を使ってください。Postfix newaliasesはSendmailの ものと互換性があります。

ただし、今回は新規にインストールしたFreeBSDマシンにインストールを 行なったため、上記の操作は行ないませんでした。最近のFreeBSDではsendmail などのコマンドがmailwrapperのリンクになっており、実際には /etc/mail/mailer.conf に記述したコマンドが実行されます。そこで、Postfix sendmailなどのコマンドはFreeBSDに入っているsendmailにならって、 /usr/libexec/postfix 以下にインストールすることにしました。 (FreeBSD 以外ではデフォルトのディレクトリにインストールする方が 良いでしょう。)


Postfix のインストール

# make install

次のような画面が流れます (和訳を追加しています)。
[] 以降に文字列がないものはデフォルトで答えました。

/bin/sh postfix-install

  (前略)

    Warning: if you use this script to install Postfix locally,
    this script will replace existing sendmail or Postfix programs.
    Make backups if you want to be able to recover.
    警告: ローカルにPostfixをインストールするのにこのスクリプトを使うと、
    すでに存在しているsendmailやPostfixプログラムが置き換えられてしまいます。
    復旧できるようにしたければバックアップを取ってください。

    Before installing files, this script prompts you for some
    definitions.  Most definitions will be remembered, so you have
    to specify them only once. All definitions should have a
    reasonable default value.
    ファイルをインストールする前に、このスクリプトはいくつかの設定の入力を求めます。
    多くの設定は記録されるため、指定しなければならないのは一度だけです。設定には
    すべて妥当なデフォルト値があります。

Please specify the prefix for installed file names. Specify this
ONLY if you are building ready-to-install packages for distribution
to other machines.
install_root: [/]
インストールされるファイル名につけられるプレフィックスを指定してください。
これは他のマシンに配布するインストール準備済みパッケージを構築する際「のみ」
指定してください。
install_root: [/]

Please specify a directory for scratch files while installing
Postfix. You must have write permission in this directory.
tempdir: [/home/ike/src/mail/postfix/postfix-2.1.5]
Postfixをインストールする間の一時ファイルを置くディレクトリを指定してください。
このディレクトリには書き込み権限がなければいけません。
tempdir: [/tmp/postfix-2.1.5]

Please specify the final destination directory for installed Postfix
configuration files.
config_directory: [/etc/postfix]
インストールされるPostfix設定ファイルを最終的に置くディレクトリを指定してください。
config_directory: [/etc/postfix]

Please specify the final destination directory for installed Postfix
daemon programs. This directory should not be in the command search
path of any users.
daemon_directory: [/usr/libexec/postfix]
インストールされるPostfixデーモンプログラムを最終的に置くディレクトリを指定して
ください。このディレクトリはどのユーザのコマンドサーチパスにも入らないように
すべきです。
daemon_directory: [/usr/libexec/postfix]

Please specify the final destination directory for installed Postfix
administrative commands. This directory should be in the command
search path of adminstrative users.
command_directory: [/usr/sbin] /usr/local/sbin
インストールされたPostfix管理コマンドを最終的に置くディレクトリを指定してください。
このディレクトリは管理者ユーザのコマンドサーチパスに入っているべきです。
command_directory: [/usr/sbin]

Please specify the final destination directory for Postfix queues.
queue_directory: [/var/spool/postfix]
Postfixキューを最終的に置くディレクトリを指定してください。
queue_directory: [/var/spool/postfix]

Please specify the final destination pathname for the installed
Postfix sendmail command. This is the Sendmail-compatible mail
posting interface.
sendmail_path: [/usr/sbin/sendmail] /usr/libexec/postfix/sendmail
インストールされるPostfix sendmailコマンドを最終的に置くパス名を指定してください。
これはSendmail互換のメール投函インターフェースです。
sendmail_path: [/usr/sbin/sendmail] /usr/libexec/postfix/sendmail

Please specify the final destination pathname for the installed
Postfix newaliases command. This is the Sendmail-compatible command
to build alias databases for the Postfix local delivery agent.
newaliases_path: [/usr/bin/newaliases] /usr/libexec/postfix/newaliases
インストールされるPostfix newaliasesコマンドを最終的に置くパス名を指定してください。
これはエイリアスデータベースを構築するためのSendmail互換コマンドです。
newaliases_path: [/usr/bin/newaliases] /usr/libexec/postfix/newaliases

Please specify the final destination pathname for the installed
Postfix mailq command. This is the Sendmail-compatible mail queue
listing command.
mailq_path: [/usr/bin/mailq] /usr/libexec/postfix/mailq
インストールされるPostfix mailqコマンドを最終的に置くパス名を指定してください。
これはメールキューをリストアップするSendmail互換コマンドです。
mailq_path: [/usr/bin/mailq] /usr/libexec/postfix/mailq

Please specify the owner of the Postfix queue. Specify an account
with numerical user ID and group ID values that are not used by any
other accounts on the system.
mail_owner: [postfix]
Postfixキューの所有者を指定してください。ユーザIDやグループIDの数値がこのシステム
上の他のアカウントによって使われていないアカウントを指定してください。
mail_owner: [postfix]

Please specify the group for mail submission and for queue management
commands. Specify a group name with a numerical group ID that is
not shared with other accounts, not even with the Postfix mail_owner
account. You can no longer specify "no" here.
setgid_group: [postdrop]
メール投函やキュー管理コマンドで使われるグループを指定してください。グループIDの
数値が、Postfix mail_ownerアカウントを含む他のアカウントによって共有されていない
グループ名を指定してください。
setgid_group: [postdrop]

Please specify the destination directory for the Postfix HTML files.
Specify "no" if you do not want to install these files.
html_directory: [no]
Postfix HTMLファイルを置くディレクトリを指定してください。これらのファイルを
インストールしたくなければ "no" を指定してください。
html_directory: [no]

Please specify the destination directory for the Postfix on-line
manual pages. You can no longer specify "no" here.
manpage_directory: [/usr/local/man]
Postfixオンラインマニュアルページを置くディレクトリを指定してください。
ここでは "no" を指定することはできません。
manpage_directory: [/usr/local/man]

Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.
readme_directory: [no]
Postfix READMEファイルを置くディレクトリを指定してください。これらのファイルを
インストールしたくなければ "no" を指定してください。
readme_directory: [no]

(後略)

上にも書いたように、/etc/mailer.conf を次のように修正します。 (FreeBSD 特有です。他のシステムでは必要ありません。)

sendmail    /usr/libexec/postfix/sendmail
send-mail   /usr/libexec/postfix/sendmail
mailq       /usr/libexec/postfix/sendmail
newaliases  /usr/libexec/postfix/sendmail

Postfix の設定

# cd /etc/postfix
# cp main.cf main.cf.org
# vi main.cf
    #(必ず設定するのは以下の項目)
    myorigin = $myhostname
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    mail_spool_directory = /var/mail
    mynetworks_style = subnet
    #(これまで通りに mynetworks を記述することもできます。)
    # mynetworks = XXX.XXX.XXX.XXX/YY, 127.0.0.0/8  # ネットワークアドレスを書く。
    #(設定によっては次の項目も必要です)
    allow_mail_to_commands = alias,forward,include
    relayhost = mail.example.com

これ以外の設定は、以上の設定で問題なく動くことを確認してから1つずつ 変更してください。


sendmail の停止と Postfix の起動

# kill -TERM 'sendmail-PID'
# /usr/postfix/bin/postfix start


ike@kobitosan.net