> Interesting, we run a similar setup with spamassassin and uvscan/clam-av
> but currently only append ***SPAM*** to the subject forwarding email to
> a separate dbmail folder if spam would be handy - I'll have a bash at
> getting that working. (Although I've not done much with procmail)

Right think I've got it working, forwarding spam emails in to a separate
mailbox for the user based on spamassassin results (if spam send to junk, if
not send inbox). Had do to a little hacking on main.c (dbmail-smtp) though.
Added another option '-nm' which allows you to specify a mailbox without a
user (reads the to address from the 'deliver-to' and 'to' headers in the
email).

Changes to dbmailsrc/main.c:

Old: 
        printf ("       %s -u [usernames]  for direct delivery to
users\n\n",argv[0]);

New:

      printf ("       %s -u [usernames]  for direct delivery to
users\n",argv[0]);
      printf ("       %s -nm \"mailbox\" for normal delivery to
mailbox\n\n",argv[0]);

Old:

        /* we need to decide what delivery mode we're in */
        if (strcmp ("-d", argv[INDEX_DELIVERY_MODE])==0)

New:

  /* we need to decide what delivery mode we're in */
  if (strcmp("-nm", argv[INDEX_DELIVERY_MODE])==0)
  {

       trace (TRACE_INFO,"main(): using NORMAL_DELIVERY to mailbox");

       /* parse
        * for
        * destination
        * addresses
       * */

        if (mail_adr_list ("deliver-to",&users,&mimelist) != 0)
                if (mail_adr_list ("to",&users,&mimelist) != 0)
                trace(TRACE_STOP,"main(): scanner found no email addresses
(scanned for Deliver-To:) to mailbox");

          deliver_to_mailbox = argv[2];

  }
  else if (strcmp ("-d", argv[INDEX_DELIVERY_MODE])==0)

recompile dbmail.

Within amavisd.conf instead of:

$forward_method = 'pipe:argv=/usr/local/sbin/dbmail-smtp -d ${recipient}';

Use:

$forward_method = 'pipe:argv=/usr/local/bin/procmail -f-';

<procmailrc file (/usr/local/etc/procmailrc or /etc/promailrc)>
# Divert spam
:0:
* ^X-Spam-Status: Yes
|/usr/local/sbin/dbmail-smtp -nm "JUNK"

# Deliver all other mail to inbox
:0:
|/usr/local/sbin/dbmail-smtp -n
</procmailrc file>

Restart amavis and all should work.

Although I'm getting a ' procmail: Couldn't determine implicit lockfile from
"/usr/local/sbin/dbmail-smtp"' error which I'll investigate, but other than
that seems to work fine.

Improvements welcome.

HTH

Simon

Reply via email to