2019/06/05(水)Postfix にて Cyrus SASL 認証のセットアップ

2019/06/05 17:31 サーバ運営・管理
自分メモ。
以前は管理の都合上、ソースコードから構築していたが、最近はFreeBSD でも Ports から導入する方が確実。
最近の FreeBSD では、素の Cyrus-SASL ソースコードでは色々面倒なことのほうが多い。

security/cyrus-sasl-2.1.27
security/cyrus-sasl-saslauthd-2.1.27_1

の2つを Ports からインストールします。
その後で、SMTP 認証にCyrus SASL を使えるように Postfix をセットアップします。
Postfix は、Ports ではなく、ソースコードから構築しないと、管理上却って面倒。

root で先ずはこんな感じで環境設定:
# setenv CPPFLAGS '-I/usr/local/include -I/usr/local/include/db5 -I/usr/include -I/usr/local/include/sasl'
# setenv LDFLAGS '-L/usr/local/lib -L/usr/local/lib/db5 -L/usr/lib'
# setenv LD_LIBRARY_PATH '/usr/local/lib /usr/local/lib/db5 /usr/lib'
これやらないと、当方の環境ではコンパイル自体が上手く行かないんです。

続いて root で make ファイル生成
(画面上では見やすいように複数行にしているが、実際は半角スペースで区切って1行にしてください):
# make -f Makefile.init makefiles
  'CCARGS=-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL
             -I/usr/local/include -I/usr/local/include/sasl -I/usr/include/openssl'
  'AUXLIBS=-L/usr/lib -lssl -lcrypto
       -L/usr/local/lib -lsasl2 -licudata -licui18n -licuio -licutest -licutu -licuuc
       -L/usr/local/lib/db5 -ldb'
これが上手く出来れば、あとは普通に
# make
# make install
# rehash
とすれば、Cyrus SASL 認証サポート対応の Postfix が出来るはず。

続いて設定:
下記の内容で、 /usr/local/lib/saal2/smtpd.conf のテキストファイルを作成:
pwcheck_method: auxprop
この設定は、cyrus SASL 独自で認証ユーザを管理することを意味します。
サーバ自身にユーザアカウントを追加せずに済むので、このメールアドレス管理方法はお勧めです。
以下でメールアドレスを設定・管理できます:
# saslpasswd2 -c -u example.com xxxxuser (ユーザ新規追加)
# saslpasswd2 -d -u example.com xxxxuser (ユーザの削除)
# sasldblistusers2            (登録ユーザの確認)
ここで、example.com は実際に使用するドメイン名、 xxxxuser は、メールアドレスの@マークの左側を指定します。
ユーザ新規追加の際のみ、設定するパスワード入力を促されます。2回同じパスワードを入力するようになります。
/usr/local/etc/sasldb2 に登録されます。このファイルのパーミッションは 644 にしておきます。

更に、/etc/postfix/main.cf に下記の設定追加:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain

smtpd_relay_restrictions = permit_mynetworks,
                           permit_sasl_authenticated,
                           defer_unauth_destination

smtpd_recipient_restrictions = permit_mynetworks,
                               permit_sasl_authenticated,
                               reject_unauth_destination

smtpd_helo_restrictions = permit_mynetworks,
                          permit_sasl_authenticated,
                          reject_unauth_destination
最後に自動起動の設定です。/etc/rc.conf に
saslauthd_enable="YES"
saslauthd_flags="-a pam"
の2行を追加しておきましょう。
最後に、サーバを再起動するか、 /usr/local/etc/rc.d/saslauthd start で、認証デーモンをスタート出来たら設定完了。