Postfix で SMTP Auth(Dovecot SASL編)

最終更新日:2006年09月14日

はじめに

概要

Postfix で Dovecot SASL を使った SMTP Auth 環境を作ってみた。
Dovecot SASL は複数の認証エンジンを組み合わせて使えるので、まずは pam で認証して、失敗したら LDAP で認証するような環境にしてみた。

Cyrus SASL を使った環境の構築方法は、『Postfix で SMTP Auth(LDAP編)』参照。

構築した環境

名称 バージョン 備考
Solaris x86 10
Postfix 2.3.3 2006.09.12時点での最新版。
Dovecot 1.0 rc7 2006.09.12時点での最新版。
Dovecot で IMAP/POP3 の LDAP認証』で構築した環境を使用して設定変更のみ行った。
OpenLDAP 2.3.27 今回は、CSWパッケージを使用した。
CSWパッケージについては、『Solarisへのフリーソフトのインストール方法』参照。

インストール

Postfix のインストール

Postfix で SMTP Auth(LDAP編)』で作成したバイナリでも問題なく動いたが、とりあえず作り直してみた。
Postfix SASL Howto の和訳ドキュメントを参照して作業を進める。
$ make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SASL_SERVER=\"dovecot\"'
$ make
# make install
※ 但し、本環境ではSCWパッケージで入れたpcreライブラリを使用する都合で以下のようにした。
$ make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SASL_SERVER=\"dovecot\" -I/opt/csw/include' AUXLIBS='-L/opt/csw/lib -R/opt/csw/lib'

Dovecot のインストール

Dovecot で IMAP/POP3 の LDAP認証』で作成したバイナリで問題なし。

設定

Postfix の設定

main.cf 変更

/etc/postfix/main.cf を変更する。
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
    permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_type = dovecot          ← Cyrus SASL の設定からの変更箇所
smtpd_sasl_path = private/auth     ← Cyrus SASL の設定からの変更箇所

Dovecot の設定

dovecot.conf 変更

/usr/local/etc/dovecot.conf を変更して、authセクションに socket listen の設定を追加する。
auth default {
  mechanisms = plain login
  
  passdb pam {
  }
  passdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }
  
  userdb passwd {
  }
  userdb static {
    args = uid=5000 gid=5000 home=/var/mail/vhosts/%d/%n
  }
  
  user = root
  
  # === ここから下が追加した部分 ===
  # Postfix SMTP Auth
  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

dovecot-ldap.conf 作成

Dovecot で IMAP/POP3 の LDAP認証』の設定と同じで問題なし。
hosts = ldap.example.com
auth_bind = yes
base = o=Example Limited, c=jp
pass_filter = (mail=%u)

キャッシュの設定(お好みで)

キャッシュしないと毎回LDAPサーバに問い合わせに行く(pamで解決したユーザは除く)ので、それを避けるにはキャッシュを有効にする。

dovecot.conf
auth_cache_size = 10      ← キャッシュサイズの最大値[KB](デフォルトは0で無効)
#auth_cache_ttl = 3600    ← キャッシュデータの生存時間[sec](デフォルトは1時間)
dovecot-ldap.conf
default_pass_scheme = PLAIN    ← 本環境では、パスワードを plaintext で扱ったので設定

動作確認

Postix のSASLプラグインタイプの確認

SMTPサーバでのSASLサポート
$ postconf -a
cyrus
dovecot
SMTP+LMTPクライアントでのSASLサポート
(Dovecot SASL はサーバのみをサポート)
$ postconf -A
cyrus

ログの出力設定

Dovecot で IMAP/POP3 の LDAP認証』参照。