Удалить дубликаты сообщений из Maildir
У меня есть несколько повторяющихся сообщений в Maildir моего IMAP-сервера. Какой лучший способ их удалить?
Некоторые важные моменты:
- Shared Message-ID обычно является достаточно хорошим определением дубликата. Крошечный скрипт, который удаляет все, кроме одного из повторяющихся сообщений, будет работать.
- Иногда необходимо найти дубликаты на основе общих тел сообщений. Какое здесь разумное определение? Побитовый эквивалент? Как насчет странных различий в переносе строк, экранировании, кодировании символов?
- Иногда между "дублирующимися" сообщениями есть существенная разница. Как лучше всего рассмотреть различия в наборах "дублирующих" сообщений? Diffs?
5 ответов
Я внес несколько существенных улучшений в сценарий Кевина, упомянутый выше, и он был достаточно любезен, чтобы принять мои запросы на извлечение. В конце концов мы разделили это на отдельный проект, который вы можете найти здесь:
Для универсальных файлов в linux я использую утилиты fdupes для удаления дубликатов файлов. Я обнаружил, что это также работает для сообщений Maildir.
Лучшее, что я нашел сегодня, это недооценка Кевина Делдике.
- Игнорирует
X-MIMETrack
заголовок по умолчанию и сравнивает заголовки, используяSHA224
дайджест. - Он не учитывает тело сообщения вообще.
- Он автоматически удаляет дубликаты без запроса подтверждения.
- Предполагается, что ваш почтовый ящик находится в
/Users/kevin/Maildir
,:)
Могу поспорить, что кто-то может сделать что-то необычное из delIMAPdups.pl Рика Сандерса, часть его инструментов IMAP.
Если вы используете Dovecot для доступа по IMAP, вы можете использовать следующую команду:
doveadm deduplicate -u user@yourdomain.com mailbox INBOX
чтобы удалить дубликаты из папки «Входящие».
Как прокомментировал Dustwolf, если вы хотите сопоставить электронные письма во всех папках, вместо этого введите следующее:
doveadm deduplicate -u user@yourdomain.com ALL
Он должен обо всём позаботиться, все повторяющиеся электронные письма должны быть немедленно удалены.
Если у вас есть очень специфические потребности, такие как фильтрация по размеру или только для новых сообщений, я предлагаю вам изучить документацию по поисковым запросам Dovecot, а также документацию по дедупликации doveadm и адаптировать команду к вашим потребностям.
Evolution [графический агент пользователя почты] Gnome имеет встроенную функцию удаления дубликатов почты. Как объяснено на этой странице справки, это сводится к:
- Выберите подозрительные сообщения (или только все сообщения)
- Зайдите в меню " Сообщения", выберите " Удалить дубликаты сообщений".
Вуаля.
PS Evolution может получить доступ к вашим сообщениям локально (MailDir, MH, Mbox) или через IMAP.