sieve_max_script_size is ignored

Stephan Bosch stephan at rename-it.nl
Wed Aug 19 18:01:53 EEST 2020



Op 19-8-2020 om 13:47 schreef Zdeněk Zámečník:
> I am in troubles with compiling sieve scripts larger than 1MB.
> I see in logs following errors:
> Aug 19 13:10:26 mail dovecot: lmtp(z.z at xxx.xxx)<22117><uNBGHKIIPV9lVgAA5ldI4A>: Error: sieve: autoreply: line 16818: quoted string started at line 3 is too long (longer than 1048576 bytes)
> Aug 19 13:10:26 mail dovecot: lmtp(z.z at xxx.xxx)<22117><uNBGHKIIPV9lVgAA5ldI4A>: Error: sieve: autoreply: parse failed
> Aug 19 13:10:26 mail dovecot: lmtp(z.z at xxx.xxx)<22117><uNBGHKIIPV9lVgAA5ldI4A>: Error: sieve: Failed to compile script `/var/vmail/xxx.xxx/z.z/sieve/autoreply.sieve'
>
> I tried to set sieve_max_script_size = 2M or 0 (unlimited). I also tried to run "sievec -o sieve_max_script_size=2M /var/vmail/xxx.xxx/z.z/sieve/autoreply.sieve" but the result is still same. Below is my config.
> Can you please advice where can be the problem?
>

https://git.dovecot.net/pigeonhole/core/-/blob/master/src/lib-sieve/sieve-limits.h#L18

That error is about the maximum length of a string literal. This is 
currently hard-coded at 1Mb and thus not configurable. What are you 
doing that you need such a big string value?

Regards,

Stephan.

> # 2.3.10.1 (a3d0e1171): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.5.10 (67bf5bd7)
> # OS: Linux 5.4.44-2-pve x86_64 Debian 10.4
> # Hostname: mail.xxx.xxx
> auth_cache_size = 2 M
> auth_cache_ttl = 5 mins
> auth_master_user_separator = *
> auth_mechanisms = plain login
> auth_policy_check_before_auth = no
> auth_policy_hash_nonce = # hidden, use -P to show it
> auth_policy_report_after_auth = no
> auth_policy_server_timeout_msecs = 1500
> auth_policy_server_url =http://127.0.0.1:8090/
> dict {
>    acl = pgsql:/etc/dovecot/dovecot-dict-sql.conf.ext
>    quota = pgsql:/etc/dovecot/dovecot-dict-sql.conf.ext
> }
> disable_plaintext_auth = no
> imap_client_workarounds = delay-newmail
> imap_id_log = *
> imap_id_retain = yes
> login_trusted_networks = 127.0.0.0/8
> mail_gid = 2000
> mail_home = /var/vmail/%d/%n
> mail_location = mdbox:~/mdbox:ALT=/var/vmail-archive/%d/%n/mdbox
> mail_max_userip_connections = 60
> mail_plugins = acl zlib fts quota
> mail_uid = 2000
> 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 vacation-seconds editheader imapsieve vnd.dovecot.imapsieve
> mdbox_rotate_interval = 1 days
> mdbox_rotate_size = 16 M
> namespace {
>    inbox = yes
>    location =
>    mailbox "Deleted Items" {
>      auto = no
>      special_use = \Trash
>    }
>    mailbox "Deleted Messages" {
>      auto = no
>      special_use = \Trash
>    }
>    mailbox Drafts {
>      auto = no
>      special_use = \Drafts
>    }
>    mailbox Junk {
>      auto = subscribe
>      special_use = \Junk
>    }
>    mailbox "Junk E-mail" {
>      auto = no
>      special_use = \Junk
>    }
>    mailbox Sent {
>      auto = subscribe
>      special_use = \Sent
>    }
>    mailbox "Sent Items" {
>      auto = no
>      special_use = \Sent
>    }
>    mailbox "Sent Messages" {
>      auto = no
>      special_use = \Sent
>    }
>    mailbox Spam {
>      auto = no
>      special_use = \Junk
>    }
>    mailbox Trash {
>      special_use = \Trash
>    }
>    mailbox virtual/All {
>      auto = no
>      special_use = \All
>    }
>    prefix =
>    separator = /
>    type = private
> }
> namespace {
>    inbox = no
>    list = children
>    location = mdbox:/var/vmail/%%d/%%n/mdbox:ALT=/var/vmail-archive/%%d/%%n/mdbox
>    prefix = shared/%%u/
>    separator = /
>    subscriptions = no
>    type = shared
> }
> passdb {
>    args = /etc/dovecot/dovecot-ldap.conf
>    driver = ldap
> }
> passdb {
>    args = /etc/dovecot/masters.db
>    driver = passwd-file
>    master = yes
>    pass = yes
> }
> plugin {
>    acl = vfile
>    acl_shared_dict = proxy::acl
>    imapsieve_mailbox1_before =file:/var/vmail/sieve/report-spam.sieve
>    imapsieve_mailbox1_causes = COPY
>    imapsieve_mailbox1_name = Spam
>    imapsieve_mailbox2_before =file:/var/vmail/sieve/report-ham.sieve
>    imapsieve_mailbox2_causes = COPY
>    imapsieve_mailbox2_from = Spam
>    imapsieve_mailbox2_name = *
>    imapsieve_mailbox3_before =file:/var/vmail/sieve/report-spam.sieve
>    imapsieve_mailbox3_causes = COPY
>    imapsieve_mailbox3_name = Junk
>    imapsieve_mailbox4_before =file:/var/vmail/sieve/report-ham.sieve
>    imapsieve_mailbox4_causes = COPY
>    imapsieve_mailbox4_from = Junk
>    imapsieve_mailbox4_name = *
>    mailbox_alias_new = Sent Messages
>    mailbox_alias_new2 = Sent Items
>    mailbox_alias_new3 = Deleted Items
>    mailbox_alias_old = Sent
>    mailbox_alias_old2 = Sent
>    mailbox_alias_old3 = Trash
>    quota = dict:User quota::proxy::quota
>    quota_grace = 10%%
>    quota_rule2 = Trash:ignore
>    quota_rule3 = Junk:ignore
>    quota_warning = storage=80%% quota-warning 90 %u
>    quota_warning2 = storage=85%% quota-warning 95 %u
>    quota_warning3 = storage=95%% quota-warning 105 %u
>    sieve = /var/vmail/%d/%n/sieve/.sieve
>    sieve_after = /var/vmail/%d/%n/sieve/autoreply.sieve
>    sieve_before = /var/vmail/sieve/global.sieve
>    sieve_dir = /var/vmail/%d/%n/sieve
>    sieve_extensions = +editheader +vacation-seconds
>    sieve_global_dir = /var/vmail/sieve/
>    sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
>    sieve_max_redirects = 20
>    sieve_max_script_size = 2M
>    sieve_pipe_bin_dir = /usr/lib/dovecot
>    sieve_plugins = sieve_imapsieve sieve_extprograms
>    sieve_vacation_send_from_recipient = yes
> }
> protocols = imap sieve lmtp pop3
> service auth-worker {
>    unix_listener auth-worker {
>      user = vmail
>    }
>    user = $default_internal_user
> }
> service auth {
>    unix_listener /var/spool/postfix/private/auth {
>      group = postfix
>      mode = 0660
>      user = postfix
>    }
>    unix_listener auth-userdb {
>      mode = 0600
>      user = vmail
>    }
>    user = vmail
> }
> service dict {
>    unix_listener dict {
>      mode = 0600
>      user = vmail
>    }
> }
> service imap-login {
>    process_min_avail = 10
>    service_count = 0
>    vsz_limit = 512 M
> }
> service imap {
>    executable = imap
>    process_limit = 3500
>    unix_listener imap-master {
>      user = $default_internal_user
>    }
>    vsz_limit = 2 G
> }
> 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 = 400
> }
> service pop3-login {
>    process_min_avail = 3
>    service_count = 0
>    vsz_limit = 320 M
> }
> service pop3 {
>    process_limit = 200
>    vsz_limit = 320 M
> }
> service quota-warning {
>    executable = script /etc/dovecot/quota_warning.sh
>    unix_listener quota-warning {
>      mode = 0666
>      user = vmail
>    }
>    user = vmail
> }
> ssl_cert = </etc/ssl/private/multi.z-technics.cz.dovecot.pem
> ssl_dh = # hidden, use -P to show it
> ssl_key = # hidden, use -P to show it
> stats_writer_socket_path =
> userdb {
>    args = /etc/dovecot/dovecot-ldap.conf
>    driver = ldap
> }
> protocol sieve {
>    managesieve_implementation_string = Dovecot Pigeonhole
>    managesieve_max_compile_errors = 5
> }
> protocol imap {
>    mail_plugins = quota imap_quota fts mailbox_alias imap_acl acl imap_zlib imap_sieve
> }
> protocol lda {
>    mail_fsync = optimized
> }
> protocol lmtp {
>    mail_fsync = optimized
>    mail_plugins = quota sieve acl
> }
>
>



More information about the dovecot mailing list