I have written a small perl script which checks quota AND sends warning
mails. You may want to use it. Its under GPL of course. ;)

It uses the dbmail-util. its quick its dirty but it works like a charme for
years meanwhile. ;)

Here it is:

<snip>
#!/usr/bin/perl

## Please set the correct path of dbmail-utilities
$dbmailutil     =       "/usr/sbin/dbmail-util";
$dbmailusers    =       "/usr/sbin/dbmail-users";

## path of your sendmail binary
$sendmail       =       "/usr/sbin/sendmail -t";

## amount of percentage when warning mails are sent
$quotawarn      =       90;

## Mail Content
$from           =       "[EMAIL PROTECTED]";
$bcc            =       $from;
$mail           =       "Dear %USER%,\n".
                        "You have crossed the $quotawarn% Limit of your
MailAccount-Quota.\n".
                        "Please DO DELETE some mails, empty your trash or
doing anything for\n".
                        "falling under $quotawarn% usage of you quota.\n\n".
                        "BE WARNED! If your mailaccount runs full, all MAILS
regardless what\n".
                        "content or what age they may have will be
DELETED!\n\n".
                        "Currently you have used %USED%% or your
quota.\n\n".
                        "All the best\n\n".
                        "Postmaster System\n";

$mail2          =       "Dear %USER%,\n".
                        "Although we have warned you, you did nothing to
prevent your mailaccount.\n".
                        "from running full. As warned several times we have
now deleted ALL your\n".
                        "mails from the server, so people can send you mails
again.\n\n".
                        "Currently you have used %USED%% or your
quota.\n\n".
                        "All the best\n\n".
                        "Postmaster System\n";


## !!!do not change anything below!!! ##
$getusers       =       "$dbmailusers -l |egrep '\\[(.*)\\]'";
$getuserinfo1   =       "$dbmailusers -l";
$getuserinfo2   =       "|grep Quotum|gawk -F '(' '{print \$2}'";
$getuserinfo3   =       "|grep \@";

@users=`$getusers`;
$r=`$dbmailutil -d -qq`;
$r=`$dbmailutil -p -qq`;

foreach $user(@users){
    $user=~s/\[//gi;$user=~s/\]//gi;$user=~s/\n//gi;
    $quota=`$getuserinfo1 $user $getuserinfo2`;
    $quota=~s/\%//gi;$quota=~s/\)//gi;$quota=~s/\n//gi;
    if($user=~/^__/i){
    }else{
        if($quota >= $quotawarn && $quota != 100){
            @email=`$getuserinfo1 $user $getuserinfo3`;
            $email[0]=~s/\n//gi;
            open (SENDMAIL, "|$sendmail") or die "Could not open $sendmail:
$!\n";
            print SENDMAIL "Reply-to: $from\n";
            print SENDMAIL "Subject: Quotawarning for Account $user\n";
            print SENDMAIL "To: $email[0]\n";
            print SENDMAIL "Content-type: text/plain\n\n";
            $mail=~s/%USER%/$user/g;
            $mail=~s/%USED%/$quota/g;
            print $mail;
            close(SENDMAIL);
        }
        if($quota == 100){
            @email=`$getuserinfo1 $user $getuserinfo3`;
            $email[0]=~s/\n//gi;
            $result=`$dbmailusers -e $user`;
            $r=`$dbmailutil -d -qq`;
            $r=`$dbmailutil -p -qq`;
            open (SENDMAIL, "|$sendmail") or die "Could not open $sendmail:
$!\n";
            print SENDMAIL "Reply-to: $from\n";
            print SENDMAIL "Subject: Emails erased for Account $user\n";
            print SENDMAIL "To: $email[0]\n";
            print SENDMAIL "Bcc: $bcc\n";
            print SENDMAIL "Content-type: text/plain\n\n";
            $mail2=~s/%USER%/$user/g;
            $mail2=~s/%USED%/$quota/g;
            print $mail2;
            close(SENDMAIL);
        }
    }
}
<snap>

You may want to download it since I don’t know how the mailinglist will
treat this mail. ;)
http://www.simonlange.de/dbmail-quotacheck.tgz

best regards

Simon

-----Ursprüngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag
von Aaron Stone
Gesendet: Mittwoch, 21. November 2007 08:07
An: DBMail mailinglist
Betreff: Re: [Dbmail] Mailbox full + sieve

It's not possible with Sieve right now, but could be done with the
environment extension that's been talked about on the Sieve mailing
list. Anyway, that's sort of pie-in-the-sky at this moment.

We don't currently put an alert email into a user's mailbox when they've
reached quota, but we certainly could do that. There'd have to be an
effective way to prevent the message from being delivered more than once
in a given timeframe -- the replycache table could do the trick for
storing that information. There's also no way to insert the message
without counting it towards the quota (well, it's _possible_ but would
involve hacking across abstraction layers).

How about this config item:

  [DELIVERY]
  quota_warnings = yes/no

How do other mail systems do this? Is there a general desire for a
feature like this?

Aaron


On Wed, 2007-11-21 at 06:48 +0000, James Greig wrote:
> Hi guys,
> 
> This may have already been mentioned before.  Is there a feature in
> dbmail that can place an email into a users mailbox alerting them when
> their mailbox quota is reaching its limit, say at 95% usage or
> something?  If not, is this achieveable using sieve perhaps?
> 
> Cheers in advance
> 
> James Greig
> 
> 
> _______________________________________________
> DBmail mailing list
> [email protected]
> https://mailman.fastxs.nl/mailman/listinfo/dbmail

_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail

_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail

Reply via email to