SASL 付きの Postfix をインストールする

メールサーバとしてもっぱら Sendmail を長いこと使ってきていた。NetBSD 4.0 から 標準が Sendmail から Postfix に変わったが、SMTP-AUTH を使うためにはどのみち標準のメールサーバでは対応できす、pkgsrc から Cyrus-SASL を組み込んでコンパイルしたものを使わないといけないので、運用サーバが NetBSD 4.0 以降となっても Sendmail の方を使い続けてきた。

しかし、Sendmail も大昔のモノリシックな構成ではなくなった(あくまで使用者から見た場合の話で)ので、標準ではなくなった Sendmail を使い続ける意義も薄くなった。Sendmail を使っている理由のひとつには、僕が Postfix よりも Sendmail の方に慣れているということがあるのだけれども、じゃあ、お前は Sendmail のエキスパートなのかというと全くそんなことはあるわけもなく、それは昔 CF から cf に移行したときの苦労がもったいないとか、手元の初版と3版のコウモリ本をどうしようかとか、そんなつまらない理由なのかもしれない。もっとも、昔は Sendmail でサポートされた機能が Postfix にはまだ入っていなくて(認証とかフィルタとか)、とかの話もあったような気もするが、いずれにしてももう気にする必要もないのだろう。

SMTP-AUTH (SASL) を使えるようにするため、/etc/mk.conf に以下の行を追加して pkgsrc の postfix をインストールする。オプションの sasl は Cyrus-SASL を組み込むための、pcre は Perl 互換正規表現エンジンを組み込むための指定だ。pcre は指定しなくても標準の正規表現エンジンが使用できるが、本家のマニュアルでは pcre の方がいいようなことを書いてるのでついでに組み込んでおく。

/etc/mk.conf への以下の行を追加する。

PKG_OPTIONS.postfix= sasl pcre

pkgsrc から postfix をインストールする手順はいつもどおり。

$ cd (pkgsrc のルート)/mail/postfix
$ make update

NetBSD では標準の /etc/rc.d/postfix があるので、pkgsrc の RCD script はインストールされない。代わりに、インストール時に表示されるメッセージ(MESSAGE.NetBSD を参照)を参考に、以下の内容で /etc/rc.conf.d/postfix を作成すると、/etc/rc.d/postfix から pkg の方の postfix を操作できる。

postfix_command='/usr/pkg/sbin/postfix'
required_files='/usr/pkg/etc/postfix/main.cf'
postconf='/usr/pkg/sbin/postconf'

コマンドラインから実行する場合は、NetBSD 付属の方を実行しないようにパスに気をつける(えー)。

PKG_OPTIONS.postfix=sasl とした時、依存関係で security/cyrus-sasl がインストールされる。実際の SASL 認証は、プラグインが必要。何が必要かは相手の SMTP サーバによるが、僕が契約しているプロバイダでは CRAM-MD5 が使われている。なので security/cy2-crammd5 を追加でインストールする。インストールされた認証プラグインはデフォルトで全て有効になるそうだ(設定ファイルを記述すれば、使用するプラグインを個別に指定することが可能)。

Postfix の基本設定は、/usr/pkg/etc/postfix/main.conf を編集して行う。書式は、行頭の # がコメントで、行の途中からはコメントは記述できない。行の先頭が空白文字だと、継続行として扱われる。といった感じでちょっと文法に癖がある印象。

myorigin の設定。最終的にはドメイン宛のメールを受け付けるので myorigin=$mydomain にする予定だが、テスト運用期間中はデフォルトの myorigin=$myhostname にしておくので、変更しない。

mynetworks の設定。接続が信頼されたネットワークのものかどうかを識別する際に使われる。設定していないと、デフォルトの mynetworks_style=subnet が評価されるので、外部に接続するインターフェースを持ったマシンでは設定しておいたほうが良いと思う。

#myorigin = $mydomain
mynetworks = 192.168.0.0/24, 127.0.0.0/8

長くなったので、SASL とかは別の記事にまとめることにする。あと、Postfix を管理するにあたって感じたことを以下に。

Postfix のキューの構造は Sendmail とはずいぶん異なるようなので、障害時にキューに溜まったメールファイルを直接削除するとかは避けたほうが無難。キューを操作するコマンドは用意されているのでそれを使う。

  • キューのフラッシュ postfix flush または postqueue -f
  • キュー内の特定のメールの処理 postqueue -i <queue_id>
  • キューからの削除 postsuper -d ALL (全て)、postsuper -d <queue_id> (個別指定)

Postfix のログは、各コマンドが個別に吐く(もちろんファイルとしては一つにまとまるのだが)ので、メールの処理を追跡するという意味では、Sendmail に比べて読みにくいと思う。慣れればすむ話なのか、ログ出力をチューニングするとなんとかなるのかはわからない。

Postfix が付ける Received の書式が気に入らない(見せたくない情報を隠したいなど)となっても、書式をカスタマイズすることはできないらしい。代わりに header_checks でひっかけて、置換するんだとか。ヘッダを編集したいわけではないんだけどな。だいたいそれだと、まかり間違って既存の Received にマッチしたらそっちも置き換わってしまうんじゃ?

いろいろと、しっくりこないところはありますが、とにかく、しばらく Postfix と付き合っていこうかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です