Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Jun 2002 11:02:09 -0400
From:      "David S. Jackson" <deepbsd@earthlink.net>
To:        Steven Lake <raiden@shell.core.com>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: Determining # of mail's per user
Message-ID:  <20020619150205.GC6184@scee.dsj.net>
In-Reply-To: <Pine.GSO.4.44L0.0206161529060.22536-100000@shell.core.com>
References:  <Pine.GSO.4.44L0.0206161529060.22536-100000@shell.core.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jun 16, 2002 at 03:33:51PM -0500 Steven Lake <raiden@shell.core.com> wrote:
> 	What's the easiest way to determin how many emails a given user
> has on the mail server?  

I understand you already found a solution, but you might have a look at
from.  Not sure if it's in the standard installation or the ports tree.

You might also look at newmail, which I think is in the ports tree.

> I need to generate a list of how many emails and
> how much space each mail file is taking up per user.  ocd /var/mail; 


Something like this should help...

#!/usr/local/bin/bash

maildir=/var/mail  # or wherever yours is
maxsize=1234       # decide on acceptable mailbox size...
maxnum=100	   # maxnumber of emails allowed

message="Your email mailbox size has exceeded $maxsize.  
Your number of emails has exceeded $maxnum.  Please 
delete emails until your mailbox size is less than $maxsize."

domain="yourdomain.net"

cd $maildir

for i in *; do
  temp=/tmp/mailmessage.$i.txt
  size=`ls -sk $i | cut -d' ' -f1` 
  num=`grep 'From:' $i | wc -l` 
  if [ $size -gt $maxsize -o $num -gt $maxnum ]; then
    cat >> $temp <<EOF

    You have $num emails stored on the mail server
    that take up $size kilobytes of space.

    ${message}

    Sincerely,
    ${USER}, Your friendly local SysAdmin

    EOF
    mail -s "Your mailbox size is $size" $i@$domain < $message
  fi  
done



> I'm having a space
> problem on one of the mail servers and I want to create a simple formatted
> output that I can put into a spreadsheet program and view who are the
> biggest offenders.  I could do it by mail file sizes, but to the less
> experienced telling them they have 150 megs of email on the server doesn't
> make as big an impact as saying they have 25,000 emails just sitting there
> idle and taking up space.  Plus it gives me some tangeble numbers to put
> in the records.

forspreadsheet=/tmp/spreadsheet.$$

if [ -e $forspreadsheet -a -w $spreadsheet ]; then 
  rm $forspreadsheet
fi

cd $maildir 
for i in *; do
  size=`du $i | cut -d' ' -f1`
  num=`grep 'From:' $i | wc -l`
  line=`echo -e $i\t$num\t$size\n`
  cat $line >> $forspreadsheet
done  
  

> 	There's also the fact that some users recieve large files on a
> regular basis but are good about checking their mail and cleaning it out
> regularly, so I don't want to punish them while punishing the true
> offenders.  Anyone got any good suggestions for me?

The first script above checks for $size being greater than $maxsize
before sending out an email.


-- 
David S. Jackson                        dsj@dsj.net
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I have a map of the United States.  It's actual size.
I spent last summer folding it.  People ask me where
I live, and I say, "E6".  -- Steven Wright

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020619150205.GC6184>