Hello List,

I've enabled the quota_mail_size parameter to match what I've set in Postfix, but it seems to me that this parameter has no effect.

Currently set to quota_mail_size = 104857600B
(with or without the suffix does not matter in my case as both won't work), but connecting to the LMTP socket does not seem to advertise SIZE:

# socat /run/dovecot/lmtp readline
220 mail-fra01 Hello there
LHLO test
250-mail-fra01
250-8BITMIME
250-CHUNKING
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-SMTPUTF8
250 STARTTLS
quit
221 2.0.0 Bye

Also looking at IMAP logs on clients, APPENDLIMIT also does not seem to get advertised there. Quota itself seems to work fine via userdb, also via the IMAP quota extension as my clients report the usage.

Thanks,

Marcel


doveconf -n:

# 2.4.2 (0962ed2104): /etc/dovecot/dovecot.conf
# Pigeonhole version 2.4.2 (767418c3)
# OS: Linux 6.17.11-hardened1-1-hardened x86_64
# Hostname: mail-fra01
dovecot_config_version = 2.4.2
auth_verbose = yes
dovecot_storage_version = 2.4.2
first_valid_uid = 8
fts_autoindex = yes
hostname = mail-fra01
imap4rev2_enable = yes
last_valid_uid = 8
lmtp_rcpt_check_quota = yes
login_greeting = Hello there
mail_driver = maildir
mail_gid = mail
mail_home = /var/vmail/%{user | domain}/%{user | username}
mail_path = ~/
mail_plugins {
  quota = yes
  quota_clone = yes
  notify = yes
  virtual = yes
  fts = yes
  fts_xapian = yes
}
mail_server_admin = mailto:[email protected]
mail_server_comment = hi
mail_uid = mail
mail_utf8_extensions = yes
mailbox_list_storage_escape_char = \
mailbox_list_utf8 = yes
passdb_default_password_scheme = SHA256-CRYPT
protocols {
  imap = yes
  pop3 = yes
  sieve = yes
  lmtp = yes
}
quota_mail_size = 104857600B
quota_status_nouser = DUNNO
sieve_global_extensions {
  vnd.dovecot.pipe = yes
  vnd.dovecot.environment = yes
}
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
sieve_plugins {
  sieve_imapsieve = yes
  sieve_extprograms = yes
}
sieve_redirect_envelope_from = recipient
sql_driver = pgsql
ssl = required
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
ssl_curve_list = X448:X25519:P-256
ssl_options = no_ticket
submission_host = 127.0.0.1:25
verbose_proctitle = yes
protocol imap {
  imap_hibernate_timeout = 10 secs
  imap_idle_notify_interval = 29 mins
  imap_metadata = yes
  mail_max_userip_connections = 50
  mail_plugins {
    imap_quota = yes
    imap_sieve = yes
    last_login = yes
  }
}
protocol pop3 {
  mail_plugins {
    last_login = yes
  }
}
protocol sieve {
  mail_plugins {
    last_login = yes
  }
}
protocol lmtp {
  mail_plugins {
    sieve = yes
    push_notification = yes
  }
  postmaster_address = postmaster@%{user | domain}
}
service lmtp {
  user = mail
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service auth-worker {
  user = $SET:default_internal_user
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = dovecot
    mode = 0660
    user = mail
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  unix_listener /var/spool/postfix/private/quota-status {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service indexer-worker {
  vsz_limit = 8 G
}
maildir {
  very_dirty_syncs = yes
}
mail_attribute {
  dict file {
    path = %{home}/dovecot-attributes
  }
}
fts xapian {
}
language en {
  default = yes
}
language de {
}
namespace inbox {
  inbox = yes
  separator = /
  mailbox Archive {
    auto = subscribe
    special_use = "\\Archive"
  }
  mailbox Drafts {
    auto = subscribe
    special_use = "\\Drafts"
  }
  mailbox Junk {
    fts_autoindex = no
    auto = subscribe
    autoexpunge = 30 days
    special_use = "\\Junk"
  }
  mailbox Sent {
    special_use = "\\Sent"
  }
  mailbox Trash {
    fts_autoindex = no
    auto = subscribe
    autoexpunge = 120 days
    special_use = "\\Trash"
    quota_storage_extra = 100M
  }
}
pgsql mcl {
  parameters {
    dbname = mail
    host = 10.10.3.2
    password = <redacted>
    port = 6432
    sslmode = disable
    user = mail
  }
}
userdb sql {
  iterate_query = SELECT username AS user FROM mailbox;
query = SELECT CONCAT(quota, 'B') AS quota_storage_size FROM mailbox WHERE username = '%{user | lower}' LIMIT 1;
}
passdb sql {
query = SELECT username AS user, password, allow_nets FROM mailbox WHERE username = '%{user | lower}' AND active = true LIMIT 1;
}
ssl_server {
  cert_file = /etc/ssl/private/dovecot.crt.pem
  key_file = /etc/ssl/private/dovecot.pk.pem
  prefer_ciphers = server
}
ssl_client {
  ca_dir = /etc/ssl/certs
}
sieve_script default {
  name = default
  path = /var/vmail/global.sieve
  type = default
}
sieve_script personal {
active_path = /var/vmail/%{user | domain}/%{user | username}/dovecot.sieve
  path = /var/vmail/%{user | domain}/%{user | username}/sieve
  type = personal
}
mailbox Spam {
  sieve_script spam {
    cause = copy append
    path = /usr/lib/dovecot/sieve-pipe/report-spam.sieve
    type = before
  }
}
imapsieve_from Spam {
  sieve_script ham {
    cause = copy append
    path = /usr/lib/dovecot/sieve-pipe/report-ham.sieve
    type = before
  }
}
quota "User quota" {
}
quota_clone {
  dict proxy {
    name = quota_clone_sql
  }
}
dict_server {
  dict quota_clone_sql {
    driver = sql
    sql_driver = pgsql
    dict_map priv/quota/messages {
      sql_table = quota2
      username_field = username
      dict_map_value_field messages {
      }
    }
    dict_map priv/quota/storage {
      sql_table = quota2
      username_field = username
      dict_map_value_field bytes {
      }
    }
  }
}

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to