First of all, we need a small wrapper script to convert procmail's exit codes to ones understood by Qmail:
#!/bin/sh /var/qmail/bin/preline /usr/bin/procmail && exit 0 # check if procmail returned EX_TEMPFAIL (75) [ $? -eq 75 ] && exit 111 # do we want to discard the message? [ $? -eq 99 ] && exit 99 # otherwise return a permanent error exit 100
I'd recommend to put this wrapper to ~/bin/ and name it, say, procmail-wrapper.sh. Don't forget to make it executable :).
Now, it's time to create your ~/.procmailrc. In the example below procmail will forward any messages arriving on mailing lists from lists.server.tld or on other@role.address to my dedicated e-mail box (my.mailbox@for.urgent.messages) if message contains URGENT in its Subject line or if it was explicitly designated to me. Since the dedicated e-mail box is bound to my mobile I'll get notifications when my attention is urgently needed at some of the mailing lists:
:0 H * ^Subject:.*(URGENT|[Aa][Ss][Aa][Pp]) ! my.mailbox@for.urgent.messages :0 H * ^TO_(@lists\.server\.tld|other@role\.address) * ^TO_galaxy@ ! my.mailbox@for.urgent.messages # deliver the message normally EXITCODE=0 # :0 /dev/null
NOTE: in this configuration procmail does NOT return messages back to Qmail and it should not! If we want to discard a message we need to return EXITCODE=99 to Qmail, and if we want to bounce messages back, then EXITCODE should be 100.
OK, our ~/.procmailrc is ready and we need to insert the procmail-wrapper.sh script into the desirable .qmail-* file:
server!galaxy:~$ cat .qmail-galaxy |./filmail |./bin/procmail-wrapper.sh ./Mailbox server!galaxy:~$
The first line here is just for illustration purposes that we can filter mail with some other scripts before our procmail-wrapper.sh is called. The last line is the default mailbox where Qmail will deliver messages if procmail-wrapper.sh returns 0.