[Dovecot] Problem overriding default quota limit
RAUL JAREÑO MORAGO
rjareno at jccm.es
Fri Jul 27 01:37:06 EEST 2012
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 =
More information about the dovecot
mailing list