Postfix の NEXTSTEP3.3J へのインストール

Last modified: Mon Jan 1 11:31:06 JST 2001

このドキュメントはもはや古く、誤りもいくつか含まれている。 最新のドキュメントは こちら

Postfix について

こちらに NEXTSTEP に依らない一般的なことを書いた。

NEXTSTEP へインストールするにあたって

Postfix は NetInfo を参照する。 aliases のみならず参照が可能である。

最新の版の $postfix/INSTALL に NEXTSTEP 3.x 対応とあるが、 これは誤りで、NEXTSTEP でソースに手を加えずにインストール 可能なのは現時点(2000年6月)では若干古い版である postfix-19990906-pl05 まで である。 (この記述はもはや古く、最新の postfix のリリースも パッチを当てれば、 make 可能である。 このドキュメントの最新版も こちらに用意している。)

postfix-19990906-pl05 は、SPAM 対策(source routing 制限)が デフォルトの設定として施されていないので、それを踏まえた上で、 postfix-19990906-pl05 のインストールについて述べる。

Postfix は正規表現を用いたテーブルを参照する機能を有する。 この機能は Postfix の長所のひとつと言えるが、 これを有効にするためには POSIX の正規表現ライブラリ、 または PCRE (Perl-compatible regular expression library) が必要である。 NEXTSTEP においては PCRE を make して利用することにする。 (PCRE は exim の作者が作ったパッケージ。 現在のところ、exim の方が PCRE を使った 柔軟なメッセージ作りができるようだ。)

PCRE (Perl-compatible regular expression library) の make

PCRE の最新版は ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ で配布されている。 今回は、現時点での最新版である pcre-3.2.tar.gz を用いた。 手順は以下の通り。

  1. % cd ~/work
    % gnutar xzvf pcre-3.2.tar.gz
    % cd pcre-3.2
    % ./configure
  2. 必要であれば config.status を編集して、
    % ./config.status
    例えば、今回は MAB を作るために CFLAGS を -g -O2 -arch m68k -arch i486 に変更。
  3. % make
make install をする必要はない。

postfix-19990906-pl05 のビルド

ここでは MAB を作る。 make には awk が必要となるが、/usr/nje/bin/awk ではインストール不能 だったので、代わりに Gnu Awk (gawk) 2.15, patchlevel 6 (gawk) を使用した。 手順は以下の通り。
  1. % cd ~/work
    % gnutar xzvf postfix-19990906-pl05.tar.gz
    % cd postfix-19990906-pl05
    % make makefiles 'CCARGS=-DHAS_PCRE -I ../pcre-3.2 -arch m68k -arch i486' 'AUXLIBS=../pcre-3.2/libpcre.a' AWK=gawk
  2. % make

postfix-19990906-pl05 のインストール

  1. # mv /usr/lib/sendmail /usr/lib/sendmail.OFF
    # mv /usr/ucb/newaliases /usr/lib/newaliases.OFF
    # mv /usr/ucb/mailq /usr/lib/mailq.OFF
  2. passwd, aliases, group へ postfix を追加
    私の環境では NetInfo での管理を行なっており、 postfix でも引続きこれを利用するが、 INSTALL.sh は NetInfo を参照せず、しかも /etc/passwd, /etc/aliases の 内容をチェックして postfix のエントリがないと動作を停止するので、 /etc/passwd, /etc/aliases も編集をする。(この不具合は 皮肉にも 19990906-pl06 に改善された。)
  3. メールキューの実体が保存される maildrop ディレクトリを 誰でも書き込み可能にする方針を選択する。(そうでない場合、 setgid プログラムの利用を選択する必要がある。詳細は INSTALL を。)
  4. # sh INSTALL.sh
    [...]
    config_directory: [/etc/postfix]
    daemon_directory: [/usr/lib/postfix]
    command_directory: [/usr/bin]
    queue_directory: [/usr/spool/postfix]
    sendmail_path: [/usr/lib/sendmail]
    newaliases_path: [/usr/ucb/newaliases]
    mailq_path: [/usr/ucb/mailq]
    owner: [postfix]
    setgid: [no]
    manpages: [no]
    [...黒NeXT では、INSTALL.sh の動作完了に しばらく時間がかかるので、気長に待つこと。]

postfix-19990906-pl05 の初期設定

Postfix の運用にあたっては様々なケースがあると 思うが、基本的にパッケージ付属の文書にしたがって /etc/postfix/main.cf, /etc/postfix/master.cf を編集する だけである。さしあたって読むべきドキュメントはそれほど多くはない。 (WWW 上のドキュメントへのリンクは こちら。)

しかし、今回は古い版を使っているために、最新版ではしなくていい 設定をしなくてはならないところがあった。 また、ドキュメントにはもちろん書いてあるが、NeXT 固有の設定を 必要とする部分もあるので、ここでは、それらについて述べることにする。

chroot 環境下での動作(書きかけ)

書いている時間がないので、、、NetInfo の参照も log の出力もちゃんと動作する、 ということだけ書いておく。

SPAM 対策(source routing の制限)

telnet mail-abuse.org による検査をクリアするための設定。 main.cf の $mynetworks や $relay_domain には信頼できる ホスト(あるいはネットワーク)が指定されているものとする。 もちろん、smtpd を止めるのが SPAM 対策としては最も有効である。 (しかも、ほとんどのクライアントのマシンでは、止めて困ることはないだろう。) その他にも有効な方法はあると思われるが、ここでは、あくまで telnet mail-abuse.org による検査をクリアすることだけにこだわることにする。)

○main.cf に以下の一行を追加

smtpd_recipient_restrictions = pcre:/etc/postfix/recipient_check,permit_mynetworks,check_relay_domains
tcpwrapper 同様、始めにマッチしたものに対し処理がなされるので、 pcre: の記述は一番始めに書かないと機能しないことに注意。 (pcre は、 PCRE つきで compile した postfix を使用する場合にのみ有効。 regexp が使えるのであれば、そちらを使っても良いと思われる。)

○/etc/postfix/recipient_check の内容
/%/    554 No % routing permitted
/[@%!].*[@%!]/    550 Sender-specified routing rejected
一行目は、 user%domain1 が無条件に relayhost にリレーされるのを防ぐため。 二行目は無用な source routing を防ぐためのもの。

設定が完了したら、
% /usr/bin/postfix start (Postfix が起動済みであれば、 /usr/bin/postfix reload)
% telnet mail-abuse.org
をして SPAM 対策のチェックを実施。


murase@synapse.phys.nagoya-u.ac.jp