Dovecot: usando un passdb separado por servicio

Dovecot: usando un passdb separado por servicio

Situación: un servidor frontal que ejecuta Dovecot como proxy IMAP/POP3/ManageSieve, una combinación de servidores IMAP (Dovecot, Exchange, ...) en el back-end. Passdb de Dovecot realiza búsquedas en MySQL, que contiene un mapeo simple de usuario/host, la autenticación real ocurre en los servidores IMAP de back-end. La configuración es más o menos como se describe aquí:http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy

Ahora me gustaría agregar una instancia de Postfix en el servidor frontal que escucha en el puerto de envío y autentica a los usuarios a través de SASL utilizando el socket UNIX del Dovecot local. La idea es que un usuario sólo necesite recordar un único nombre de host, un nombre de usuario y una contraseña para todos los servicios relacionados con el correo.

El problema es que Dovecot está funcionando en modo proxy, lo que significa que contraseña_query devuelve NULL como contraseña y devuelve explícitamente un campo "nopasswd" que contiene "Y". Por lo tanto, los usuarios no pueden autenticarse en el socket UNIX.

Lo que creo que quiero hacer es convencer a Dovecot de que use un passdb para los servicios imap/pop3/managesieve y otro diferente para el servicio "auth".

El siguiente fragmento de configuración no funciona, pero debería ilustrar lo que quiero lograr:

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
}

Ejemplo 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'

Ejemplo 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'

¿Algún consejo?

información relacionada