A grace_quota de Dovecot não está funcionando

1

Meu servidor de e-mail está funcionando:

  • Postfix 3.1
  • Dovecot 2.2.22
  • MySQL 5.7
  • Ubuntu 16.04

Eu configurei a cota de cada usuário para ser lida na tabela de usuários do banco de dados de correio da coluna quota :

dovecot-sql.conf.ext

driver = mysql

connect = host=127.0.0.1  dbname=mail user=admin password=XIOVwxasxvD

default_pass_scheme = SHA512-CRYPT


user_query = SELECT CONCAT('/home/vmail/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1))) AS home, 5000 AS uid, 5000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM users WHERE email='%u'


password_query = SELECT email as user, password, 5000 AS userdb_uid, 5000 AS userdb_gid, concat('*:bytes=', quota) AS userdb_quota_rule FROM users WHERE email='%u';

E fiz a seguinte configuração para ativar avisos de cota em 80% e 95% e ter uma cota de cortesia de 10% e no máximo 50 MB para cada usuário

conf.d/90-quota.conf :

plugin {
  quota_rule = *:bytes=1G
  quota_rule2 = Trash:storage=+100M
  quota_rule3 = Sent:storage=+100M
}

plugin {
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
}

service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = vmail
  unix_listener quota-warning {
    user = vmail
  }
}

plugin {
  quota = maildir:User quota
}
plugin {
  quota_grace = 10%%
  quota_grace = 50M
}
plugin {
  quota_over_flag_value = TRUE



  quota_over_script = quota-warning mismatch %u
}

As mensagens de aviso estão funcionando corretamente, mas quando o usuário alcança o tamanho da cota "101%", ele rejeita qualquer mensagem de erro de novas mensagens com "Cota excedida" para o remetente sem aplicar a configuração de cota gratuita

No log do modo de depuração, recebi:

Jul 12 18:48:57 mail postfix/smtp[23827]: 22A7FE884: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, conn_use=178, delay=17, delays=0.01/16/0.01/1.7, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 490A8D627)
Jul 12 18:48:57 mail postfix/qmgr[25020]: 22A7FE884: removed
Jul 12 18:48:57 mail postfix/pickup[24689]: 5C653E898: uid=5000 from=<[email protected]>
Jul 12 18:48:57 mail postfix/cleanup[25288]: warning: connect to Milter service inet:localhost:9001: Cannot assign requested address
Jul 12 18:48:57 mail postfix/cleanup[25288]: 5C653E898: message-id=<[email protected]>
Jul 12 18:48:57 mail postfix/qmgr[25020]: 5C653E898: from=<[email protected]>, size=418, nrcpt=1 (queue active)
Jul 12 18:48:58 mail postfix/smtpd[25228]: 389E6D627: client=localhost[127.0.0.1]
Jul 12 18:48:58 mail postfix/cleanup[25288]: 389E6D627: message-id=<[email protected]>
Jul 12 18:48:58 mail postfix/qmgr[25020]: 389E6D627: from=<[email protected]>, size=877, nrcpt=1 (queue active)
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota root: name=User quota backend=maildir args=
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota rule: root=User quota mailbox=* bytes=1073741824 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota rule: root=User quota mailbox=Trash bytes=+104857600 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota rule: root=User quota mailbox=Sent bytes=+104857600 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota warning: bytes=1020054732 (95%) messages=0 reverse=no command=quota-warning 95 raw mail user
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota warning: bytes=858993459 (80%) messages=0 reverse=no command=quota-warning 80 raw mail user
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: Quota grace: root=User quota bytes=52428800
Jul 12 18:48:58 mail dovecot: lmtp(24483): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
Jul 12 18:48:58 mail dovecot: lmtp(24483): Connect from local
Jul 12 18:48:58 mail dovecot: auth: Debug: master in: USER#011104#[email protected]#011service=lmtp
Jul 12 18:48:58 mail dovecot: auth-worker(15471): Debug: sql([email protected]): SELECT CONCAT('/home/vmail/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1))) AS home, 5000 AS uid, 5000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM users WHERE email='[email protected]'
Jul 12 18:48:58 mail dovecot: auth: Debug: userdb out: USER#011104#[email protected]#011home=/home/vmail/mydomain.com/user#011uid=5000#011gid=5000#011quota_rule=*:bytes=102400
Jul 12 18:48:58 mail dovecot: lmtp([email protected]): Debug: auth input: [email protected] home=/home/vmail/mydomain.com/user uid=5000 gid=5000 quota_rule=*:bytes=102400
Jul 12 18:48:58 mail dovecot: lmtp([email protected]): Debug: Added userdb setting: plugin/quota_rule=*:bytes=102400
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Effective uid=5000, gid=5000, home=/home/vmail/mydomain.com/user
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota root: name=User quota backend=maildir args=
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota rule: root=User quota mailbox=* bytes=102400 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota rule: root=User quota mailbox=Trash bytes=+104857600 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota rule: root=User quota mailbox=Sent bytes=+104857600 messages=0
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota warning: bytes=97280 (95%) messages=0 reverse=no command=quota-warning 95 [email protected]
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota warning: bytes=81920 (80%) messages=0 reverse=no command=quota-warning 80 [email protected]
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Quota grace: root=User quota bytes=52428800
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/home/vmail/mydomain.com/user
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: maildir++: root=/home/vmail/mydomain.com/user, index=, indexpvt=, control=, inbox=/home/vmail/mydomain.com/user, alt=
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: quota: quota_over_flag check: STORAGE ret=1 value=101 limit=100
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: quota: quota_over_flag check: MESSAGE ret=0 value=99 limit=0
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: quota: quota_over_flag=0((null)) vs currently overquota=1
Jul 12 18:48:58 mail dovecot: lmtp(24483, [email protected]): Debug: quota: Executing warning: quota-warning mismatch [email protected]
Jul 12 18:48:58 mail dovecot: lmtp([email protected]): 4GRuG8FuZlmjXwAAPxyzFw: msgid=<[email protected]>: save failed to INBOX: Quota exceeded (mailbox for user is full)
    
por MohammedSimba 12.07.2017 / 20:55

1 resposta

3

O grace_quota do Dovecot não funciona como você espera. Do Manual do Dovecot sobre cotas :

With v2.2+ by default the last mail can bring user over quota. This is useful to allow user to actually unambiguously become over quota instead of fail some of the last larger mails and pass through some smaller mails. Of course the last mail shouldn't be allowed to bring the user hugely over quota, so by default in v2.2+ this limit is 10% of the user's quota limit. (In v2.1 this is disabled by default.)

Com outras palavras, quota_grace impede uma situação confusa em que um e-mail (grande) é rejeitado porque o e-mail excede a cota do usuário, mas e-mails mais novos (e menores) são entregues com sucesso (pois ainda se encaixam na cota do usuário ). Com quota_grace , a Dovecot permite que este último e grande e-mail seja entregue, mas bloqueia outros e-mails, pois o usuário está além do uso de 100% da cota.

A Dovecot não conhece um recurso como você está procurando - enquanto você pode simplesmente enviar e-mails com valores de uso de cota alterados (por exemplo, enviar "você usou 100% de sua cota" embora o usuário ainda esteja em 90% e ajustar o limite real de acordo), a cota real ainda é transmitida através do IMAP para clientes de e-mail que exibem o uso da cota.

    
por 14.07.2017 / 22:32