>>>Возможно ли удалить одной командой на mail-server'е
>>>инфецированное письмо, лежащее в ~1000 mailbox'ах?
>>>Умеет ли такое formail?
>>>thanx in advance!
>>Всем спасибо за активное участие в обсуждении проблемы! ;-)
>>The problem is solved...
>>Кому интересно, могу запостить скрипт, который решает эту задачу
>
>
>Выкладывай
#!/bin/sh
# stop mail daemon (sendmail, postfix, etc.)
kill -KILL $(head -n1 /var/run/senmail.pid) && rm -f /var/run/sendmail.pid
/usr/local/etc/rc.d/postfix.sh stop
sed -i.bak -e 's/^pop3/#pop3/' /etc/inetd.conf && kill -HUP $(cat /var/run/inetd.pid)
cd /var/mail
for mbx in *; do
echo ">" $mbx
awk '
/^From (mailuser1|mailuser2)@some.domain.org/, /^----ABCDEF--$/ {
if ($0 == "----ABCDEF--") mail_mesg_eof = 2; next }
{ if (mail_mesg_eof > 0) mail_mesg_eof--
else print }
' $mbx > $mbx.clear
mv -f $mbx $mbx.orig
mv -f $mbx.clear $mbx
chown $mbx $mbx
done
# start mail daemon
/usr/sbin/sendmail -bd -q30m
/usr/local/etc/rc.d/postfix.sh start
sed -i.bak -e 's/^#pop3/pop3/' /etc/inetd.conf && kill -HUP $(cat /var/run/inetd.pid)
Естественно нужно будет подправить regexp'ы под себя
Может быть смотрится не эстетично, но зато работает быстро и надежно
Этот скрипт обработал 3Gb почты за 25 минут на Digital Server 3000
|