[Dovecot] Override Quota with post-login scripting problem
Hi everyone,
I do have the following dovecot-setup: Passdb: PAM (Winbind-auth and pam_mkhomedir-session) Userdb: passwd (NSS-winbind)
This validates/creates my users with aid of my running ActiveDirectory.
Now the problem: My global quota policy works fine, but I need to override them for some users. I was sucessful within IMAP itself. I use post-login scripting for that. The mail-clients displays the user-quota correctly.
But delivery is still a problem, because I'm unable to override the settings there with post-login scripting.
Everytime I send messages to such a user, dovecot sends it back with "Quota exceeded (mailbox for user is full)"...
My Question: Is it possible to override the lda quota like I can do it within imap ?
(I dont want to change my setup to MYSQL DB only for per-user Quota, if its possible to use a simple file with names and quota)
This is the post-login script: #quotaperuser.sh #!/bin/sh case "$USER" in "ZAGH-V+username") QUOTA_RULE='*:storage=500M';; "ZAGH-V+test") QUOTA_RULE='*:storage=5000M';; esac exec /usr/local/libexec/dovecot/imap $*
My Configuration: {dovecot -n} # 1.2.3: /usr/local/etc/dovecot.conf # OS: Linux 2.6.16.60-0.54.5-smp i686 SUSE Linux Enterprise Server 10 (i586) base_dir: /var/run/dovecot/ log_path: /var/log/dovecot.err info_log_path: /var/log/dovecot.info protocols: imap imaps pop3 ssl_listen: * disable_plaintext_auth: no login_dir: /var/run/dovecot//login login_executable(default): /usr/local/libexec/dovecot/imap-login login_executable(imap): /usr/local/libexec/dovecot/imap-login login_executable(pop3): /usr/local/libexec/dovecot/pop3-login mail_location: maildir:~/Maildir mail_full_filesystem_access: yes mail_executable(default): /usr/local/bin/quotaperuser.sh mail_executable(imap): /usr/local/bin/quotaperuser.sh mail_executable(pop3): /usr/local/libexec/dovecot/pop3 mail_plugins(default): quota imap_quota expire mail_plugins(imap): quota imap_quota expire mail_plugins(pop3): quota expire mail_plugin_dir(default): /usr/local/lib/dovecot/imap mail_plugin_dir(imap): /usr/local/lib/dovecot/imap mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3 pop3_uidl_format(default): %08Xu%08Xv pop3_uidl_format(imap): %08Xu%08Xv pop3_uidl_format(pop3): %v.%u lda: postmaster_address: postmaster@zag.de mail_plugins: sieve quota expire mail_plugin_dir: /usr/local/lib/dovecot/lda quota_full_tempfail: no deliver_log_format: msgid=%m subject=%s from=%f status=%$ auth default: username_chars: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@+ username_format: zagh-v+%u failure_delay: 0 passdb: driver: pam args: session=yes dovecot userdb: driver: passwd plugin: sieve: ~/.dovecot.sieve sieve_dir: ~/sieve quota: maildir:Quota quota_rule: *:storage=100M quota_rule2: Trash:storage=100M quota_warning: storage=90%% /usr/local/bin/quota-warning.sh 90 quota_warning2: storage=75%% /usr/local/bin/quota-warning.sh 75 expire: trash 7 expire_dict: proxy::expire
On Mon, 2009-11-09 at 11:18 +0100, Yorck Koehler wrote:
But delivery is still a problem, because I'm unable to override the settings there with post-login scripting.
Everytime I send messages to such a user, dovecot sends it back with "Quota exceeded (mailbox for user is full)"...
My Question: Is it possible to override the lda quota like I can do it within imap ?
How do you call deliver? Anyway, create deliver.sh that works something like:
#!/bin/sh
QUOTA_RULE=... exec deliver -k
Timo Sirainen schrieb:
On Mon, 2009-11-09 at 11:18 +0100, Yorck Koehler wrote:
But delivery is still a problem, because I'm unable to override the settings there with post-login scripting.
Everytime I send messages to such a user, dovecot sends it back with "Quota exceeded (mailbox for user is full)"...
My Question: Is it possible to override the lda quota like I can do it within imap ?
How do you call deliver? Anyway, create deliver.sh that works something like:
#!/bin/sh
QUOTA_RULE=... exec deliver -k
I changed in my Postfix configuration from /usr/local/libexec/dovecot/deliver to /usr/local/bin/deliver.sh and created the following file (deliver.sh): #!/bin/sh
QUOTA_RULE='*:storage=500M' exec /usr/local/libexec/dovecot/deliver -k
I'm still getting Quota exceeded messages, though 500M should be enough (Test-Mailbox is at 260M).
I'm using Dovecot 1.2.7 since this morning (Nice work, btw.). I read in the source code (deliver.c) and found out that env_clean (-k) only changes the TZ/Home, if necessary. If Quota_Rule always comes from the dovecot.conf, this would explain, why defining "Quota_Rule" before calling deliver does not work.
Sorry, im unable to understand the whole source code at once.
Any Ideas ?
sincerely yours - Yorck Koehler
On Tue, 2009-11-10 at 12:10 +0100, Yorck Koehler wrote:
I changed in my Postfix configuration from /usr/local/libexec/dovecot/deliver to /usr/local/bin/deliver.sh and created the following file (deliver.sh): #!/bin/sh
QUOTA_RULE='*:storage=500M'
I think this should have actually been:
export QUOTA_RULE='*:storage=500M'
exec /usr/local/libexec/dovecot/deliver -k
But yeah, quota_rule from dovecot.conf overwrites the environment. But you could remove it from dovecot.conf and just make sure the default always gets set by post-login script or deliver.sh.
I'm using Dovecot 1.2.7 since this morning (Nice work, btw.). I read in the source code (deliver.c) and found out that env_clean (-k) only changes the TZ/Home, if necessary.
-k disables env_clean.
participants (2)
-
Timo Sirainen
-
Yorck Koehler