Восстановление сломанного файла skiplist
Если вы видите такой текст в файле syslog /var/log/mail.warn
Итак, сначала вырубаем твой сервер:
Затем, переходим в директорию, содержащую skiplist-файл seen
Используя skiplist.py, конвертируем machin.seen в текстовую версию
Затем, используем тулзу cvt_cyrusdb, чтобы ковертнуть текстовый файл в формат skiplist, указывайте полные пути к файлам
И не забудьте изменить хозяина seen файла, иначе cyrus не сможет получить к нему доступ.
Перезапустите сервер cyrus, и ваша проблема решена!
Ссылка на оригинальную статью
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: DBERROR: skiplist recovery /var/lib/cyrus/user/j/machin.seen: ADD at 2FC8 exists
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: DBERROR: opening /var/lib/cyrus/user/j/machin.seen: cyrusdb error
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: Could not open seen state for machin(System I/O error)
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: DBERROR: skiplist recovery /var/lib/cyrus/user/j/machin.seen: ADD at 2FC8 exists
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: DBERROR: opening /var/lib/cyrus/user/j/machin.seen: cyrusdb error
Oct 1 10:19:54 zerhuel cyrus/imap[28120]: Could not open seen state for machin(System I/O error)
, значит, ваш файл skiplist повреждён. Способ решения данной проблемы - сконвертировать файл seen в текстовый формат с использованием утилитки skiplist.py (ссылка на скачивание), затем пересоздав файл в формате db для cyrusИтак, сначала вырубаем твой сервер:
# /etc/init.d/cyrus2.2 stop
Stopping Cyrus IMAPd: .
Затем, переходим в директорию, содержащую skiplist-файл seen
# cd /var/lib/cyrus/user/
# ls
a b c d e f g h i j k l m n o p q r s t u v w x y z
# cd m
# ls -l
total 60
-rw------- 1 cyrus mail 24824 oct 1 10:19 machin.seen
-rw------- 1 cyrus mail 434 oct 1 09:54 machin.sub
Используя skiplist.py, конвертируем machin.seen в текстовую версию
# /scripts/skiplist.py /var/lib/cyrus/user/m/machin.seen > /var/lib/cyrus/user/m/machin.seen.txt
Затем, используем тулзу cvt_cyrusdb, чтобы ковертнуть текстовый файл в формат skiplist, указывайте полные пути к файлам
# mv /var/lib/cyrus/user/m/machin.seen /var/lib/cyrus/user/m/machin.seen.old
# cvt_cyrusdb /var/lib/cyrus/user/m/machin.seen.txt flat /var/lib/cyrus/user/m/machin.seen skiplist
Converting from /var/lib/cyrus/user/m/machin.seen.txt (flat) to /var/lib/cyrus/user/m/machin.seen (skiplist)
И не забудьте изменить хозяина seen файла, иначе cyrus не сможет получить к нему доступ.
# chown cyrus:mail machin.seen
Перезапустите сервер cyrus, и ваша проблема решена!
Ссылка на оригинальную статью
Комментарии
Отправить комментарий