Sieve filter imapflags with "flagvar" not working

Stephan Bosch stephan at rename-it.nl
Mon Mar 5 17:38:52 EET 2018



Op 5-3-2018 om 11:47 schreef Konstantinos Tsakiltzidis:
> tried also with `require "variables"` doesn't seem to work,
>
> the flag is not added at all

What is your full script? Just adding flags to a variable is not going 
to do anything.

Either leave out the variable:

setflag "spam";

In which case it applies implicitly to subsequent fileinto and 
(implicit) keep.

Or use the "${flagvar}" variable in a fileinto or keep command:

fileinto :flags "${flagvar}" "Mailbox";

Or

keep :flags "${flagvar}";

Regards,

Stephan.

>
>
> On 03/03/2018 09:54 AM, Stephan Bosch wrote:
>> Op 3/2/2018 om 6:09 PM schreef Konstantinos Tsakiltzidis:
>>> Following the rfc5232, Sieve Email Filtering: Imap4flags Extension
>>>
>>> the following filter doesn't work when the `"flagvar"` part is added
>>>
>>> require "imap4flags";
>>>
>>> if header :contains "X-Spam" "Yes" {
>>>
>>>    setflag "flagvar" "spam";
>>>
>>> }
>> You should be getting an error logged somewhere. Using a flag variable
>> is not allowed, unless the variables extension is enabled. So, you must
>> add `require "variables";' for this script to make sense at all.
>>
>> Regards,
>>
>> Stephan.
>>
>>
>>
>>
>>> removing the `"flagvar"` part works as expected
>>>
>>>
>>> # 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
>>> # Pigeonhole version 0.4.21 (92477967)
>>> # OS: Linux 4.9.0-6-amd64 x86_64 Debian 9.1 ext4
>>> lda_mailbox_autocreate = yes
>>> lda_mailbox_autosubscribe = yes
>>> mail_debug = yes
>>> mail_location = maildir:/var/vmail/%d/%n
>>> 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
>>> 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 =
>>>    separator = .
>>>    subscriptions = yes
>>>    type = private
>>> }
>>> namespace modulus {
>>>    list = children
>>>    location = maildir:/var/vmail/%d/Public:INDEXPVT=~/public/indexes
>>>    mailbox admin {
>>>      auto = subscribe
>>>    }
>>>    mailbox support {
>>>      auto = subscribe
>>>    }
>>>    mailbox telecoms {
>>>      auto = subscribe
>>>    }
>>>    prefix = Public.
>>>    separator = .
>>>    subscriptions = yes
>>>    type = public
>>> }
>>> passdb {
>>>    driver = pam
>>> }
>>> plugin {
>>>    acl = vfile
>>>    mail_log_events = flag_change
>>>    mail_log_fields = box flags uid
>>>    sieve = ~/dovecot.sieve
>>>    sieve_before = /var/vmail/global.sieve
>>>    sieve_dir = ~/sieve
>>>    sieve_global_dir = /var/vmail/sieve
>>> }
>>> protocols = " imap lmtp sieve lmtp"
>>> service auth {
>>>    unix_listener /var/spool/postfix/private/auth {
>>>      group = mail
>>>      mode = 0666
>>>      user = postfix
>>>    }
>>>    unix_listener auth-userdb {
>>>      group = mail
>>>      mode = 0666
>>>      user = vmail
>>>    }
>>> }
>>> service imap-login {
>>>    inet_listener imap {
>>>      port = 0
>>>    }
>>> }
>>> service lmtp {
>>>    unix_listener /var/spool/postfix/private/dovecot-lmtp {
>>>      group = postfix
>>>      mode = 0600
>>>      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
>>> }
>>> ssl = required
>>> ssl_cert = </etc/ssl/certs/mail.crt
>>> ssl_key =  # hidden, use -P to show it
>>> userdb {
>>>    driver = passwd
>>> }
>>> protocol imap {
>>>    mail_max_userip_connections = 20
>>>    mail_plugins = " mail_log notify acl"
>>>    passdb {
>>>      args = /etc/dovecot/dovecot-ldap-users.conf.ext
>>>      driver = ldap
>>>      name =
>>>    }
>>>    userdb {
>>>      args = uid=vmail gid=mail home=/var/vmail/%d/%n
>>>      driver = static
>>>      name =
>>>    }
>>> }
>>> protocol lda {
>>>    mail_plugins = " sieve acl"
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-users.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
>>>    }
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-groups.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/Public/.%n
>>> mail=maildir:/var/vmail/%d/Public/.%n
>>>    }
>>> }
>>> protocol lmtp {
>>>    mail_plugins = " sieve acl"
>>>    postmaster_address = postmaster at modulus.gr
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-users.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
>>>    }
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-groups.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/Public/.%n
>>> mail=maildir:/var/vmail/%d/Public/.%n
>>>    }
>>> }
>>> protocol doveadm {
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-users.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
>>>    }
>>>    userdb {
>>>      args = /etc/dovecot/dovecot-ldap-groups.conf.ext
>>>      driver = ldap
>>>      name =
>>>      override_fields = uid=vmail gid=mail home=/var/vmail/%d/Public/.%n
>>> mail=maildir:/var/vmail/%d/Public/.%n
>>>    }
>>> }
>>> protocol sieve {
>>>    mail_max_userip_connections = 10
>>>    managesieve_implementation_string = Dovecot Pigeonhole
>>>    managesieve_logout_format = bytes=%i/%o
>>>    managesieve_max_line_length = 65536
>>>    passdb {
>>>      args = /etc/dovecot/dovecot-ldap-users.conf.ext
>>>      driver = ldap
>>>      name =
>>>    }
>>>    userdb {
>>>      args = uid=vmail gid=mail home=/var/vmail/%d/%n
>>>      driver = static
>>>      name =
>>>    }
>>> }
>>>
>



More information about the dovecot mailing list