Как убивать из очереди письма с нужным адресатом и нужным отправителем?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
skeletor
Сообщения: 1224

Как убивать из очереди письма с нужным адресатом и нужным отправителем?

Сообщение skeletor »

Есть письма, которые нужно резать из очереди. Известен адресат и отправитель. Как убивать их из очереди?
ОС: FreeBSD. MTA: postfix.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Как убивать из очереди письма с нужным адресатом и нужным отправителем?

Сообщение KiWi »

If a queue_id of - is specified, the program reads queue IDs from standard input. For example, to delete all mail with exactly one recipient user@example.com:

mailq | tail +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" }
# $7=sender, $8=recipient1, $9=recipient2
{ if ($8 == "user@example.com" && $9 == "")
print $1 }
' | tr -d '*!' | postsuper -d -

Читайте маны.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Как убивать из очереди письма с нужным адресатом и нужным отправителем?

Сообщение skeletor »

Да вот почитал, и понял, что этот скрипт не работает (есть ошибки). И вообще выполняет непонятно что.
Немного подточив скрипт под себя, пока он только находит ID письма с нужным отправителем. Как сделать проверку на получателя - пока не знаю.

Код: Выделить всё

#!/bin/sh

for id in `/usr/local/sbin/postqueue -p | awk ' { if ($7 == "SENDER" ) print $1 }'`
do
echo "$id" >> q.q
done

Дело в том, что в очереди эти письма отображаются в виде 3 строчек : первая содержит поле отправителя, вторая - причины ошибок и третья - только адрес получателя. Все письма в очереди отделяются друг от друга пустой строчкой. И вот как отловить адрес получателя - пока не знаю.
Спасибо сказали: