Вопрос или проблема
У меня есть установка cyrus-imap-3, которая, кажется, неправильно настроена для удаления устаревших сообщений из почтовых ящиков пользователей. Но я не могу понять, что не так. Если кто-то сможет указать на мою ошибку, я буду признателен.
Записи в cyrus.conf включают:
SERVICES {
# добавляйте или удаляйте службы в зависимости от предпочтений
imap cmd="imapd" listen="imap" prefork=0
imaps cmd="imapd -s" listen="imaps" prefork=0
# для доставки требуется как минимум один LMTP
lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
}
EVENTS {
# это требуется
checkpoint cmd="ctl_cyrusdb -c" period=30
. . .
flushLakDfd cmd="ipurge -X -d 35 -f user/luserl/delivery/forwarding" at=0414
. . .
Но когда я заглядываю в почтовый ящик пользователя, я вижу следующее:
find /var/spool/imap/l/user/luserl/delivery/forwarding -name "*\." -maxdepth 1 -mtime +35 -type f | wc -l
9219
Ответ или решение
Ваша проблема с командой ipurge
в Cyrus IMAP, которая не удаляет устаревшие сообщения, может быть связана с несколькими аспектами конфигурации или работы системы. Давайте рассмотрим возможные причины и решения.
-
Параметры команды
ipurge
: Вы используете следующую команду в секцииEVENTS
вашего файлаcyrus.conf
:flushLakDfd cmd="ipurge -X -d 35 -f user/luserl/delivery/forwarding" at=0414
Убедитесь, что:
- Параметр
-d 35
действительно соответствует вашему ожиданию (это означает, что сообщения старше 35 дней будут удалены). - Флаг
-X
указывает команде игнорировать проверки, которые могут препятствовать удалению. Интересно, чтоipurge
по умолчанию не удаляет сообщения, которые находятся в специальных метках, таких как "папка Удаленные" или "архив". Убедитесь, что сообщения, которые вы хотите удалить, не помечены как "не удалять".
- Параметр
-
Путь к папке: Вы используете путь
user/luserl/delivery/forwarding
. Убедитесь, что этот путь правильный и действительно соответствует хранилищу сообщений. Попробуйте также проверить путь к сообщениям через командуimapd
с помощью проверки в командной строке или другим клиентом IMAP. -
Настройки конфигурации: Убедитесь, что все необходимые службы, такие как
imapd
,lmtpd
и другие, корректно работают. Проверьте журналы (логи) Cyrus для любых ошибок или предупреждений, которые могут указывать на проблемы с выполнением командыipurge
. -
Регулярность выполнения команды: Убедитесь, что команда
flushLakDfd
выполняется по расписанию. Проверьте настройкиEVENTS
и убедитесь, что другие команды успешно выполняются в указанное время. Рассмотрите возможность временного запускаipurge
вручную в терминале для проверки, будет ли команда выполняться без ошибок. -
Проверка прав доступа: Проверьте права доступа к директории и файлам для пользователя, под которым работает Cyrus. Убедитесь, что у него есть достаточные права для выполнения операций удаления.
Если после проверки всех вышеуказанных пунктов проблема все еще сохраняется, рекомендую обратиться к документации по Cyrus IMAP или обратиться за поддержкой на специализированные форумы или mailing-листы, где можно получить дополнительную помощь от сообщества.