Dovecot: использование отдельной базы данных passdb для каждой службы

Dovecot: использование отдельной базы данных passdb для каждой службы

Ситуация: один фронтальный сервер, на котором Dovecot работает как прокси IMAP/POP3/ManageSieve, смесь серверов IMAP (Dovecot, Exchange, ...) на бэкэнде. Passdb Dovecot выполняет поиск в MySQL, который содержит простое сопоставление пользователя/хоста, фактическая аутентификация происходит на бэкэнд-серверах IMAP. Конфигурация более или менее такая, как описано здесь:http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy

Теперь я хотел бы добавить экземпляр Postfix на фронтальный сервер, который прослушивает порт отправки и аутентифицирует пользователей через SASL, используя локальный сокет Dovecot UNIX. Идея заключается в том, что пользователю нужно запомнить только одно имя хоста, одно имя пользователя и один пароль для всех почтовых служб.

Проблема в том, что Dovecot работает в режиме прокси, а это значит, что password_query возвращает NULL в качестве пароля и явно возвращает поле «nopasswd», содержащее «Y». Таким образом, пользователи не могут аутентифицироваться с помощью сокета UNIX.

Думаю, мне нужно убедить Dovecot использовать одну базу данных passdb для служб imap/pop3/managesieve и другую для службы «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'

Есть какие-нибудь указания?

Связанный контент