- 论坛徽章:
- 0
|
前些天对公司内部邮件服务器做例行检查时发现有些使用者邮箱容量都快1G了,还是没有清理,一直在服务器上保留着备份邮件。为了提醒使用者及时清理其备份邮件,提高服务器处理邮件的效率。所以写了下面的一段shell脚本,写得不好,不要见笑,因为天生也不是编程的那个料,哈哈!比较笨!不过还蛮实用的,各位要是觉得实用就COPY吧。同时也欢迎linux高手多多指点,小弟先谢过。
checkmailboxsize文件内容如下:
[root@mail checkmailboxsize]# cat checkmailboxsize
!/bin/bash
# Program:checkmailboxsize
# 邮件服务器用户邮箱容量检测及提醒
# History:
# 2006/12/7 Caiqingxing First release
# mail: jzcqx@163.com
#设置脚本运行目录
DIR=/root/checkmailboxsize/
#设定邮箱容量达300MB就发邮件提醒使用者
MAXSIZE=307200
#切换至脚本所在目录
cd $DIR
#从/etc/passwd文件中得到系统所有用户(patten.txt文件中指定的用户除外)
USERID=`awk -F : '{print($1)}' /etc/passwd | grep -v -f patten.txt | sort`
for i in $USERID
do
#判断/var/mail/下是否存在指定用户的邮箱档,如果不存在就跳过
if [ -f /var/mail/$i ];then
USER_MAILBOX_SIZE=`du /var/mail/$i | awk '{print $1}'`
if [ $USER_MAILBOX_SIZE -ge $MAXSIZE ]; then
cp -f note.txt sendnote.txt
KB2MB=`echo "scale=2; $USER_MAILBOX_SIZE/1024" | bc`
echo Current capacity: $KB2MB MB>> sendnote.txt
#发送内容为sendnote.txt的邮件通知使用者及系统管理员
mail $i@xxx.com.cn -b post@xxx.com.cn -s "Notice: Your mail box is full" < sendnote.txt
fi
fi
done
patten.txt文件内容如下:
[root@mail checkmailboxsize]# cat patten.txt
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
gopher
ftp
nobody
dbus
vcsa
nscd
rpm
haldaemon
netdump
sshd
rpc
rpcuser
nfsnobody
mailnull
smmsp
pcap
apache
squid
webalizer
xfs
ntp
gdm
htt
named
canna
wnn
quagga
cyrus
dovecot
postfix
mailman
amanda
radiusd
ldap
radvd
note.txt文件内容如下:
[root@mail checkmailboxsize]# cat note.txt
To:邮件系统使用者
您在服务器上存储的备份邮件已经超过300MB,
为了提高您收发邮件的速度,请您及时登录
http://mail.xxx.com.cn整理您的邮件。
感谢您的配合,谢谢!
From: mail.xxx.com.cn
注意:此邮件为邮件系统自动发送,请勿回复
以上配置好之后,记得将checkmailboxsize设置为可执行
[root@mail checkmailboxsize]# chmod 755 checkmailboxsize
然后将其加至系统计划任务使其每天早上7点执行一次
0 7 * * * /root/checkmailboxsize/checkmailboxsize &>/dev/null
好了,大功告成!
[ 本帖最后由 jzcqx 于 2006-12-8 16:41 编辑 ] |
|