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?