This is awesome, I'd like to include it in the distribution as a contrib
script.
Rather than using sendmail, 'dbmail-smtp -M Inbox -u username' will
deliver the message directly without running sieves or checking quotas.
I'll hack on it a bit this week.
As for the thread, there's a lot more little site policy decisions
involved than I thought at first blush. I'd be much more comfortable with
an external script that can be readily adapted to each site.
Aaron
On Wed, Nov 21, 2007, Simon Lange <[EMAIL PROTECTED]> said:
> 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
>
--
_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail