procmail
[Top] [All Lists]

Problem with arguments

1997-04-02 09:10:00
I have problems using the arguments passed to procmail by the caller.

I need to store in a unique mailbox all the mail that arrives for one domain,
and later, filter the mailbox using the destination address.

Using a rewriting rule of the form (sendmail.cf):

R$*<@domain.com.>$*     $:mailbox

is not adequate for my case because lot of mails (for example those that come
from a mailing list) does not contain a "To:" field, so the mailbox cannot be
re-filtered based on the destination address.

Also, I cannot use the sendmail option:

O NoRecipientAction=add-to

because if there are several destination addresses all of them are included,
inhibiting further filtering.

I have decided to use the procmail mailer as defined in the procmail man pages:

        R$*<@domain.com.>$*     $#procmail $@/etc/procmailrcs/domain 
$:$1(_at_)domain(_dot_)com(_dot_)procmail$2
        R$*<@$*.procmail>$*     $1<@$2>$3       Already filtered, map back

with the mailer defined as (without the m Flag, of course):

        Mprocmail,      P=/usr/bin/procmail, F=cDFMShu,  S=11, R=21,
                        A=procmail -m $h $f $u

Then I want to use procmail to add a field, say X-To, including the $u 
parameter,
that is, the real destination address.

But I cannot access the arguments inside the rcfile, so I cannot do it.
Which is the reason I cannot access them?
Is it due to a security problem?

I have found a very ugly solution:

Create myprocmail as a script:

        #!/bin/sh
        formail -I "X-To: $3" | procmail -m $*

and define the procmail mailer as:

        Mprocmail,      P=/usr/bin/myprocmail, F=cDFMShu,  S=11, R=21,
                        A=myprocmail $h $f $u

But I hope that there exists a more elegant solution.
Thanks.