Я хочу иметь возможность удалить конкретное сообщение электронной почты из всех почтовых ящиков одного домена, есть ли у Dovecot такие функции ИЛИ есть ли какое-нибудь известное хорошее решение для этого? Это формат Maildir
, а домен представлен как /var/vmail/domain.tld/
.
Проблема
много одноразовых массовых рассылок, часто с многомегабайтные вложения.
Что я пробовал
Я искал команды doveadm Batch, Altmove, Expunge, ни одна из которых, похоже, не выполняет (именно такого типа) работу?
Что я хочу по возможности избегать
Последнее средство: grep
рекурсивно с помощью заголовка Message-ID
или ESMTP id
части одного из нескольких Получено
заголовки.
РЕДАКТИРОВАТЬ: Спасибо за комментарии и ответ до сих пор, читая их, я понимаю, что не смог уловить суть: это не проблема спама - эти массовые электронные письма совершенно законны, но через некоторое время совершенно ненужны, и поскольку они весят несколько МБ, проблема с хранилищем требует быть предотвращенным.
Doveadm может перемещать или удалять почту, предлагая почти все фильтры, необходимые для этой задачи.
Во-первых, попробуйте свои фильтры с помощью команды только для чтения, например fetch
, чтобы не перемещать и не удалять больше почты, чем предполагалось.:
doveadm -u victim@example.org fetch 'hdr.from hdr.subject' FROM spammer.example HEADER message-id 'badid@spammer.example'
Синтаксис поиска описан в man doveadm-search-query
, но точный запрос все еще зависит от вас -что является хорошим выбором для вас?
Обратите внимание, что удаление только по идентификатору-сообщения приводит к неприятным побочным-эффектам в виде потери почты, поскольку спамеры и/или программные ошибки время от времени перерабатывают средства-в-. ]be-уникальные идентификаторы.
При выборе копий или вариантов практически одного и того же письма вы, вероятно, захотите использовать некоторую комбинацию даты, сервера ретрансляции и значения заголовка. Если вас интересует только размер, выбор по возрасту и размеру должен помочь.
Как ограничить вашу команду одним доменом?
Если имена ваших почтовых учетных записей выглядят как joe@example.org
, дайте doveadm подстановочный знак:
doveadm -u *@example.org move spamfolder FROM spammer.example HEADER unique value
Если имена ваших почтовых учетных записей менее предсказуемы, предоставьте фиксированный список:
psql -c 'COPY (SELECT mailname FROM users WHERE..) TO stdout (format csv);' > userlist_example.org
doveadm -F userlist_example.org move spamfolder FROM spammer.example HEADER unique value