Situação: um servidor frontal executando o Dovecot como proxy IMAP/POP3/ManageSieve, uma mistura de servidores IMAP (Dovecot, Exchange, ...) no back-end. O passdb do Dovecot faz pesquisas no MySQL que contém um mapeamento simples de usuário/host, a autenticação real acontece nos servidores IMAP back-end. A configuração é mais ou menos como descrita aqui:http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy
Agora eu gostaria de adicionar uma instância Postfix no servidor frontal que escuta na porta de envio e autentica usuários via SASL usando o soquete UNIX do Dovecot local. A ideia é que um usuário só precise se lembrar de um único nome de host, um nome de usuário e uma senha para todos os serviços relacionados a correio.
O problema é que o Dovecot está operando em modo proxy, o que significa que password_query retorna NULL como senha e retorna explicitamente um campo "nopasswd" contendo "Y". Assim, os usuários não podem autenticar no soquete UNIX.
O que acho que quero fazer é convencer o Dovecot a usar um passdb para os serviços imap/pop3/managesieve e outro diferente para o serviço "auth".
O trecho de configuração abaixo não funciona, mas deve ilustrar o que desejo alcançar:
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
}
Exemplo 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'
Exemplo 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'
Alguma indicação?