Hi all

I am trying to get a script (derived from the archives of this list) running that will deliver a warning mail to users who are in danger of breaching / have breached their mailbox quota. The script determines the users affected by running the quota command and then tries to send them a mail using deliver with the -q directive to deliver regardless of their quota usage. It works fine for users who are approaching their full quota but not for those currently over it.

I have run the script without the deliver portion and manually sent the mails, again using "deliver -q -l" and get a "452 4.2.2 Over quota" error which disregards the recipient. Is this a bug with deliver or am I doing something wrong

I'm using Cyrus 2.1.16 and the script is as follows:

#!/usr/bin/perl -w

# Settings
$quotaprog = "/usr/cyrus/bin/quota";
$deliverprog = "/usr/cyrus/bin/deliver";
$warnpct = 90;

# Lists
@warn = ();
@over = ();

# Process quota output
open(QUOTA, "$quotaprog |");
while (<QUOTA>) {
   next if /^   Quota/;
   ($junk, $pctused, $junk, $qroot) = split;
   ($junk, $user) = split /\./, $qroot;
   if ($pctused >= 100) {
       push @over, $user;
   }
   elsif ($pctused >= $warnpct) {
       push @warn, $user;
   }
}
close(QUOTA);

# Construct a date string

# Warning messages
if (@warn) {
   open(DELIVER, "| $deliverprog -q -l");
   print DELIVER "MAIL FROM:<[EMAIL PROTECTED]>\n";
   foreach $warnuser (@warn) {
       print DELIVER "RCPT TO:<$warnuser>\n";
   };
   print DELIVER "DATA\n";
   print DELIVER <<EOF;
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: WARNING: Your mailbox is over $warnpct% quota.

Your server mailbox has reached or exceeded $warnpct% of your available quota
for storing messages. This will not cause any immediate problem, but if the
size of your inbox exceeds your quota, you will not be able to receive any
new email until some messages are removed from your server mailbox, either by
deleting them or saving them to a local folder.


If you need assistance cleaning up your inbox, please contact the Help Desk on 8
225 or by email at [EMAIL PROTECTED]


Thank you.
.
EOF
   close(DELIVER);
}

# Over quota messages
if (@over) {
   open(DELIVER, "| $deliverprog -q -l");
   print DELIVER "MAIL FROM:<[EMAIL PROTECTED]>\n";
   foreach $warnuser (@over) {
       print DELIVER "RCPT TO:<$warnuser>\n";
   };
   print DELIVER "DATA\n";
   print DELIVER <<EOF;
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: URGENT: Your mailbox is over quota!!

Your server mailbox has exceeded your available quota for storing messages!
You will not be able to receive any new email until some messages are removed
from your server mailbox, either by deleting them or saving them to a local
folder. If this condition persists for 5 days or more, messages to you will
begin to bounce back to the sender. Please correct this problem as soon as
possible.


If you need assistance cleaning up your inbox, please contact the Help Desk on 8
225.


Thank you.
.
EOF
   close(DELIVER);
}



--


Jamie Davey


Systems Engineer 01206 508227


--- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to