Dovecot: 서비스별로 별도의 passdb 사용

Dovecot: 서비스별로 별도의 passdb 사용

상황: IMAP/POP3/ManageSieve 프록시로 Dovecot을 실행하는 하나의 전면 서버, 백엔드에 IMAP 서버(Dovecot, Exchange 등)가 혼합되어 있습니다. Dovecot의 passdb는 간단한 사용자/호스트 매핑이 포함된 MySQL에 대해 조회를 수행하며 실제 인증은 백엔드 IMAP 서버에서 발생합니다. 구성은 여기에 설명된 것과 비슷합니다.http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy

이제 제출 포트에서 수신 대기하고 로컬 Dovecot의 UNIX 소켓을 사용하여 SASL을 통해 사용자를 인증하는 전면 서버에 Postfix 인스턴스를 추가하고 싶습니다. 사용자는 모든 메일 관련 서비스에 대해 하나의 호스트 이름, 하나의 사용자 이름, 하나의 비밀번호만 기억하면 된다는 아이디어입니다.

문제는 Dovecot이 프록시 모드에서 작동하고 있다는 것입니다. 이는 비밀번호 쿼리가 비밀번호로 NULL을 반환하고 "Y"가 포함된 "nopasswd" 필드를 명시적으로 반환한다는 것을 의미합니다. 따라서 사용자는 UNIX 소켓에 대해 인증할 수 없습니다.

내가 하고 싶은 것은 Dovecot이 imap/pop3/managesieve 서비스에 대해 하나의 passdb를 사용하고 "auth" 서비스에 대해 다른 하나를 사용하도록 설득하는 것입니다.

아래 구성 조각은 작동하지 않지만 달성하려는 목표를 보여줍니다.

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'

어떤 조언이 있습니까?

관련 정보