我正在尝试在 Ubuntu Natty 上基于 postfix 并使用 Courier 的 imap 接口设置电子邮件服务器。电子邮件可以毫无问题地接收到虚拟邮箱中,然后可以使用 imap 客户端检索和阅读,但我无法从客户端发送电子邮件。Mail.log 包含许多条目,例如<time> <hostname> imapd: Failed to connect to socket /tmp/fam--
。
显然/tmp/fam--
是 界面的一部分fam
(或者在 Ubuntu 服务器的情况下)gamin
,它监控邮箱文件,允许 Courier 立即获知新邮件。据我所知,这与 Courier 的文件更改监视器有关,它允许多个客户端同时打开同一个文件夹并实时接收文件夹内容的更新。我曾希望将其设置IMAP_ENHANCEDIDLE
为 0/etc/courier/imapd
可以消除依赖性,消除进一步的 /tmp/fam-- 错误并允许开始发送电子邮件。没有这样的运气。
Gamin
已安装到系统中并ps -A|grep gam
发现gam_server
正在运行。可能是配置问题,但我没有看到任何相关的配置选项,无论是 Courier 还是 Gamin。
在寻找有关此问题的建议时,我发现一些参考资料表明 gamin 会随着时间的推移而增长(内存泄漏),需要定期将其终止。听起来它带来的麻烦比它的价值要多,而且对 imapd 来说并不是必需的。
此时,我倾向于编译不依赖 FAM 的 courier-imap 并替换通过 apt-get 安装的内容,但我犹豫着是否这样做,担心这样做会带来更大的麻烦。
关于如何让 imapd 与 gamin 对话,有什么建议吗?我想放弃 imapd 对 gamin 的使用,这样做对吗?关于在没有 FAM 依赖的情况下重新编译 courier-imapd,有什么提示、建议或注意事项吗?
答案1
我收到了同样的错误,但问题是由 /etc/passwd 文件的权限错误引起的。有人将其更改为 600,这阻止了其他程序(如 postfix 或 courier)读取它们所需的用户和组。
我的解决办法是:
-bash-3.2# chmod 644 /etc/passwd
-bash-3.2# chmod 644 /etc/group
答案2
实际上我也遇到过这种情况,而且 courier 错误非常具有欺骗性。在我的例子中,这是由于 maildir 根目录被设置为由一个没有在 /etc/passwd 中定义用户的 uid 所拥有(因此本质上通过与 2012 年的 Nexus2k 相同的答案解决了该问题)。
我的 maildir 根目录(以及用户的 maildir)归 uid=9000 所有,而且我没有使用 useradd 创建用户。添加用户/组(没有密码,shell 为 /bin/false)消除了 mail.log 上的 courier 错误,使得有关 famd 的整个投诉变得无关紧要且令人困惑。
答案3
如果其他人也遇到这个问题。解决方案如下:
groupadd-g 2000 vmail
用户添加-u 2000-g vmail vmail
对我来说很管用。如果用户不存在,gam_server 似乎不会启动。我无法切换到 dovecot,因为我喜欢 exim4 作为 MTA,而 dovecot 需要 postfix。