Настоятельно рекомендую все пути к бинарникам прописать абсолютными -- для верности.
Пользователь от которого запускается скрипт должен быть доверенным для Exim'а (в общем случае, просто добавте его в группу mail).
Кроме того, объясню шаманскую строчку.
По непонятным для меня причинам (кто объяснит?!) экзим иногда теряет тела писем после доставки. В следствие чего, в выводе списка писем (exim -bp) объем тела не указан.
exiqgrep такое не понимает и падает с подобной ошибкой:
Line mismatch: 4h 1Kg6sa-0454TM-Tu <sender@domain.com>
Поэтому и была написана "шаманская строчка", которая таких "призраков" изгоняет.
Рекомендую очень хорошо понять, что делает скрипт перед тем как пихать его в крон. Почта удаляется из очереди навсегда.
#!/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
Комментариев нет:
Отправить комментарий