Ошибка Filename keeps changing for UID=XXXXX
возникает, когда Dovecot не может получить доступ к файлу почты из-за повреждения файла или неправильных прав доступа.
# Просмотр логов с ошибками
docker logs mailcowdockerized-dovecot-mailcow-1 --tail 100 | grep "Filename keeps changing"
# Поиск конкретного пользователя
docker logs mailcowdockerized-dovecot-mailcow-1 --tail 1000 | grep "problem_user@domain.com"
Из логов извлеките:
alert@tx0.ru
)18925
)1754978545.M300847P78132.d644d3099be8,S=4285,W=4379:2,
)# Создание резервной копии dovecot-uidlist
docker exec mailcowdockerized-dovecot-mailcow-1 cp /var/vmail/domain.com/user/Maildir/dovecot-uidlist /var/vmail/domain.com/user/Maildir/dovecot-uidlist.backup.$(date +%Y%m%d_%H%M%S)
# Проверка файла в директории cur
docker exec mailcowdockerized-dovecot-mailcow-1 ls -la "/var/vmail/domain.com/user/Maildir/cur/PROBLEM_FILE_NAME"
# Поиск файла по UID
docker exec mailcowdockerized-dovecot-mailcow-1 grep "UID_NUMBER" /var/vmail/domain.com/user/Maildir/dovecot-uidlist
# Удаление записи из dovecot-uidlist
docker exec mailcowdockerized-dovecot-mailcow-1 sed -i '/PROBLEM_FILE_NAME/d' /var/vmail/domain.com/user/Maildir/dovecot-uidlist
# Проверка удаления
docker exec mailcowdockerized-dovecot-mailcow-1 grep "PROBLEM_FILE_NAME" /var/vmail/domain.com/user/Maildir/dovecot-uidlist
# Принудительное удаление файла
docker exec mailcowdockerized-dovecot-mailcow-1 rm -f "/var/vmail/domain.com/user/Maildir/cur/PROBLEM_FILE_NAME"
# Проверка удаления
docker exec mailcowdockerized-dovecot-mailcow-1 ls -la "/var/vmail/domain.com/user/Maildir/cur/PROBLEM_FILE_NAME"
# Перезапуск контейнера
docker restart mailcowdockerized-dovecot-mailcow-1
# Ожидание запуска
sleep 15
# Проверка логов на отсутствие ошибок
docker logs mailcowdockerized-dovecot-mailcow-1 --tail 50 | grep "Filename keeps changing"
# Проверка подключения пользователя
docker logs mailcowdockerized-dovecot-mailcow-1 --tail 100 | grep "problem_user@domain.com"
# Скрипт для мониторинга ошибок
#!/bin/bash
ERRORS=$(docker logs mailcowdockerized-dovecot-mailcow-1 --tail 1000 | grep -c "Filename keeps changing")
if [ $ERRORS -gt 0 ]; then
echo "Обнаружены ошибки Dovecot: $ERRORS"
# Отправка уведомления
fi
# Проверка прав доступа
docker exec mailcowdockerized-dovecot-mailcow-1 find /var/vmail -type f -not -user vmail -o -not -group vmail
# Проверка поврежденных файлов
docker exec mailcowdockerized-dovecot-mailcow-1 find /var/vmail -name "*,S=*,W=*" -exec test -f {} \; -print
# Ежедневная резервная копия dovecot-uidlist
0 2 * * * docker exec mailcowdockerized-dovecot-mailcow-1 find /var/vmail -name "dovecot-uidlist" -exec cp {} {}.backup.$(date +\%Y\%m\%d) \;