[Dovecot] spamc can't seem to call /usr/lib/dovecot/deliver

Troy Vitullo troy at troyvit.com
Wed Oct 24 19:10:38 EEST 2012


On Tue, 23 Oct 2012 21:32:59 -0400
Bill Shirley <Bill at KnoxvilleChristian.org> wrote:

> On 10/23/2012 9:06 PM, Bill Shirley wrote:
> >
> >
> > What is your mailbox_command in main.cf?  I just use:
> > mailbox_command = /usr/bin/spamc -u "$USER" -e 
> > /usr/lib64/dovecot/deliver -a "$RECIPIENT" -f "$SENDER" -m
> > "$EXTENSION"
> >
> > I don't need anything in master.cf.  But you should be using -u 
> > ${user} for spamc.
> >
> > Bill
> >
> Forgot to ask, are you using Spamassassin's per-user configs?  If
> you're not, that probably is your problem.  It's probably trying to
> update bayes tokens and it doesn't have permission.
> 
> I use per-user configs which are nice.  One man's spam is another
> man's ham.  Plus each user can have his/her own whitelist.
> 
> I use these spamd args: -d -c -m10 --user-config
> You usually can find the args in /etc/sysconfig.
> 
> Bill

Thanks for getting back to me Bill. Actually I'm using per-user prefs and permissions look great all the way down. When I send a test mail with everything turned on the bayes tokens are updated. Things appear to die later in the process.

Regarding the mailbox command I was using:
mailbox_command = /usr/lib/dovecot/deliver -d "$USER" -m "$EXTENSION"

I tried removing the flags from master.cf and changing my command to:
mailbox_command = /usr/bin/spamc -u "$USER" -e /usr/lib/dovecot/deliver -d "$USER" -m "$EXTENSION"

and then:
mailbox_command = /usr/bin/spamc -u ${recipient} -e /usr/lib/dovecot/deliver -d ${recipient} -m "$EXTENSION"

and everything in between.

No mail made it through, so I kept this in master.cf:

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=dovecot:dovecot argv=/usr/lib/dovecot/deliver -d ${recipient}

and of course it over-rode my mailbox_command. Mail came thrrough but it contained no spamassassin header.

I'm starting to thing that spamc doesn't have the permissions to write its headers to the message. How can I test that theory?

spamd runs witht these flags:
/usr/sbin/spamd --create-prefs -x --max-children 3 --username spamd --helper-home-dir /var/lib/spamassassin -s /var/lib/spamassassin/spamd.log --virtual-config-dir=/var/lib/spamassassin/users/%d/%l -d --pidfile=/var/run/spamd.pid

It's pretty much the same as yours, I just use the long versions of the args.

the spamd user exists:
spamd:x:1010:1011::/var/lib/spamassassin:/bin/false

I was missing /etc/dovecot/default.sieve, which had to be a big problem, but I recovered it. Here's are its contents:

require "fileinto";
  if exists "X-Spam-Flag" {
          if header :contains "X-Spam-Flag" "NO" {
          } else {
          discard;
          stop;
          }
  }

Anything else I could be missing? I even insanely running spamd as the root user:

/usr/sbin/spamd --create-prefs -x --max-children 3 --username root --helper-home-dir /var/lib/spamassassin -s /var/lib/spamassassin/spamd.log --virtual-config-dir=/var/lib/spamassassin/users/%d/%l -d --pidfile=/var/run/spamd.pid

Thanks,

Troy



More information about the dovecot mailing list