Сегодня встретил любопытный случай — не отправлялась почта с VPS-сервера, на котором был установлен ISPManager 4 Pro. Ни через «родной» SquirrelMail, ни по SMTP (что вполне закономерно, так как SquirrelMail работает по IMAP).

Беглый анализ логов показал, что в процессе работы exim не мог получить доступ  к  /var/spool/exim4/db/ratelimit.lockfile для записи.

В логе /var/log/exim4/paniclog это событие выглядело вот так:

2014-08-11 03:11:01 1XGdBZ-0001PI-Gv Failed to get write lock for /var/spool/exim4/db/ratelimit.lockfile: timed out
2014-08-11 16:41:01 1XGppR-0003NJ-OX Failed to get write lock for /var/spool/exim4/db/ratelimit.lockfile: timed out
2014-08-11 16:41:05 Failed to get write lock for /var/spool/exim4/db/ratelimit.lockfile: timed out
2014-08-11 16:42:05 Failed to get write lock for /var/spool/exim4/db/ratelimit.lockfile: timed out

А в /var/log/exim4/mainlog так:

2014-08-10 21:11:41 1XGXZB-0000rB-99 Berkeley DB error: __fop_file_setup: Retry limit (100) exceeded
2014-08-10 21:11:41 1XGXZB-0000rB-99 failed to open DB file /var/spool/exim4/db/ratelimit: File exists
2014-08-10 21:11:41 1XGXZB-0000rB-99 F=<www-data@vps-xxxxx.vps-ukraine.com.ua> rejected by non-SMTP ACL: ratelimit database not available
2014-08-10 21:13:21 1XGXan-0000rL-D9 Berkeley DB error: __fop_file_setup: Retry limit (100) exceeded
2014-08-10 21:13:21 1XGXan-0000rL-D9 failed to open DB file /var/spool/exim4/db/ratelimit: File exists
2014-08-10 21:13:21 1XGXan-0000rL-D9 F=<> rejected by non-SMTP ACL: ratelimit database not available
2014-08-10 21:13:21 1XGXan-0000rL-D9 Error while reading message with no usable sender address (R=1XGXZB-0000rB-99): rejected by non-SMTP ACL: local configuration problem
2014-08-10 21:13:21 1XGXZB-0000rB-99 Child mail process returned status 1
2014-08-10 21:21:41 1XGXir-0000s5-He Berkeley DB error: __fop_file_setup: Retry limit (100) exceeded
2014-08-10 21:21:41 1XGXir-0000s5-He failed to open DB file /var/spool/exim4/db/ratelimit: File exists
2014-08-10 21:21:41 1XGXir-0000s5-He F=<www-data@vps-xxxxx.vps-ukraine.com.ua> rejected by non-SMTP ACL: ratelimit database not available

Ну и в /var/log/exim4/rejectlog при каждом письме была ошибка  «rejected by non-SMTP ACL: ratelimit database not available»

Для исправления ошибки оказалось достаточно удалить файлы /var/spool/exim4/db/ratelimit.lockfile и /var/spool/exim4/db/ratelimit вот такой командой:

root@vps-xxxxx:~# rm -fv /var/spool/exim4/db/*

(после удаления эти файлы пересоздаются exim’ом автоматически и дальше работают корректно).