[Dovecot] Calling dovecot-lda from within Antispam pipe script (bash) seems to have no effect

Ben Johnson ben at indietorrent.org
Wed Jun 19 21:52:46 EEST 2013


Hello,

I'm attempting to configure the Dovecot Antispam plug-in on Ubuntu 12.04
LTS with Dovecot 2.0.19.

Everything seems to be in order with one considerable exception: when my
pipe script (a simple Bash shell script) calls the dovecot-lda
executable, absolutely nothing seems to result.

If I copy/paste the exact same command into the terminal, the mail is
delivered to the target mailbox, as expected.

Here's my pipe script: http://pastebin.com/DBXAZqsN

When I move a message from INBOX -> Junk, or from Junk -> INBOX, the
pipe script is called, and here's the output:

---------------------------------------------------------------
31465-start (--debug --username=amavis --ham)
Checking if the command-line input argument string (--debug
--username=amavis --ham) contains the string "ham" or "spam"
Mode is "HAM"
Calling (as user vmail) '/usr/lib/dovecot/deliver -d
"sa-training at example.com" -m "Training.HAM" -p
"/tmp/sendmail-msg-31465.txt"'
31465-end
---------------------------------------------------------------

But, for some reason, the call to "/usr/lib/dovecot/deliver" doesn't
seem to do anything.

If I copy the above output and paste it into the terminal:

/usr/lib/dovecot/deliver -d "sa-training at example.com" -m "Training.HAM"
-p "/tmp/sendmail-msg-31465.txt"

Dovecot does indeed deliver the message. This works whether I execute
the above command as "root" or "vmail".

Why does this command have no effect when called from within the pipe
script?

Here is my "doveconf -n" output:

# 2.0.19: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-042stab076.8 x86_64 Ubuntu 12.04.2 LTS
auth_mechanisms = plain login
disable_plaintext_auth = no
listen = *,[::]
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_privileged_group = vmail
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
plugin {
  antispam_backend = pipe
  antispam_debug_target = syslog
  antispam_pipe_program = /usr/bin/sa-learn-pipe.sh
  antispam_pipe_program_args = --debug;--username=amavis
  antispam_pipe_program_notspam_arg = --ham
  antispam_pipe_program_spam_arg = --spam
  antispam_pipe_tmpdir = /tmp
  antispam_spam_pattern_ignorecase = SPAM;JUNK
  antispam_trash_pattern_ignorecase = trash;Deleted *
  antispam_verbose_debug = 1
  quota = dict:user::file:/var/vmail/%d/%n/.quotausage
  quota_rule2 = Trash:storage=+100M
  quota_rule3 = Junk:ignore
  quota_warning = storage=95%% quota-warning 95 %u %d
  quota_warning2 = storage=80%% quota-warning 80 %u %d
  quota_warning3 = -storage=100%% quota-below below %u %d
  sieve = /var/vmail/%d/%n/.sieve
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0600
    user = vmail
  }
  user = root
}
service quota-below {
  executable = script /usr/local/bin/quota-below.sh
  user = vmail
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = vmail
}
ssl_cert = </etc/postfix/smtpd.cert
ssl_key = </etc/postfix/smtpd.key
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocol imap {
  mail_plugins = quota imap_quota antispam
}
protocol pop3 {
  mail_plugins = quota
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  info_log_path = /var/log/dovecot-lda.log
  log_path = /var/log/dovecot-lda-errors.log
  mail_plugins = sieve quota
}


Thank you,

-Ben


More information about the dovecot mailing list