Override Quota with post-login scripting problem

View: New views
4 Messages — Rating Filter:   Alert me  

Override Quota with post-login scripting problem

by Yorck Koehler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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@...
   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


Re: Override Quota with post-login scripting problem

by Timo Sirainen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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



signature.asc (204 bytes) Download Attachment

Override Quota with post-login scripting problem

by Yorck Koehler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: Override Quota with post-login scripting problem

by Timo Sirainen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.



signature.asc (204 bytes) Download Attachment