Следующий файл журнала возникает из моего текущего почтового журнала:
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?
Я проверил, что сервер postgresql прослушивает порт 5432. И мой pg_hba.conf выглядит так.
# 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
Конфигурация подключения моего 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'
Какие-либо предложения? Может быть, мне нужно хешировать секрет, чтобы dovecot подталкивал md5-хешированный пароль к pgsql?
Редактировать: psql -U mailreader -d mail
оставляет мне приглашение SQL в базе данных mail
Не удалось подключиться к почте: не удалось подключиться к серверу: в доступе отказано. Сервер работает на хосте "localhost" (:: 1) и принимает
на самом деле намекал на проблему с SELinux. Изучив audit.log, я обнаружил, что следующая строка появляется постоянно.
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 = unlimited_u: system_r: dovecot_auth_t: s0 tcontext = unlimited_u: object_r: dovecot_var_run_t: s0 tclass = файл
После установки основных утилит политики с помощью этой команды:
yum установить policycoreutils-python
Мне удалось создать исключение для SELinux с помощью команды audit2allow:
grep auth_t /var/log/audit/audit.log | audit2allow -M postgreylocal
После этого исключение можно загрузить в SELinux, используя:
semodule -i postgreylocal.pp
И это все. Бег как шарм.
Судя по всему, ваш пользователь postgres, mailreader, не имеет доступа к почте базы данных postgres.
Как только вы это исправите, он начнет работать на вас.
Эта часть сообщения:
Не удалось подключиться к почте: не удалось подключиться к серверу: Доступ запрещен
Сервер работает на хосте "localhost" (:: 1) и принимает
намекает на SELinux проблема с разрешением. Именно тогда SELinux запрещает инициировать TCP-соединение из вашего процесса dovecot.
Видеть SELinux не позволит dovecot подключиться к postgresql в списке fedora-selinux-list для примера политики, которая, как сообщается, работает.
Суть его в следующем:
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;