Dovecot2 Antispam MAILTRAIN backend with SpamAssassin
Leander Schäfer
info at netocean.de
Tue Jul 15 13:13:12 UTC 2014
I remember, that I also struggled for quite a while until I figured it
out. Here is what I used on my FreeBSD Dovecot installation ...
Remember, that the following code is working on "dovecot --version
1.2.12" ... but it could also be valid for later versions. I simply
havn't checked it out yet.
### Dovecot AntiSpam ###
# mail signature (used with any backend requiring a signature)
#antispam_signature = X-Spam-Status
#antispam_signature_missing = move
antispam_mail_sendmail = /usr/local/etc/dovecot/sa-learn-helper.sh
antispam_mail_sendmail_args = --username=%Lu
antispam_mail_spam = --spam
antispam_mail_notspam = --ham
antispam_mail_tmpdir = /tmp
antispam_spam = Spam
#antispam_unsure = Virus
antispam_trash = Trash
echo '#!/usr/local/bin/bash
#/usr/local/bin/sa-learn ${1} ${2} ${3} ${4} &>
/var/log/DoveDamnAntiSpam.log
/usr/local/bin/sa-learn "${1}" "${2}" "${3}" "${4}"
exit 0
' > /usr/local/etc/dovecot/sa-learn-helper.sh
chmod 0777 /usr/local/etc/dovecot/sa-learn-helper.sh ;
chown root:wheel /usr/local/etc/dovecot/sa-learn-helper.sh ;
Best regards
Leander
Am 15.07.14 15:00, schrieb Mohammad S. Babaei:
>
>
> Hi there,
>
> I've already asked this question on FreeBSD forums without getting any
> response. So, I thought it's a good idea to ask it again here.
>
> I've setup Dovecote2 (2.2.13) + Postfix + SpamAssassin on my FreeBSD 10
> VPS and it works flawlessly. Though, I couldn't setup the Dovecot
> Antispam plugin to train SpamAssassin when I move mails to the Junk
> folder.
>
> I installed the plugin from FreeBSD ports and followed the official
> documentation [1] and the man page [2] without any success.
>
> This is my configuration:
>
> ########
>
> # 2.2.13: /usr/local/etc/dovecot/dovecot.conf
> # OS: FreeBSD 10.0-RELEASE-p6 i386 ufs
> auth_mechanisms = plain login digest-md5
> disable_plaintext_auth = no
> first_valid_gid = 6
> first_valid_uid = 26
> last_valid_gid = 6
> last_valid_uid = 26
> lmtp_save_to_detail_mailbox = yes
> mail_gid = mail
> mail_location = mdbox:/mail/%d/%u
> mail_privileged_group = mail
> mail_uid = mailnull
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope
> encoded-character vacation subaddress comparator-i;ascii-numeric
> relational regex imap4flags copy include variables body enotify
> environment mailbox date ihave
> namespace inbox {
> inbox = yes
> location =
> mailbox Archive {
> auto = no
> special_use = Archive
> }
> mailbox Drafts {
> auto = subscribe
> special_use = Drafts
> }
> mailbox Flagged {
> auto = no
> special_use = Flagged
> }
> mailbox Junk {
> auto = subscribe
> special_use = Junk
> }
> mailbox Sent {
> auto = subscribe
> special_use = Sent
> }
> mailbox Trash {
> auto = subscribe
> special_use = Trash
> }
> mailbox virtual/All {
> auto = no
> special_use = All
> }
> prefix =
> separator = /
> }
> passdb {
> args = /mail/%d/dovecot_passwd
> driver = passwd-file
> }
> plugin {
> antispam_backend = MAILTRAIN
> antispam_mail_notspam = --ham
> antispam_mail_sendmail = /mail/sa-learn-pipe.sh
> antispam_mail_spam = --spam
> antispam_spam = Junk
> antispam_trash = Trash
> quota_rule = *:storage=8GB
> sieve = /mail/%d/%u/dovecot.sieve
> sieve_dir = /mail/%d/%u
> sieve_global_dir = /mail/sieve
> sieve_global_path = /mail/sieve/globalfilter.sieve
> }
> protocols = imap pop3 lmtp sieve
> service auth {
> unix_listener auth-client {
> group = mail
> mode = 0660
> user = postfix
> }
> unix_listener auth-master {
> group = mail
> mode = 0600
> user = mailnull
> }
> user = root
> }
> service imap-login {
> inet_listener imap {
> address = *
> port = 143
> }
> inet_listener imaps {
> address = *
> port = 993
> }
> process_limit = 32
> process_min_avail = 1
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0660
> user = postfix
> }
> }
> service managesieve-login {
> inet_listener sieve {
> port = 4190
> }
> process_min_avail = 0
> service_count = 1
> vsz_limit = 64 M
> }
> service managesieve {
> process_limit = 1024
> }
> service pop3-login {
> inet_listener pop3 {
> address = *
> port = 110
> }
> inet_listener pop3s {
> address = *
> port = 995
> }
> process_limit = 32
> process_min_avail = 1
> }
> ssl_cert = </etc/ssl/dovecot/cert.pem
> ssl_key = </etc/ssl/dovecot/key.pem
> userdb {
> args = /mail/%d/dovecot_passwd
> driver = passwd-file
> }
> verbose_proctitle = yes
> protocol lmtp {
> mail_plugins = " sieve"
> postmaster_address = postmaster at SomeDomain.com
> quota_full_tempfail = yes
> }
> protocol sieve {
> mail_max_userip_connections = 10
> managesieve_implementation_string = Dovecot Pigeonhole
> managesieve_logout_format = bytes=%i/%o
> managesieve_max_line_length = 65536
> }
> protocol imap {
> imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
> mail_plugins = " quota imap_quota antispam"
> }
> protocol pop3 {
> mail_plugins = " quota"
> pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
> }
> protocol lda {
> mail_plugins = " quota sieve"
> postmaster_address = postmaster at SomeDomain.com
> sendmail_path = /usr/local/sbin/sendmail
> }
>
> ########
>
> And, this is the script /mail/sa-learn-pipe.sh:
>
> ########
>
> echo /usr/local/bin/sa-learn $* /tmp/sendmail-msg-$$.txt
> echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log
>
> #echo $* > /tmp/sendmail-parms.txt
> cat<&0 >> /tmp/sendmail-msg-$$.txt
>
> /usr/local/bin/sa-learn $* /tmp/sendmail-msg-$$.txt
>
> rm -f /tmp/sendmail-msg-$$.txt
>
> echo "$$-end" >> /tmp/sa-learn-pipe.log
>
> exit 0
>
> ########
>
> I made it excecutable by all users using chmod a+x
> /mail/sa-learn-pipe.sh
>
> The problem is, there is no log in /var/log/maillog regarding the
> Antispam plugin, and the script won't get called when I move any message
> in/out to/from Junk folder.
>
> I'll appreciate any help.
>
More information about the dovecot
mailing list