Dovecot: サービスごとに個別のpassdbを使用する

Dovecot: サービスごとに個別のpassdbを使用する

状況: フロントエンド サーバー 1 台で Dovecot を IMAP/POP3/ManageSieve プロキシとして実行し、バックエンドに複数の IMAP サーバー (Dovecot、Exchange など) が混在しています。Dovecot の passdb は、単純なユーザー/ホスト マッピングを含む MySQL に対して検索を実行し、実際の認証はバックエンドの IMAP サーバーで行われます。構成は、おおよそ次のようになります。http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy

ここで、フロント フェイス サーバーに Postfix インスタンスを追加し、送信ポートをリッスンして、ローカル Dovecot の UNIX ソケットを使用して SASL 経由でユーザーを認証したいと思います。その目的は、ユーザーはすべてのメール関連サービスに対して 1 つのホスト名、1 つのユーザー名、1 つのパスワードを覚えておくだけでよいというものです。

問題は、Dovecot がプロキシ モードで動作していることです。つまり、password_query はパスワードとして NULL を返し、明示的に「Y」を含むフィールド「nopasswd」を返します。したがって、ユーザーは UNIX ソケットに対して認証できません。

私がやりたいことは、Dovecot に、imap/pop3/managesieve サービス用に 1 つの passdb を使用し、"auth" サービス用に別の passdb を使用するように説得することです。

以下の構成スニペットは機能しませんが、私が達成したいことを示しているはずです。

protocols = imap pop3 sieve

service auth {
    passdb sql {
        driver = sql
        args = /etc/dovecot/mysql-auth-sasl.conf.ext
    }

    unix_listener /var/spool/postfix/private/auth {
        user = postfix
        group = postfix
        mode = 0666
    }
}

# IMAP/POP3/ManageSieve auth against MySQL
passdb sql {
    driver = sql
    args = /etc/dovecot/mysql-auth-default.conf.ext
}

例 mysql-auth-sasl.conf.ext

driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=somethingrandom
password_query = SELECT password AS password FROM users WHERE login = '%u'

例: mysql-auth-default.conf.ext:

driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=somethingrandom
password_query = SELECT NULL AS password, 'Y' as nopassword, host, 'Y' AS proxy FROM users WHERE login = '%u'

何かヒントはありますか?

関連情報