So after being totally dumbfounded by what the hell could possibly be happening in the CRM114 backend that would just produce silent failure, I decided to go for a wrapper script using the mailtrain backend. Here's what I drummed up
plugin { antispam_trash_pattern_ignorecase = Trash antispam_spam_pattern_ignorecase = Spam antispam_unsure_pattern_ignorecase = Suspect antispam_backend = mailtrain antispam_mail_sendmail = /usr/local/etc/dovecot/filter/mailreaver.sh antispam_mail_sendmail_args = %h antispam_mail_spam = --spam antispam_mail_notspam = --good }
Where mailreaver.sh is:
#!/bin/sh #DEBUG=1 TARGET='mailreaver.crm' USRHOME=$1 ACTION=$2 SPAMDB="$USRHOME/spamdb" LOGFILE="$USRHOME/logs/antispam" DEBUGLOG='/dev/null' test $DEBUG && DEBUGLOG="$LOGFILE" STAMP=$(date +'[%Y %b %d %H:%M:%S]') exec 1>>$DEBUGLOG exec 2>>$LOGFILE cd $SPAMDB printf '%s In %s: Executing: %s\n' "$STAMP" "$PWD" "./$TARGET $ACTION"
$LOGFILE exec ./$TARGET $ACTION
Using this method I figured out that the problem was I had neglected to set mailtrainer.crm as executable. A very simple oversight, but one that was insanely frustrating to figure out since it wasn't producing any log messages. I think I'll continue to use this backend so that I can log each action, and would personally recommend that anyone using CRM do something similar rather than using the builtin CRM backend. Hopefully this is helpful to someone, someday :)
On 2015-07-20 05:59, James Lott wrote:
So I modified my configuration a couple times just to try and get any results from the plugin. I commented out my backend configuration, and finally got the plugin to log something.
root@zerolag:/usr/local/etc/dovecot # grep antispam /var/log/maillog Jul 20 05:27:50 zerolag dovecot: imap(james.lott): Error: antispam plugin backend is not selected for this user
At this point, I'll take it.
After that I modified my antispam configuration and changed up my directory hierarchy a bit
root@zerolag:/home/james.lott/mail # ls -1 .Archive .Drafts .Notes .Sent .Spam .Suspect .Trash cur dovecot-uidlist dovecot-uidvalidity dovecot-uidvalidity.55a4236f dovecot.index dovecot.index.cache dovecot.index.log dovecot.index.log.2 dovecot.index.thread dovecot.mailbox.log new subscriptions tmp
plugin { antispam_debug_target = syslog antispam_verbose_debug = 1 antispam_trash_pattern_ignorecase = Trash antispam_spam_pattern_ignorecase = Spam antispam_unsure_pattern_ignorecase = Suspect antispam_backend = spool2dir antispam_spool2dir_spam = /home/%u/unprocessed/spam-%%lu-%%lu antispam_spool2dir_notspam = /home/%u/unprocessed/ham-%%lu-%%lu }
After reloading with this configuration and moving a piece of spam into the spam folder...
root@zerolag:/home/james.lott/mail # ls -lah ../unprocessed/ total 12 drwxr-xr-x 2 james.lott mail 512B Jul 20 05:50 . drwxr-xr-x 9 james.lott mail 1.0K Jul 20 05:44 .. -rw------- 1 james.lott mail 2.1K Jul 20 05:50 spam-1437396653-1
Success! Unfortunately, though, I also noticed that action was not logged. So it seems that logging in this plugin is just completely bunk.
Still no dice after switching to the crm backend though, so something about the way I've set that up must not be working. This is mega progress though. Thanks for the tips everyone!
On Monday, July 20, 2015 08:39:54 Christian Kivalo wrote:
On 2015-07-20 08:20, Christian Kivalo wrote:
That seems to be about all I get though. Still nothing to indicate errors, and nothing to indicate that anything is being done when I move messages into spam. I suppose that probably means I've configured the folder paths incorrectly. I'll have to keep beating my head against it and see where it takes me.
it would help to see your dovecot -n output here.
Ok, found it in the first mail...
Do these folders exist in the filesystem? The case matches? I use antispam_{spam,trash}_pattern_ignorecase and don't care about the case of the folders...
plugin { antispam_backend = crm114 antispam_crm_args = --fileprefix=/home/%u/spamdb/ antispam_crm_binary = /usr/local/etc/dovecot/filter/mailreaver.crm antispam_debug_target = syslog antispam_signature = X-CRM114-CacheID antispam_spam = Spam antispam_trash = Trash antispam_unsure = INBOX/Suspect
i don't know crm114 but this looks ok to me.
you could try
antispam_verbose_debug = 1
to get more verbose logging from the antispam plugin
regards
- christian