Dovecot: usando um passdb separado por serviço

2

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?

    
por Gerry 27.02.2015 / 15:50

0 respostas