というわけで、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。
さらに、次のファイルが必要です。
- /usr/pkg/etc/postfix/sasl_passwd
フォーマットは、
<相手方 SMTP サーバー名> <ユーザー ID>:<パスワード>
です。これも、postmap コマンドで .db に変換しておきます。
動作を確認する
最後に動作の確認です。一度 postfix を再起動した後、
- 内部ネットワークから外部へ
- 外部から内部ネットワークへ
- ローカルホストから外部へ
- ローカルホスト内
などいろいろな動作を確認しておきます。最後にログファイルを確認して、変なエラーが出ていなければ OK でしょう。
*1:設定不足になって、メールの受信ができなくなる。