[dovecot] Cached message size larger than expected

Если кратко, то данная ошибка говорит, что размер письма отличается от ожидаемого. Такое поведение возникает, если содержимое файла письма изменилось (случайно или преднамеренно). При этом разные клиенты могут по-разному отображать это письмо: частично или вообще никак (показывать ошибку). В сети почти все варианты решения выглядят так: удалите из папки Maildir файлы dovecot.* и перезапустите dovecot (dovecot перепланирует папку и создаст заново эти файлы). Такой рецепт подойдёт, если у вас старая версия, до 2.0.X включительно. Но если у вас версия 2.1.Х, то это не поможет.

Всё дело в том, что dovecot в имя каждого письма записывает его размер:

1555601722.M516816P17651.mail,S=9677:2,RS

где суффикс S=<размер с точностью до байта> как раз и означает размер письма.

Если вы хотите избавится от ошибки, но не решить проблему, то достаточно добавить в конфигурации dovecot’a такую строку:


maildir_broken_filename_sizes=yes

Но если у вас используется сжатие (zlib_plugin), то такой вариант неприменим из-за 2-ого сжатия. Что бы правильно решить проблему — нужно высчитать размер письма с точностью до байта и переименовать его, учитывая новый размер:

1555601722.M516816P17651.mail,S=9677:2,RS) failed: Cached message size larger than expected (9677 > 9675, box=INBOX, UID=98) (read reason=)
...
# mv '1555601722.M516816P17651.mail,S=9677:2,RS' '1555601722.M516816P17651.mail,S=9675:2,RS'

Размер письма оно так же подсказывает и в логе.

А что делать, если у вас не одно такое письмо, а сотни или тысячи? Можно использовать скрипт.

PS. Обсуждение этой проблемы можете почитать здесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *