On Mon, Nov 21, 2016 at 6:20 PM, Fred Turner <fred at c5consulting.net>
wrote:
> Yeah, I gradually figured out it wouldn't work yesterday when delving
back
> into this and testing. No separate quotas per namespaces until 2.1 or
> something, I think?
>
> So, got any suggestions on getting it to work with v2.x? I found an old
> thread from 2013 by Andreas (I think?) and he didn't seem to quite be
able
> to get it to work. Actually, though, I'd be happy to even be able to
apply
> a quota to the primary Inbox namespace and none to the secondary
"Archive"
> namespace, but my testing on a 10.10 Server wasn't having much success
> either.
>
> Thanks for the responses and input!
> Fred
>
> > On Nov 21, 2016, at 17:53, Timo Sirainen <tss at iki.fi> wrote:
> >
> >> On 20 Sep 2016, at 21.28, Fred Turner <fred at
c5consulting.net> wrote:
> >>
> >> Mac Pro Server 2012
> >> Mac OS X Server 10.6.8
> >> Dovecot 1.1.20apple0.5
> >
> > That's an old one..
> >
> >> quota = maildir:User quota:ns> >>
> >> quota2 = maildir:ns=testArchive/
> >> quota2_rule = *:storage=20G
> >>
> >> The first line is already in the default config, with the
exception of
> the added ?:ns=? at the end. The 2nd line in the examples I saw had a
> middle component w/ the quota name, but when I tried that, like so:
> >>
> >> quota2 = maildir:Archive quota:ns=testArchive/
> >>
> >> my server fails and shows this in the logs:
> >>
> >>> Fatal: IMAP(*): Quota root test backend maildir: Unknown
parameter:
> ns=testArchive/
> >>
> >>
> >> Any idea why it doesn?t like that? Also, do I need to add a
quota_rule
> for the primary quota? It does not have one normally in the Mac OS X Server
> config?
> >
> > You're trying to use Dovecot v2.x configuration in Dovecot v1.x.
Sorry,
> won't work without upgrade.
>
So I've been playing with this and I mostly have things working. It's
2.2.26.0, btw. In all the below, both namespaces are working and I can
copy/move messages back and forth between them.
One thing that I've not figured out yet (though I'm sure I'm just
missing
something scouring the docs):
If I move messages between namespaces, it appears to ignore the quotas I've
set on them. A *copy* will trigger the quota error. But a *move* just
happily piles on to the overquota namespace. Is that normal?
E.g., here's the maildirsize from the 'archive' namespace (with
quotas set
absurdly low for testing) and I just moved some messages into it from INBOX:
20000S,10C
32252 31
2809 1
and it'll just keep tacking on. As you can see it's over on bytes and #
of
messages. But it will successfully block a copy. This behavior of ignoring
the quota for moves goes in both directions, from INBOX to 'archive' and
vice versa.
And note that the values above are what I set, so it *is* seeing the quota
just fine (and like I said, when I copy a message, it gets appropriately
blocked due to quota).
Is this the normal behavior for message moves?
Oh, and it's definitely a move:
A0004 UID MOVE 180 Archive.archive1..
* OK [COPYUID 1268932143 180 53] Moved UIDs...* 69 EXPUNGE..A0004 OK Move
completed (0.042 + 0.000 + 0.041 secs)...
BTW, since I spent a good deal of time before I figured this out, if you're
using SQL prefetch, the syntax for overrding the location in passdb
password_query becomes (with the example ns of 'archive'):
userdb_namespace/archive/location
instead of
namespace/archive/location
I couldn't for the life of me figure out why dovecot was
ignoring 'namespace/archive/location'. Writing this email helped me
figure
it out, as usual :)
====================================
doveconf -n:
# 2.2.26 (54d6540): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 3.14.77 x86_64 Ubuntu 12.04.5 LTS
auth_cache_negative_ttl = 1 mins
auth_cache_size = 10 M
auth_cache_ttl = 10 mins
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
base_dir = /var/run/dovecot/
debug_log_path = /var/log/dovecot/debug.log
default_client_limit = 3005
default_internal_user = doveauth
default_process_limit = 1500
deliver_log_format = M=%m, F=%f, S="%s" B="%p/%w" => %$
disable_plaintext_auth = no
first_valid_uid = 199
imap_capability = +UNSELECT
last_valid_uid = 201
listen = *
log_path = /var/log/dovecot/mail.log
mail_debug = yes
mail_location = maildir:~/Maildir
mail_nfs_storage = yes
mail_privileged_group = mail
mail_uid = 200
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
namespace {
hidden = no
inbox = yes
list = yes
location prefix = INBOX.
separator = .
subscriptions = yes
type = private
}
namespace archive {
inbox = no
list = children
location = maildir:~/Archive
prefix = Archive.
separator = .
subscriptions = yes
type = private
}
passdb {
args = /etc/dovecot/include/sql.conf
driver = sql
}
plugin {
quota = maildir:User quota
quota2 = maildir:User2 quota:ns=Archive.
quota2_rule = *:bytes=20000
quota2_rule2 = *:messages=10
quota_rule = *:bytes=400000
quota_rule2 = INBOX.Trash:bytes=+10%%
quota_rule3 = *:messages=2000
}
protocols = imap sieve
service auth-worker {
unix_listener auth-worker {
mode = 0666
}
user = doveauth
}
service auth {
client_limit = 8000
unix_listener login/auth {
mode = 0666
}
user = doveauth
}
service imap-login {
inet_listener imap {
port = 143
}
process_min_avail = 20
service_count = 1000
vsz_limit = 256 M
}
service imap {
client_limit = 10
idle_kill = 5 mins
process_limit = 2000
process_min_avail = 10
service_count = 1000
vsz_limit = 512 M
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
ssl = no
userdb {
driver = prefetch
}
userdb {
args = /etc/dovecot/include/sql.conf
driver = sql
}
verbose_proctitle = yes
protocol imap {
mail_max_userip_connections = 10000
mail_plugins = zlib quota imap_quota stats imap_stats
}
protocol lda {
debug_log_path = /var/log/dovecot/lda/lda-quotawarning.log
log_path = /var/log/dovecot/lda/lda-quotawarning.log
}