Есть письма, которые нужно резать из очереди. Известен адресат и отправитель. Как убивать их из очереди?
ОС: FreeBSD. MTA: postfix.
Как убивать из очереди письма с нужным адресатом и нужным отправителем?
Модераторы: SLEDopit, Модераторы разделов
-
skeletor
- Сообщения: 1224
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: Как убивать из очереди письма с нужным адресатом и нужным отправителем?
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: Как убивать из очереди письма с нужным адресатом и нужным отправителем?
Да вот почитал, и понял, что этот скрипт не работает (есть ошибки). И вообще выполняет непонятно что.
Немного подточив скрипт под себя, пока он только находит ID письма с нужным отправителем. Как сделать проверку на получателя - пока не знаю.
Дело в том, что в очереди эти письма отображаются в виде 3 строчек : первая содержит поле отправителя, вторая - причины ошибок и третья - только адрес получателя. Все письма в очереди отделяются друг от друга пустой строчкой. И вот как отловить адрес получателя - пока не знаю.
Немного подточив скрипт под себя, пока он только находит ID письма с нужным отправителем. Как сделать проверку на получателя - пока не знаю.
Код: Выделить всё
#!/bin/sh
for id in `/usr/local/sbin/postqueue -p | awk ' { if ($7 == "SENDER" ) print $1 }'`
do
echo "$id" >> q.q
doneДело в том, что в очереди эти письма отображаются в виде 3 строчек : первая содержит поле отправителя, вторая - причины ошибок и третья - только адрес получателя. Все письма в очереди отделяются друг от друга пустой строчкой. И вот как отловить адрес получателя - пока не знаю.