Situação: um servidor frontal executando Dovecot como proxy IMAP / POP3 / ManageSieve, uma mistura de servidores IMAP (Dovecot, Exchange, ...) no back-end. O passdb do Dovecot faz buscas no MySQL que contém um mapeamento simples de usuário / host, a autenticação real acontece nos servidores IMAP de back-end. A configuração é mais ou menos como descrito aqui: link
Agora, gostaria de adicionar uma instância Postfix no servidor frontal que escuta na porta de envio e autentica os usuários por meio do SASL usando o soquete UNIX local da Dovecot. A ideia é que um usuário só precisa 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 no modo proxy, o que significa que o password_query retorna NULL como a senha e explicitamente retorna um campo "nopasswd" contendo "Y". Assim, os usuários não podem autenticar contra o soquete UNIX.
O que eu acho que quero é convencer o Dovecot a usar um passdb para os serviços imap / pop3 / managesieve e outro diferente para o serviço "auth".
O snippet de configuração abaixo não funciona, mas deve ilustrar o que eu quero 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'
Algum apontador?
Tags authentication dovecot sasl