Dovecot - permissão de erro de autenticação negada

2

O seguinte arquivo de log surge do meu maillog atual:

Apr 24 17:44:48 h2290750 dovecot: auth: Error: pgsql: Connect failed to mail: could not connect to server: Permission denied
Apr 24 17:44:48 h2290750 dovecot: auth: Error: #011Is the server running on host "localhost" (::1) and accepting
Apr 24 17:44:48 h2290750 dovecot: auth: Error: #011TCP/IP connections on port 5432?
Apr 24 17:44:48 h2290750 dovecot: auth: Error: could not connect to server: Permission denied
Apr 24 17:44:48 h2290750 dovecot: auth: Error: #011Is the server running on host "localhost" (127.0.0.1) and accepting
Apr 24 17:44:48 h2290750 dovecot: auth: Error: #011TCP/IP connections on port 5432?

Eu verifiquei que o servidor postgresql está escutando na porta 5432. E meu pg_hba.conf se parece com isso.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# Mail stuff
host    mail            mailreader      127.0.0.1/32            md5
host    mail            mailreader      ::1/128                 md5
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

A configuração de conexão do meu dovecot-sql.conf:

driver = pgsql
connect = host=localhost dbname=mail user=mailreader password=secret
default_pass_scheme = SHA512
password_query = SELECT email as user, password, 'maildir:/home/mail'||maildir as userdb_mail FROM users WHERE email = '%u'

Alguma sugestão? Talvez eu precise misturar o segredo, então o dovecot envia uma senha com md5 para o pgsql?

Editar: psql -U mailreader -d mail me deixa com um prompt SQL dentro do banco de dados mail

    
por Coxer 24.04.2014 / 18:51

3 respostas

3

Connect failed to mail: could not connect to server: Permission denied Is the server running on host "localhost" (::1) and accepting

estava realmente insinuando um problema do SELinux. Depois de examinar o audit.log, encontrei a seguinte linha, aparecendo repetidamente.

type=AVC msg=audit(1398759363.514:635): avc: denied { open } for pid=12779 comm="auth" name="auth-token-secret.dat.tmp" dev=md1 ino=11927980 scontext=unconfined_u:system_r:dovecot_auth_t:s0 tcontext=unconfined_u:object_r:dovecot_var_run_t:s0 tclass=file

Depois de instalar os utilitários principais da política usando este comando:

yum install policycoreutils-python

Consegui criar uma excpetion para o SELinux com o comando audit2allow:

grep auth_t /var/log/audit/audit.log | audit2allow -M postgreylocal

Depois disso, a exceção pode ser carregada no SELinux usando:

semodule -i postgreylocal.pp

E é isso. Correndo como um encanto.

    
por 29.04.2014 / 15:53
0

Da aparência, o usuário de postgres, mailreader, não tem acesso ao correio do banco de dados postgres.

Depois de corrigir isso, ele começará a funcionar para você.

    
por 24.04.2014 / 19:05
0

Esta parte da mensagem:

Connect failed to mail: could not connect to server: Permission denied
Is the server running on host "localhost" (::1) and accepting

sugere um problema de permissão do SELinux . É quando o SELinux proíbe iniciar uma conexão TCP do seu processo de pombal.

Veja SELinux não permitirá que o dovecot se conecte ao postgresql em fedora-selinux-list para uma política de amostra relatada para trabalhar.

A essência disso parece ser:

module dovecotauthfixes 1.0;

require {
       type dovecot_auth_t;
       type postgresql_port_t;
       type postgresql_tmp_t;
       type postgresql_t;
       class sock_file write;
       class tcp_socket name_connect;
       class unix_stream_socket connectto;
}

#============= dovecot_auth_t ==============
allow dovecot_auth_t postgresql_port_t:tcp_socket name_connect;
allow dovecot_auth_t postgresql_t:unix_stream_socket connectto;
allow dovecot_auth_t postgresql_tmp_t:sock_file write;
    
por 28.04.2014 / 01:44