Удалить дубликаты сообщений из Maildir

У меня есть несколько повторяющихся сообщений в Maildir моего IMAP-сервера. Какой лучший способ их удалить?

Некоторые важные моменты:

  • Shared Message-ID обычно является достаточно хорошим определением дубликата. Крошечный скрипт, который удаляет все, кроме одного из повторяющихся сообщений, будет работать.
  • Иногда необходимо найти дубликаты на основе общих тел сообщений. Какое здесь разумное определение? Побитовый эквивалент? Как насчет странных различий в переносе строк, экранировании, кодировании символов?
  • Иногда между "дублирующимися" сообщениями есть существенная разница. Как лучше всего рассмотреть различия в наборах "дублирующих" сообщений? Diffs?

5 ответов

Я внес несколько существенных улучшений в сценарий Кевина, упомянутый выше, и он был достаточно любезен, чтобы принять мои запросы на извлечение. В конце концов мы разделили это на отдельный проект, который вы можете найти здесь:

https://github.com/kdeldycke/maildir-deduplicate

Для универсальных файлов в 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 имеет встроенную функцию удаления дубликатов почты. Как объяснено на этой странице справки, это сводится к:

  1. Выберите подозрительные сообщения (или только все сообщения)
  2. Зайдите в меню " Сообщения", выберите " Удалить дубликаты сообщений".

Вуаля.

PS Evolution может получить доступ к вашим сообщениям локально (MailDir, MH, Mbox) или через IMAP.

Другие вопросы по тегам