У меня есть почтовый сервер (на котором работает Exim как MTA / MDA и Dovecot для доступа IMAP) с примерно 50 пользователями и общим объемом данных около 100 ГБ (включая несколько огромных учетных записей, некоторые уже не функционирующие и т. Д.). Вся почта хранится в Maildirs. У нас внезапно возникла необходимость вытащить все письма, заголовки которых (Кому, От, Копия и т. Д.) Содержат один из нескольких доменов, чтобы удовлетворить запрос наших юристов.
Теперь я могу взломать неэффективное решение (grep -R через почтовый архив для рассматриваемых доменов, легкое вырезание, сортировка и uniq, чтобы получить только отдельные имена файлов, скопировать все эти файлы в новый Maildir и взять его из там, возможно), но это займет чертовски много времени, чтобы работать на доступном оборудовании. Есть ли инструмент, который избавит меня от боли в этом процессе?
Платформа не представляет большой проблемы - рассматриваемый сервер работает под управлением Ubuntu 12.04, но у меня есть достаточно свежий снимок данных, которые я могу смонтировать на машине, на которой работает что-нибудь разумное, и нет требования, чтобы решение было FOSS, хотя ориентировочное программное обеспечение бюджет исчисляется сотнями, а не тысячами фунтов.
Я подозреваю, что есть действительно очевидный ответ на этот вопрос, который Google не показывает мне, вероятно, потому, что у меня неправильные поисковые запросы - у кого-нибудь есть опыт этого?
Спасибо!
grep
действительно инструмент для этой работы:
grep -Rli "^to: .*@yourdomain" /your/maildir/ | sort | uniq -u
Получит отсортированный список уникальных имен файлов.
Причина, по которой вы не получили результатов из каталогов .dotted, заключается в том, что "grep *" расширяется до всех файлов и каталогов, не начинающихся с точки; это не имеет ничего общего с grep. Вместо этого передайте в grep имя верхнего каталога maildir и позвольте ему выполнить поиск файлов: grep -R /your/maildir/
РЕДАКТИРОВАТЬ: не все двоичные файлы grep имеют -P, скомпилированный, но в этом случае он вам не нужен, поэтому я удалил его.