我注意到我的邮件服务器出现了一些service temporarily unavailable
错误并且无法发送电子邮件,因此在深入研究后我发现原因是 Postfix 无法连接到 Amavis。
当我查看 Amavis 的日志记录(我在 中找到/var/log/mail.warn
)时,我发现了以下内容:
[snip] (!!)TROUBLE in pre_loop_hook: db_init: BDB no dbS: BDB0002 __fop_file_setup: Retry limit (100) exceeded, File exists. at (eval 91) line 318.
[snip] (!)_DIE: Suicide () TROUBLE in pre_loop_hook: db_init: BDB no dbS: BDB0002 __fop_file_setup: Retry limit (100) exceeded, File exists. at (eval 91) line 318.
为什么会发生这种情况,我该如何解决?
我正在运行 Debian,我相信在这种情况发生之前我已经更新了软件包并重新启动,所以也许更新破坏了某些东西。
答案1
我正在自我回答这个问题,因为我找到了解决方案,但我仍然不知道为什么会发生这种情况,所以如果其他人对此有任何见解,我会很高兴听到。
/var/lib/amavis/db
当我尝试手动运行时,我看到了一个参考amavis-new
,因此我将该文件夹移至db.bak
(在 Amavis 抱怨该文件夹不存在后,创建了一个具有相同amavis:amavis 750
权限的新文件夹)。此后Amavis能够成功启动,我的电子邮件又开始发送。
如前所述,我仍然不确定为什么会发生这种情况,尽管它可能与问题中提到的软件包更新有关。
我也不知道Amavis数据库中是否有重要的东西,因此我将其移到一边而不是完全删除它。
答案2
我在这里遇到了同样的问题,实际上一周内第二次发生了。 amavisd-new 版本是 amavisd-new-2.10.1 (20141025)。
我的解决方法如下:
rm /var/lib/amavis/db/*
/etc/init.d/amavis restart
/etc/init.d/amavis-mc restart
/etc/init.d/amavisd-snmp-subagent restart
/etc/init.d/postfix restart
如果有人知道发生这种情况的原因,我很高兴有人回复!