Чистка очереди exim

В очереди, увы, может накапливаться всякая дрянь… Кто-то неправильное мыло в веб-форме указал, где-то спамеры с несуществующего адреса что-то прислали. От этого нужно избавляться, желательно по крону. Нижеприведенный скрипт предназначен для чистки очереди Exim’а на cPanel серверах, но cPanel здесь необязательна.

Настоятельно рекомендую все пути к бинарникам прописать абсолютными — для верности.
Пользователь от которого запускается скрипт должен быть доверенным для Exim’а (в общем случае, просто добавте его в группу mail).

Кроме того, объясню шаманскую строчку.
По непонятным для меня причинам (кто объяснит?!) экзим иногда теряет тела писем после доставки. В следствие чего, в выводе списка писем (exim -bp) объем тела не указан.
exiqgrep такое не понимает и падает с подобной ошибкой:

Line mismatch:  4h       1Kg6sa-0454TM-Tu [email protected]

Поэтому и была написана «шаманская строчка», которая таких «призраков» изгоняет.

Рекомендую очень хорошо понять, что делает скрипт перед тем как пихать его в крон. Почта удаляется из очереди навсегда.

#!/bin/bash
# Определяем qualify_domain -- он нужен для удаления всякой лажи
 domain=`exim -bP | grep -i "^qualify_domain" | sed -e s/.*\=\ //g`
# Это очень шаманская строчка
 exim -bpr | grep '<' | awk '{print $2}' | grep '-' | xargs exim -Mrm 2 < /dev/null
# если скрипту передан параметр c, то включается более агрессивный режим
 if [ "$1" == "c" ]; then
# Удаляем все баунсы старше 10 минут
 exiqgrep -o 600 -if '^<>$' |xargs exim -Mrm
 # Удаляем сообщения с адресами начинающимися с подчерка, минуса или вертикальной черты
 exiqgrep -f '^<\_|^<\-|^<\|' -i | xargs exim -Mrm
 exiqgrep -r '^\_|^\-|^\|' -i | xargs exim -Mrm
 #Удаляем сообщения отправленные скриптами на китайские домены старше 10 минут
 exiqgrep -f "$domain" -r '.cn$' -o 600 -i | xargs exim -Mrm
 # Удаляем любые сообщения отправленные скриптами, если они не доставлись за 12 часов
 exiqgrep -f "$domain" -o 43200 -i | xargs exim -Mrm
 exit
 fi

# В мягком режиме удаляем только frozen баунсы и письма с невозможными адресами в заголовках

 exiqgrep -zif '^<>$' |xargs exim -Mrm
 exiqgrep -f '^<\_|^<\-|^<\|' -i | xargs exim -Mrm
 exiqgrep -r '^\_|^\-|^\|' -i | xargs exim -Mrm

Источник

Запись опубликована в рубрике *Mail, *Unix,*Linux. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91