というわけで、Postfix の設定

上に書いたサイトを参照すれば設定できるのですが、ここでは備忘録として簡単に記しておきます。

Postfix のアップデート

NetBSD 1.6.2 に入っている Postfix は古いので、pkgsrc から最新版をインストールしました。といっても、current 版ではありません。
この際、sasl に加え ipv6 オプションを有効にしなくてはならないそうです。私はメンドーなので、pkgsrc/mail/options.mk に次のように書き加えてしまいました。

PKG_OPTIONS+= sasl inet6

そして、make install です。

Cyrus の追加モジュールのインストール

pkgsrc から、以下をインストールしておきます。他のモジュールも必要かも知れませんが、私は pobox.com への SMTP 接続に必要と思しきものだけインストールしました。

  • security/cy2-login
  • security/cy2-plain

Postfix のセットアップ (まずは SASL なし)

今までのバージョンの main.cf とほとんど共通のようですが、差分だけをマージしました。具体的には、以下の指定です。

  • myhostname
  • mydomain
  • myorigin
  • mydestination
  • mynetworks

これに加えて、以下を追加しました。これは、元々利用していた設定です。postmap で .db ファイルを再構築するのを忘れないようにします。

  • transport_maps = hash:/usr/pkg/etc/postfix/transport

続いて、/etc/rc.d/postfix の修正です。これは次の部分を修正しただけです。

start_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix start"
stop_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix stop"
reload_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix reload"

さて、早速 Postfix を起動すると、あるディレクトリのパーミッションが不正だと言って怒られるので、修正しておきます。どうもバージョンアップで厳しくなった感じです。

IPv6 に注意

さて、今回から IPv6 に対応させたことで、一つポカをやってしまいました。ローカルホストから SMTP ポートを叩く場合ですが、mynetworks の設定に注意が必要です。例えば、次のようにします。これを忘れると、IPv6 で自サイト内からアクセスしたときにリレーを拒否されてしまいます。

mynetworks = ... [::1]/128 [fe80::]/10 [2001:1234:5678::]/48

続いて SASL 対応化

まず、main.cf を以下のように追加します。

  • smtp_sasl_auth_enable = yes
  • smtp_sasl_password_maps = hash:/usr/pkg/etc/postfix/sasl_passwd
  • smtp_sasl_security_options =

このとき、間違って

mailbox_transport = cyrus

を追加しないようにします。これは、別の目的の設定のようです*1
さらに、次のファイルが必要です。

フォーマットは、

<相手方 SMTP サーバー名>    <ユーザー ID>:<パスワード>

です。これも、postmap コマンドで .db に変換しておきます。

動作を確認する

最後に動作の確認です。一度 postfix を再起動した後、

  • 内部ネットワークから外部へ
  • 外部から内部ネットワークへ
  • ローカルホストから外部へ
  • ローカルホスト内

などいろいろな動作を確認しておきます。最後にログファイルを確認して、変なエラーが出ていなければ OK でしょう。

*1:設定不足になって、メールの受信ができなくなる。