Предоставленные тут скрипты были придуманы в условиях ограниченного времени (нужно было быстро очищать забитую очередь). Также я никогда особо не занимался программированием, но даже на мой взгляд они немножко корявы. Выкладываю их сюда только для того, чтобы можно было понять идею. Использование этих скриптов может привести к нежелательным последствиям, будьте осторожны. 1. Удаление писем из очереди по теме сообщения - пример "failure notice" при помощи qmail-remove ------------------------------------- #!/bin/sh #STOP QMAIL /usr/local/psa/rc.d/qmail stop sleep 5; #clean QUEUE /usr/local/sbin/qmail-remove -q /usr/local/psa/qmail/queue -i -p "Subject: failure notice" -n 512 -d sleep 1; #START QMAIL /usr/local/psa/rc.d/qmail start sleep 1; echo 'Deleted from queue' Этот скрипт у меня выполняется каждую ночь по крону, иначе к концу срока хранения писем скапливается слишком много failure notice-ов, а удалять все письма раз в день - значит иногда удалять и нужные письма, которые просто застряли в очереди по тем или иным причинам. 2. Поиск и удаление писем из очереди по содержанию (в примере - viagra). В этом скрипте также создаются файлы-логи. Если это лишнее, можно отработать без записи в файл - через сохранение в переменную. #!/bin/sh n=0 cd /usr/local/psa/qmail messdirs=`echo queue/mess/* | wc -w` while [ $n -lt $messdirs ] do grep "viagra" /usr/local/psa/qmail/queue/mess/$n/* | awk -F: '{print $1}' | awk -F/ '{print $9}' >>/home/spam.log n=`expr $n + 1` done vars=`cat /home/spam.log` /usr/local/psa/rc.d/qmail stop sleep 5; for i in $vars; do find /usr/local/psa/qmail/queue/ -name $i -print | xargs rm; sleep 1; /usr/local/psa/rc.d/qmail start
|
|||