Quota warnings
Malcolm Locke
malc at e2-media.co.nz
Mon Jan 15 15:07:30 EST 2007
On Mon, Jan 15, 2007 at 09:23:55AM +1300, Malcolm Locke wrote:
> On Sat, Jan 13, 2007 at 10:41:05AM +0100, Anders Norrbring wrote:
> > Anders Norrbring skrev:
> > >Hello!
> > >I run a Cyrus IMAP server v2.3.7 and I've set this in imapd.conf:
> > >
> > >quotawarn: 80
> > >enable_quota_warnings: yes
> > >
> > >This seems to work fine with IMAP clients, but when someone use MS
> > >Outlook or Outlook Express and poll mail with POP3, there's no quota
> > >warning showing up.
> > >
> > >Is there some way to fix this? Perhaps the server generates a mail in
> > >the inbox for the users, so POP clients also get warned.
> >
> > I just realized how stupid this looks without more background..
> > The server autocreates folders like INBOX.SPAM and others, and since POP
> > clients deosn't pull other folders than the INBOX, quotas can be
> > exceeded anyway. So a way to alert those clients would be great!
>
> I use the following as a cron job running nightly which will only notify
> the user every 5 days. Run as 'check-cyrus-quotas.sh 80' to notify when
> quota is over 80%, default is 90%. Make sure the dir
> /var/state/check-cyrus-quotas exists and is writable by the cron
> process. Edit /etc/mail-quota-warning.txt to fit your setup.
>
> HTH,
>
> Malc
My apologies, the script below should be run as the cyrus user as
follows:
$ quota user. | check-cyrus-quotas.sh
> check-cyrus-quotas.sh
> ------------------------------------------------
> #!/bin/bash
>
> DELIVER=/usr/lib/cyrus/deliver
> HEADER=" Quota % Used Used Username"
> TEMPLATE=/etc/mail-quota-warning.txt
> # Notify the user every n days that they are over quota
> NOTIFY_INTERVAL=5
> STAMPDIR=/var/state/check-cyrus-quotas
>
> # Set the default warning threshhold
> if [ -n "$1" ] ; then
> THRESHHOLD=$1
> else
> THRESHHOLD=90
> fi
>
> # Remove any stale stamp files
> find $STAMPDIR -type f -mtime +$NOTIFY_INTERVAL | xargs -r rm
>
> mboxlist=`awk -v threshhold=$THRESHHOLD '{if(NR>1 && $2>=threshhold){print}}'`
>
> if [ -z "$mboxlist" ] ; then
> exit
> fi
>
> # Create tmp file to hold timestamp
> tmpfile=`mktemp /tmp/check-cyrus-quotas-XXXXXX`
> touch -d "$NOTIFY_INTERVAL days ago" $tmpfile
>
> echo "Sending quota warning to the following mailboxes which exceed the"
> echo "quota threshhold of ${THRESHHOLD}%"
> echo
> echo "$HEADER"
>
> IFS="
> "
> for mbox in $mboxlist ; do
> echo -n "$mbox"
> user=`echo "$mbox" | awk '{print $4}'`
> user=${user//user./}
> if [ -f "$TEMPLATE" ] ; then
> # Script creates a stamp file so as not to send a notification
> # every day to an over quota mailbox.
> if [ -f $STAMPDIR/$user ] && [ $STAMPDIR/$user -nt $tmpfile ]
> then
> echo " [not notified]"
> continue
> fi
> sed -e "s/@USAGE@/$HEADER\n$mbox/;s/@USER@/$user/g" $TEMPLATE | $DELIVER -q $user
> touch $STAMPDIR/$user
> echo " [notified]"
> fi
> done
>
> rm $tmpfile
> ------------------------------------------------
>
> /etc/mail-quota-warning.txt
> ------------------------------------------------
> From: Postmaster <postmaster at yourdomain.com>
> Subject: Mail quota warning for user @USER@
>
> Hello,
>
> This is an automated message from the email system. You are receiving
> this message because your mailbox is approaching its storage capacity
> limit. Your current usage is:
>
> @USAGE@
>
> Please be aware that if your mailbox storage reaches 100% YOU WILL NO
> LONGER BE ABLE TO RECEIVE EMAIL.
>
> Thank you,
>
> Postmaster
> ------------------------------------------------
> --
> Malcolm Locke - Systems Administrator, http://www.e2-media.co.nz/
> ----
> Cyrus Home Page: http://cyrusimap.web.cmu.edu/
> Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
> List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
--
Malcolm Locke - Systems Administrator, http://www.e2-media.co.nz/
More information about the Info-cyrus
mailing list