Hi,
We get user's quota limit from LDAP. ?It works fine when user has
quota attribute in LDAP (this is when it's different from default
quota). But when user doesn't have quota limit attribute Dovecot
doesn't take default value defined in quota plugin and assign unlimit
quota to user.
Our configuration is similar to the example from wiki (
http://wiki2.dovecot.org/Quota/Configuration ). This is the plugin
configuration
_plugin {_
_? quota = maildir:User quota_
_? quota_rule = *:storage=1G_
_? ?.........._
_}_
And this is the recovered fields in LDAP search:
_user_attrs mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$_
It works if user has mailquotasize in its LDAP entry. But if it hasn't
it Dovecot assign 0 instead of ?*:STORAGE=1G
This is the log when LTMP deliver a mail to a user without
mailquotasize attribute:
_auth: Debug: master in:
USER#0111#011eepp68#011service=lmtp#011lip=172.31.100.120#011lport=24#011rip=172.31.100.119#011rport=41452_
_auth: Debug: userdb-cache(eepp68,172.31.100.119): miss_
_auth: Debug: ldap(eepp68,172.31.100.119): user search: base=o=Junta
de Castilla-La Mancha,c=ES scope=subtree filter=(uid=eepp68)
fields=mailMessageStore,MAILQUOTASIZE_
_auth: Debug: ldap(eepp68,172.31.100.119): result:
mailMessageStore=/buzones1/e/eepp68; MAILQUOTASIZE MISSING_
_auth: Debug: master out:
USER#0111#011eepp68#011home=/buzones1/e/eepp68#011QUOTA_RULE=*:BYTES=_
_lmtp(8235): Debug: auth input: eepp68 home=/buzones1/e/eepp68
quota_rule=*:bytes=_
_lmtp(8235): Debug: Added userdb setting: plugin/quota_rule=*:bytes=_
_lmtp(8235, eepp68): Debug: Effective uid=11184, gid=2110,
home=/buzones1/e/eepp68_
_lmtp(8235, eepp68): Debug: Quota root: name=User quota
backend=maildir args=_
_lmtp(8235, eepp68): Debug: Quota rule: root=User quota mailbox=*
bytes=0 messages=0_
I tried it with defining default_fields in userdb but I get the same
result:
?
?_userdb {_
? ? ? ? driver = ldap
? ? ? ? args = /etc/dovecot/dovecot-ldap-lmtp.conf.ext
? ? ? ? default_fields = quota_rule=*:bytes=1073741824
? ?}
If I don't recover mailquotasize (user_attrs = mailMessageStore=home)
Dovecot assign default quota limit, so it works in this case:
auth: Debug: master in:
USER#0111#011eepp68#011service=lmtp#011lip=172.31.100.120#011lport=24#011rip=172.31.100.119#011rport=41427
auth: Debug: userdb-cache(eepp68,172.31.100.119): miss
auth: Debug: ldap(eepp68,172.31.100.119): user search: base=o=Junta de
Castilla-La Mancha,c=ES scope=subtree filter=(uid=eepp68)
fields=mailMessageStore
auth: Debug: ldap(eepp68,172.31.100.119): result:
mailMessageStore=/buzones1/e/eepp68
auth: Debug: master out:
USER#0111#011eepp68#011home=/buzones1/e/eepp68
lmtp(8198): Debug: auth input: eepp68 home=/buzones1/e/eepp68
lmtp(8198, eepp68): Debug: Effective uid=11184, gid=2110,
home=/buzones1/e/eepp68
lmtp(8198, eepp68): Debug: Quota root: name=User quota backend=maildir
args
lmtp(8198, eepp68): Debug: Quota rule: root=User quota mailbox=*
bytes=1073741824 messages=0
Any idea about where is the problem?
This is my LDAP configuration for LTMP:
hosts = xxx.xxxx.es:389
dn = ........
dnpass = xxxxxxx
ldap_version = 3
base = o=mibase,c=ES
user_attrs = mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$
user_filter = (uid=%u)
And this is my Dovecot configuracion:
# 2.1.1: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-279.1.1.el6.x86_64 x86_64 CentOS release 6.3
(Final)?
auth_cache_size = 20 M
auth_debug = yes
auth_verbose = yes
base_dir = /var/run/dovecot/
default_internal_user = vmail
default_process_limit = 200
disable_plaintext_auth = no
dotlock_use_excl = no
hostname = correo.jccm.es
lda_mailbox_autocreate = yes
login_greeting = Correo jccm.es
mail_debug = yes
mail_fsync = always
mail_gid = 2110
mail_location = maildir:~/Maildir:INDEX=/var/dovecot/index/%n
mail_nfs_storage = yes
mail_plugins = " quota"
mail_uid = 11184
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 ihave vnd.dovecot.pipe vnd.dovecot.execute
mbox_write_locks = fcntl
mmap_disable = yes
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 = INBOX.
? separator = .
? type = private
}
passdb {
? args = /etc/dovecot/dovecot-ldap.conf.ext
? driver = ldap
}
plugin {
? quota = maildir:User quota
? quota_rule = *:storage=1G
? quota_warning = storage=80%% quota-warning 80 %n
? sieve = ~/.dovecot.sieve
? sieve_execute_bin_dir /repositorio/paulo/scripts/sieve/extprograms
? sieve_extensions = +vnd.dovecot.execute +vnd.dovecot.pipe
? sieve_filter_bin_dir = /repositorio/paulo/scripts/sieve/extprograms
? sieve_pipe_bin_dir = /repositorio/paulo/scripts/sieve/extprograms
? sieve_plugins = sieve_extprograms
}
postmaster_address = postmaster at jccm.es
protocols = imap pop3 lmtp sieve
rejection_reason = Tu mensaje enviado a fue automaticamente
rechazado:%n%r
rejection_subject = Rechazado: %s
service imap-login {
? process_min_avail = 10
? service_count = 0
}
service imap-postlogin {
? drop_priv_before_exec = yes
? executable = script-login
/repositorio/paulo/scripts/dovecot/migrar-postlogin.sh
? user = $default_internal_user
}
service lmtp {
? inet_listener lmtp {
? ? port = 24
? }
}
service pop3-login {
? service_count = 0
}
service pop3-postlogin {
? drop_priv_before_exec = yes
? executable = script-login
/repositorio/paulo/scripts/dovecot/migrar-postlogin.sh
? user = $default_internal_user
}
service quota-warning {
? executable = script
/repositorio/paulo/scripts/postfix-quota-warning.sh
? unix_listener quota-warning {
? ? user = vmail
? }
? user = dovecot
}
ssl_cert =
Hi Raul, Raul Jare?o Morago wrote:> We get user's quota limit from LDAP. ?It works fine when user has > quota attribute in LDAP (this is when it's different from default > quota). But when user doesn't have quota limit attribute Dovecot > doesn't take default value defined in quota plugin and assign unlimit > quota to user.> Our configuration is similar to the example from wiki ( > http://wiki2.dovecot.org/Quota/Configuration ). This is the plugin > configuration > > plugin { > ? quota = maildir:User quota > ? quota_rule = *:storage=1G > } > > And this is the recovered fields in LDAP search: > > user_attrs = > mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$ > > It works if user has mailquotasize in its LDAP entry. But if it hasn't > it Dovecot assign 0 instead of ?*:STORAGE=1G > > This is the log when LTMP deliver a mail to a user without > mailquotasize attribute: > > _auth: Debug: ldap(eepp68,172.31.100.119): result: > mailMessageStore=/buzones1/e/eepp68; MAILQUOTASIZE MISSINGLDAP Entry for mailquotasize is missing... so far so good.> auth: Debug: master out: USER#0111#011eepp68#011home=/buzones1/e/eepp68#011QUOTA_RULE=*:BYTES> lmtp(8235): Debug: auth input: eepp68 home=/buzones1/e/eepp68 quota_rule=*:bytes> lmtp(8235): Debug: Added userdb setting: plugin/quota_rule=*:bytesHere comes the interesting part, ldap "userdb" has returned "QUOTA_RULE=*:BYTES=" and this empty value seems to correspond to 0 Bytes as you can read from the resulting Quota rule:> lmtp(8235, eepp68): Debug: Quota rule: root=User quota mailbox=* bytes=0 messages=0The "bytes=..." value should be different from 0. http://wiki2.dovecot.org/Quota/Configuration#LDAP states that user_attrs is used only if you use userdb ldap. Where is the "userdb" ldap in your doveconf -n output and where do you get the user information like quota from?> Any idea about where is the problem?The default is not taken since your LDAP query returns a quota_rule with an empty bytes= value when the mailquotasize entry is missing. Regards Daniel -- https://plus.google.com/103021802792276734820
Hi Daniel,
The "userdb" ldap is in this section:
protocol lmtp {
? mail_plugins = " quota sieve"
? userdb {
? ? args = /etc/dovecot/dovecot-ldap-lmtp.conf.ext
? ? driver = ldap
? }
}
And dovecot-ldap-lmtp.conf.ex contains this:
hosts = xxx.xxx.es:389
dn = uid=xxxxx,o=xxxxxx,c=es
dnpass = xxxxxxxxxxx
ldap_version = 3
base = o=xxxxxxxxxxxx,c=ES
user_attrs = mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$
user_filter = (uid=%u)
A las Viernes, 27-07-2012 en 2:34 Daniel Parthey escribi?:
Hi Raul,
Raul Jare?o Morago wrote:> We get user's quota limit from LDAP. ?It works fine when user has
> quota attribute in LDAP (this is when it's different from default
> quota). But when user doesn't have quota limit attribute Dovecot
> doesn't take default value defined in quota plugin and assign
unlimit> quota to user.
> Our configuration is similar to the example from wiki (
> http://wiki2.dovecot.org/Quota/Configuration ). This is the plugin
> configuration
>
> plugin {
> ? quota = maildir:User quota
> ? quota_rule = *:storage=1G
> }
>
> And this is the recovered fields in LDAP search:
>
> user_attrs = >
mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$>
> It works if user has mailquotasize in its LDAP entry. But if it
hasn't> it Dovecot assign 0 instead of ?*:STORAGE=1G
>
> This is the log when LTMP deliver a mail to a user without
> mailquotasize attribute:
>
> _auth: Debug: ldap(eepp68,172.31.100.119): result:
> mailMessageStore=/buzones1/e/eepp68; MAILQUOTASIZE MISSING
LDAP Entry for mailquotasize is missing... so far so good.
> auth: Debug: master out:
USER#0111#011eepp68#011home=/buzones1/e/eepp68#011QUOTA_RULE=*:BYTES>
lmtp(8235): Debug: auth input: eepp68 home=/buzones1/e/eepp68
quota_rule=*:bytes> lmtp(8235): Debug: Added userdb setting:
plugin/quota_rule=*:bytes
Here comes the interesting part, ldap "userdb" has returned
"QUOTA_RULE=*:BYTES=" and this empty value seems to correspond
to 0 Bytes as you can read from the resulting Quota rule:
> lmtp(8235, eepp68): Debug: Quota rule: root=User quota mailbox=*
bytes=0 messages=0
The "bytes=..." value should be different from 0.
http://wiki2.dovecot.org/Quota/Configuration#LDAP states that
user_attrs is used only if you use userdb ldap.
Where is the "userdb" ldap in your doveconf -n output
and where do you get the user information like quota from?
> Any idea about where is the problem?
The default is not taken since your LDAP query returns a quota_rule
with an empty bytes= value when the mailquotasize entry is missing.
Regards
Daniel
--
https://plus.google.com/103021802792276734820
RAUL JARE?O MORAGO wrote:> And dovecot-ldap-lmtp.conf.ex contains this: > > hosts = xxx.xxx.es:389 > dn = uid=xxxxx,o=xxxxxx,c=es > dnpass = xxxxxxxxxxx > ldap_version = 3 > base = o=xxxxxxxxxxxx,c=ES > user_attrs = mailMessageStore=home,mailquotasize=quota_rule=*:bytes=%$ > user_filter = (uid=%u)It seems that the quota_rule is overridden in any case, even if mailquotasize field is missing. Maybe someone can bring up a fix for this. As a workaround, I recommend you to fill the default mailquotasize value into each LDAP account which has no field "mailquotasize" yet. Regards Daniel -- https://plus.google.com/103021802792276734820
Hello Raul, Raul Jare?o Morago wrote:> We get user's quota limit from LDAP. ?It works fine when user has > quota attribute in LDAP (this is when it's different from default > quota). But when user doesn't have quota limit attribute Dovecot > doesn't take default value defined in quota plugin and assign unlimit > quota to user.Your version 2.1.1 is affected by a bug which has been fixed in newer Dovecot Releases: http://hg.dovecot.org/dovecot-2.1/rev/4bbc12a87a29 Also see http://dovecot.org/doc/NEWS-2.1 v2.1.7 2012-05-29 Timo Sirainen <tss at iki.fi> * LDAP: Compatibility fix for v2.0: ldap: If attributes contain ldapAttr=key=template%$ and ldapAttr doesn't exist, skip the key instead of using "template" value with empty %$ part for the key. Please update to latest stable release 2.1.8 which contains a lot of important fixes. Regards Daniel -- https://plus.google.com/103021802792276734820