Вход:  Пароль:  
FreeSource: OnyX/Postfix?/none2 ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия OnyX/Postfix/none2 за 2007-11-16 14:52:35..
Зачем: Часто в процессе настройки антиспама нужно продолжительное время контролировать его работу, что бы своевременно влиять на его поведение. Бываю очень вредные юзеры, которых лучше всего сразу добавить в список лиц, не подверженных никаким проверкам, но восновномлюди вменяемы и сочтут такую примочку полезной: можно рассылать пользователю уведомление о том что он не получил некоторые письма за последнее время (сутки,неделя).
Принцип работы: скрипт читает список пользователей почтового сервера и затем проверяет логи почтового сервера на предмет сток, содержащих NOQUEUE и имя пользователя. Такие строки отражают факт того, что приходящее письмо было не принято. О чём скрипт и уведомляет пользователя письмом к нему.
Результат: как правило пользователь доволен отчётами. Многие даже локально создают фильтры (в программах-клиентах) что бы получать такие уведомления в отдельные папки. Но встречаются и ворчливые пользователи которые будут жаловаться по поводу того что вы незаконно контролируете их ящик (было и такое:), читаете их почту,нарушаете конфиденциальность переписки. Таких лучше исключать из всяких проверок и уведомлений (лучше вообще с ними дела не иметь:).
Приступим:
Скопируем этот скрипт в како нибудь файл
#/bin/csh
#
#noqueue reminder by ONYX
set clients=/etc/postfix/vusers
set log=/var/log/maillog
set text="Письма, отправители которых перечислены ниже, не были доставлены вам за последние сутки, или были доставлены с опозданием.\
Если вы считаете, что какие-то из этих писем вам нужны-позвоните 55555, Иванов И.И.\
или напишите письмо по адресу a@b.c. Если вы не хотите получать такие отчёты в дальнейшем-\
обратитесь по тем же координатам.\
Формат отчёта: from=<отправитель>\
"

foreach client (`cat $clients|awk '{print $1}'`)
        cp $log /tmp/maillog.temp
        if ({(grep -q "NOQUEUE.\+$client" /tmp/maillog.temp)}) then
                echo $text > /tmp/$client.log
                echo "Дата генерации отчёта: `date`" >> /tmp/$client.log
                grep "NOQUEUE.\+$client" /tmp/maillog.temp |grep -v Temporary_not_available | cut -f2 -d';' | awk '{print $1}' >> /tmp/$client.log
                mail -s "Отчёт почтового сервера о недоставленной корреспонденции для $client" $client < /tmp/$client.log
                rm /tmp/$client.log
        endif
        rm /tmp/maillog.temp
end

(страничка дописывается)


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]