Я использую 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}
)