以下日志文件来自我当前的邮件日志:
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
实际上是在暗示 SELinux 问题。检查 audit.log 后,我发现以下行,反复出现。
使用此命令安装策略核心实用程序后:
我能够使用 audit2allow 命令为 SELinux 创建一个例外:
此后,可以使用以下命令将异常加载到 SELinux 中:
就是这样。像魅力一样奔跑。
从外观上看,您的 postgres 用户 mailreader 无权访问 postgres 数据库邮件。
一旦你解决了这个问题,它就会开始为你工作。
这部分消息:
提示SELinux权限问题。那是 SELinux 禁止从你的 dovecot 进程启动 TCP 连接的时候。
请参阅SELinux 不会让 dovecot 连接到fedora-selinux-list 上的 postgresql 以获取报告有效的示例策略。
它的要点似乎是: