divert(-1) # # Copyright (c) 2003, 2004 Victor Ustugov # This hack is under BSD License # Redistributions of source code must retain the above copyright notice # # special thanks to Lev Walkin # # hacks disscussion's maillist - http://www.mta.org.ua/mailman/listinfo/sendmail-conf # # # Check local user quote # Проверка квоты на /var/mail на этапе RCPT TO # dnl # dnl # квоту по умолчанию можно задать параметром (размер задается в килобайтах): dnl # HACK(`check_quote', `4000') dnl # dnl # квоту для каждого конкретного пользователя можно задать в access_db: dnl # MailboxQuote:zuper_user 6000 dnl # divert(0) VERSIONID(`$Id: check_quote.m4,v 8.12-0.04 2004/07/24 20:50:11 corvax Exp $')dnl divert(-1) dnl ifdef(`_ACCESS_TABLE_', `', ` errprint(`*** ERROR: HACK(check_quote) requires FEATURE(access_db) ')') dnl dnl LOCAL_CONFIG dnl dnl # Default ifelse(defn(`_ARG_'), `', `5000', _ARG_)kB mailbox size limit. D{MBS} ifelse(defn(`_ARG_'), `', `5000', _ARG_) Kls program /bin/ls -sk dnl divert(-1) dnl HACK(`precheck_envelope')dnl dnl dnl LOCAL_RULESETS dnl dnl SLocal_check_rcpt # R $* $: $>Parse0 $>3 $1 dnl R $* $: $1 R $+ < @ $=w > $* $: $1 < @ $2 > $3 $| $>Check_MB_Size $1 $| $&{MBS} R $+ < @ $=w . > $* $: $1 < @ $2 > $3 $| $>Check_MB_Size $1 $| $&{MBS} R $+ < @ $+ > $* $| $#$* $#$4 R $+ < @ $+ > $* $| $* $: $1 < @ $2 > $3 R <$-> $* $: $2 dnl SCheck_MB_Size dnl # example: # $>Check_MB_Size $1 $| $2 # $1 - mailbox # $2 - максимально допустимый размер dnl R $+ $| $- $: $1 $| $(access MailboxQuote:$1 $: $2 $) R $+ $| $- $: $(ls "/var/mail/"$1 $: 0 $) $| $2 R $- $* $| $- $: $(arith l $@ $3 $@ $1 $) $| $3 R TRUE $* $| $- $#error $@ 5.2.2 $: 552 Mailbox size exceeds user limit $2k dnl