尝试启动 dovecot 时出现以下情况:
Apr 28 13:37:00 master: Error: service(pop3-login): listen(*, 110) failed: Address already in use
Apr 28 13:37:00 master: Error: service(pop3-login): listen(*, 995) failed: Address already in use
Apr 28 13:37:00 master: Error: service(imap-login): listen(*, 143) failed: Address already in use
Apr 28 13:37:00 master: Error: service(imap-login): listen(*, 993) failed: Address already in use
并且“netstat -tulpn”显示以下内容:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3369/master
tcp 0 0 0.0.0.0:52125 0.0.0.0:* LISTEN 2396/rpc.statd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3244/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2375/rpcbind
tcp 0 0 :::22 :::* LISTEN 2562/sshd
tcp 0 0 :::25 :::* LISTEN 3369/master
tcp 0 0 :::443 :::* LISTEN 3390/httpd
tcp 0 0 :::39631 :::* LISTEN 2396/rpc.statd
tcp 0 0 :::111 :::* LISTEN 2375/rpcbind
tcp 0 0 :::80 :::* LISTEN 3390/httpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 2236/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 2375/rpcbind
udp 0 0 10.0.82.190:123 0.0.0.0:* 2589/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 2589/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2589/ntpd
udp 0 0 0.0.0.0:43243 0.0.0.0:* 2396/rpc.statd
udp 0 0 0.0.0.0:854 0.0.0.0:* 2375/rpcbind
udp 0 0 127.0.0.1:876 0.0.0.0:* 2396/rpc.statd
udp 0 0 :::111 :::* 2375/rpcbind
udp 0 0 :::854 :::* 2375/rpcbind
udp 0 0 :::54504 :::* 2396/rpc.statd
知道我这里遗漏了什么吗?
更新:
selinux 已禁用,并且发行版是 AWX Linux:
$ getenforce
Disabled
$ uname -a
Linux ip-10-0-82-190 4.14.268-139.500.amzn1.x86_64 #1 SMP Wed Mar 2 18:48:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
答案1
dovecot 似乎不知道 (与) portreserve 兼容。
检查 /etc/portreserve 中是否有保留您需要的端口的配置文件,并将其从范围中移除(例如,用 ~ 重命名)。或者,您可以将 portrelease 添加到 dovecot init 脚本中,以便在启动 dovecot 之前释放必要的端口。
值得注意的是这个勘误表(https://access.redhat.com/errata/RHSA-2020:1062)导致了这个错误报告(“Dovecot 应该使用 portrelease 来避免与 NFSv4 挂载的端口冲突”https://bugzilla.redhat.com/show_bug.cgi?id=1570283)。这些似乎与 NFSv4 所反对的 portreseve 缺陷更接近。我不清楚勘误表是否真的修复了问题,因为错误报告仅提供了一些背景信息和可能的解决方法。
我不认为这个问题可以在 dovecot 端修复 - 修复 portreserve 应该可以解决这个问题。SUNRPC 已知随机分配 rpc 端口 665-1023 的缺点(当然 - 不是完全随机 - 它类似于 6XX+pid,这会导致某些系统上 993/995 端口经常出现问题)- 因此当 NFSv4 到位并且没有分配静态端口时,它可以随机消耗 993/995 端口。