Назад | Перейти на главную страницу

Удалить сообщения из очереди sendmail по теме

Я использую centos, и из-за ошибки скрипта у меня в очереди слишком много писем. Есть ли способ удалить сообщения с определенной строкой темы в очереди почты sendmail.

У меня это сработало только сейчас, во время тестирования (вот почему в код встроена такая странная тема). Он основан на том факте, что два файла, составляющие сообщение в очереди sendmail, имеют одно и то же имя файла, за исключением первого символа.

cd /var/spool/mqueue
for file in `grep "Subject:.*litigate gasworks" *|cut -f 1 -d:|cut -c2-`; do echo *${file} ; done

Когда вы будете довольны списком создаваемых файлов, измените echo к rm. Не забудьте остановить sendmail, прежде чем вы напутаете его очередь; он может стать угрюмым, если под ним изменится очередь.

В sendmail contrib/ в каталоге есть скрипт Perl qtool.pl это позволяет вам безопасно вмешиваться в каталоги спула во время работы sendmail. Вы можете удалять, возвращать, перемещать и фильтровать по возрасту, размеру, отправителю, получателю и теме (среди прочего).

По необъяснимым причинам он не включен в основной пакет sendmail CentOS, хотя вы можете найти его в rpm sendmail-doc (спасибо kubanczyk за это), или вы можете извлечь его из исходного дистрибутива ( ftp://ftp.sendmail.org/pub/sendmail/sendmail-current.tar.gz ). У него минимальные зависимости, все они должны быть частью обычной установки Perl.

Для удаления сообщений используйте -d:

qtool.pl -d -e '($msg{headers}->{Subject} =~ /whatever you need/i)' /var/spool/mqueue

Чтобы переместить их в автономный каталог mqueue (безопаснее):

mkdir /var/spool/mqueue-junk
qtool.pl -e '($msg{headers}->{Subject} =~ /whatever you need/i)' \
    /var/spool/mqueue-junk /var/spool/mqueue

Обратите внимание, это "qtool.pl destination/ source/". Заблокированные файлы (те, которые отмечены знаком" * "рядом с идентификатором очереди в mailq output) не будет перемещен, вам может потребоваться повторить попытку, чтобы поймать их.

У вас есть возможность запустить эту очередь позже с помощью sendmail -qR [...] -O QueueDirectory=/var/spool/mqueue-junk .

(Более старые версии qtool.pl известно, что они не анализируют заголовки правильно, вам нужно опустить первую букву в большинстве заголовков, например $msg{headers}->{ubject} вместо того {Subject} )