imapsieve: failed to read mailbox attribute
Stephan Bosch
stephan at rename-it.nl
Wed Aug 23 15:03:06 EEST 2017
Op 22-8-2017 om 13:03 schreef Darac Marjal:
> 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?
Looks like you didn't configure Dovecot for use of the IMAP METADATA
extension. That is a prerequisite for providing IMAPSIEVE support to
your users.
https://wiki.dovecot.org/ImapMetadata
The main missing configuration is the mail_attribute_dict setting.
The error message you got was very unhelpful. That is fixed now:
https://github.com/dovecot/pigeonhole/commit/dc20a45fae8c5e402d1493847c38d72c9670c64e
Regards,
Stephan.
>
> 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}
>
>
More information about the dovecot
mailing list