Il existe des macros dans procmail qui permettent de filtrer les mails.
FROM_DAEMON : mail en provenance des systèmes (comme le compte root, les bounces...), mais aussi des serveurs de listes.
FROM_MAILER : mail en provenance des systèmes (comme le compte root, les bounces...)

Voici les regexp utilisées (disponibles dans le fichier config.h du code source de procmail :
FROM_DAEMON :
(^(Mailing-List:|Precedence:.*(junk|bulk|list)|\
To: Multiple recipients of |\
(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-z0-9])?(\
Post(ma?(st(e?r)?|n)|office)|(send)?Mail(er)?|daemon|m(mdf|ajordomo)|n?uucp|\
LIST(SERV|proc)|NETSERV|o(wner|ps)|r(e(quest|sponse)|oot)|b(ounce|bs\\.smtp)|\
echo|mirror|s(erv(ices?|er)|mtp(error)?|ystem)|\
A(dmin(istrator)?|MMGR|utoanswer)\
)(([^).!:a-z0-9][-_a-z0-9]*)?[%@>        ][^<)]*(\\(.*\\).*)?)?$([^>]|$)))

FROM_MAILER :
(^(((Resent-)?(From|Sender)|X-Envelope-From):|\
>?From )([^>]*[^(.%@a-z0-9])?(\
Post(ma(st(er)?|n)|office)|(send)?Mail(er)?|daemon|mmdf|n?uucp|ops|\
r(esponse|oot)|(bbs\\.)?smtp(error)?|s(erv(ices?|er)|ystem)|A(dmin(istrator)?|\
MMGR)\
)(([^).!:a-z0-9][-_a-z0-9]*)?[%@>        ][^<)]*(\\(.*\\).*)?)?$([^>]|$))