On Tue, Aug 22, 2017 at 01:55:45PM +0300, Aki Tuomi
wrote:>
>
>On 22.08.2017 13:37, Darac Marjal wrote:
>> Hello all,
>>
>> Hopefully this is something fairly simple.
>>
>> I've been trying to set up the Sieve Antispam system as detailed at
>> https://wiki2.dovecot.org/HowTo/AntispamWithSieve, but at the moment,
>> whenever I change mailboxes I get the following message logged:
>>
>> Aug 22 09:30:45 remy dovecot: imap(darac at darac.org.uk): Error:
>> imapsieve: mailbox INBOX: Failed to read /shared/imapsieve/script
>> mailbox attribute
>>
>> and my script does not run when I move files between folders.
>>
>> My sieve files are chmod'ed 0644 and the shell script used to pipe
>> into spamassassin is 0755, so it *should* work, shouldn't it? Is
there
>> something I've missed?
>>
>
>Can you show doveconf -n and your sieve scripts?
>
>Aki
Certainly:
---8<--- doveconf -n ---8<---
# 2.2.31 (65cde28): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.19 (e5c7051)
# OS: Linux 4.9.0-1-686-pae i686 Debian buster/sid xfs
auth_mechanisms = digest-md5 cram-md5 plain
auth_verbose = yes
imap_id_log = *
info_log_path = /var/log/dovecot.info
lda_mailbox_autosubscribe = yes
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_log_format_elements = service=%s user=<%u> session=%{session}
method=%m rip=%r lip=%l mpid=%e %c %k
mail_access_groups = mail users
mail_gid = vmail
mail_home = /var/mail/%u
mail_location = mdbox:/var/mail/%u/Mail
mail_max_userip_connections = 50
mail_plugins = " zlib fts fts_lucene stats fts fts_lucene stats"
mail_privileged_group = mail
mail_uid = vmail
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 index ihave duplicate
mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve vnd.dovecot.pipe
vnd.dovecot.execute
namespace {
hidden = no
ignore_on_failure = yes
inbox = no
list = children
location = mbox:~/archive:INDEX=~/archive-indexes
prefix = _ARCHIVE/
subscriptions = no
}
namespace {
hidden = no
inbox = no
list = yes
location = mdbox:/var/mail/%u/Mail:MAILBOXDIR=expunged
prefix = .EXPUNGED/
subscriptions = no
}
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = /etc/dovecot/passwd
driver = passwd-file
}
plugin {
antispam_backend = pipe
antispam_crm_binary = /bin/false
antispam_debug_target = syslog
antispam_pipe_program = /usr/bin/sa-learn-pipe.sh
antispam_pipe_program_notspam_arg = --ham
antispam_pipe_program_spam_arg = --spam
antispam_pipe_tmpdir = /tmp
antispam_spam_pattern_ignorecase = SPAM
antispam_trash_pattern_ignorecase = trash;Deleted *
fts = lucene
fts_lucene = whitespace_chars=@.
imapsieve_mailbox1_before = file:/usr/lib/dovecot/sieve/learn-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Spam
imapsieve_mailbox2_before = file:/usr/lib/dovecot/sieve/learn-spam.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_name = spam
imapsieve_mailbox3_before = file:/usr/lib/dovecot/sieve/learn-ham.sieve
imapsieve_mailbox3_causes = COPY
imapsieve_mailbox3_from = Spam
imapsieve_mailbox3_name = *
imapsieve_mailbox4_before = file:/usr/lib/dovecot/sieve/learn-ham.sieve
imapsieve_mailbox4_causes = COPY
imapsieve_mailbox4_from = spam
imapsieve_mailbox4_name = *
imapsieve_url = sieve://mail.darac.org.uk
lazy_expunge = .EXPUNGED/
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_execute_bin_dir = /usr/lib/dovecot/sieve
sieve_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_spamtest_max_header = X-Spam-Score:
score=-?[[:digit:]]+\.[[:digit:]].*required=([[:digit:]]+\.[[:digit:]])
sieve_spamtest_status_header = X-Spam-Score:
score=(-?[[:digit:]]+\.[[:digit:]]).*
sieve_spamtest_status_type = score
stats_refresh = 30 secs
stats_track_cmds = yes
zlib_save = lz4
zlib_save_level = 2
}
postmaster_address = postmaster at darac.org.uk
protocols = " imap lmtp sieve"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0777
user = vmail
}
}
service lmtp {
inet_listener lmtp {
address = 192.168.101.8
port = 20024
}
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0666
user = postfix
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
}
service stats {
fifo_listener stats-mail {
mode = 0600
user = vmail
}
}
ssl_cert = </var/lib/dehydrated/certs/mail.darac.org.uk/fullchain.pem
ssl_cipher_list = AES128+EECDH:AES128+EDH
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh_parameters_length = 2048
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
args = /etc/dovecot/passwd
default_fields = uid=vmail gid=vmail home=/var/mail/%u
driver = passwd-file
}
protocol lmtp {
mail_fsync = optimized
mail_plugins = " zlib fts fts_lucene stats sieve"
}
protocol lda {
mail_fsync = optimized
mail_plugins = " zlib fts fts_lucene stats sieve"
}
protocol imap {
mail_plugins = " zlib fts fts_lucene stats zlib imap_zlib imap_stats
imap_sieve stats imap_stats"
}
---8<--- learn-spam.sieve ---8<---
require ["vnd.dovecot.pipe", "copy", "imapsieve",
"environment", "variables"];
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "SA-Learn-Pipe" ["--spam",
"${username}"];
---8<--- learn-ham.sieve ---8<---
re ["vnd.dovecot.pipe", "copy", "imapsieve",
"environment", "variables"];
if environment :matches "imap.mailbox" "*" {
set "mailbox" "${1}";
}
if string "${mailbox}" "Trash" {
stop;
}
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "SA-Learn-Pipe" ["--ham",
"${username}"];
---8<--- SA-Learn-Pipe ---8<---
#!/bin/bash
[ -x /usr/bin/sa-learn ] || exit 0
logger "Learning from message"
logger $(id)
logger "IMAP User = ${2}"
# sa-learn does now accept messages on stdin
# However, we still need this script to avoid putting sa-learn in the sieve-exec
folder
exec /usr/bin/sa-learn -u ${2} ${1}
--
For more information, please reread.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 906 bytes
Desc: not available
URL:
<http://dovecot.org/pipermail/dovecot/attachments/20170822/296fc9c2/attachment.sig>