分享
 
 
 

Sendmail中实现用户磁盘配额的实用方法

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

目前,在Linux/Unix平台上,Sendmail因成为缺省安装的邮件服务器而得到非常广泛的应用。但是Sendmail本身并不具有限定用户邮箱大小的功能,所以,如果某些用户长时间不取信或设定了保留邮件副本,其信件将在服务器上不断堆积,以致邮箱越来越大,占用大量的硬盘空间,很多网络管理员对此都很有意见。这里介绍一种简单实用的方法,通过它,我们可以很方便灵活地对用户邮箱的大小进行设定。

一、 基本思路

先设定一个用户邮箱大小的门限值;然后定期启动一个进程,检查每一个用户邮箱文件的大小,将所有超过这一限值的邮箱文件名临时写进某一特定的文件中; 再读取该文件,将它写进Sendmail 的黑名单(blacklist_recipients) 中,从而使邮件服务器拒收该用户的新邮件,直到下次检查时该邮箱大小已小于设定的门限值为止。

二、 运行环境

我们以Solaris 2.7操作系统为例进行说明,其他Unix(或Linux)系统可参照来做。

本文以Sendmail 8.11.3为例,若无该版本的Sendmail运行软件,可到http://freesoft.cei.gov.cn或 http://www.sendmail.org站点下载。

三、 具体操作

1. 下载编译

在Sendmail软件包已下载到当前目录后即可进行编译,操作步骤如下。

$ gzip -dc sendmail.8.11.3.tar.gz | tar -xf - (Gzip 是一个压缩/解压缩的工具,相当于 Windows平台上的WinZip,在网上能很容易地找到并下载)

$ cd sendmail-8.11.3/sendmail

$ ./Build

(编译Sendmail )

2. 安装

# ./Build install

(用超级用户身份安装)

||||||3. 生成配置文件

# cd ../cf/domain

# vi generic.m4

此时,在文件的末尾增加如下两行内容。

FEATURE('access_db','dbm /etc/mail/access')dnl

FEATURE('blacklist_ recipients')dnl

然后,我们可以按着输入以下内容。

# cd ../cf

# m4 ../m4/cf.m4 ./generic-solaris2.mc > ./sendmail.cf

# cp ./sendmail.cf /etc/mail/

4. 生成 access 文件及邮件服务器名称的参数文件

# cd /etc/mail

# makemap dbm access < /dev/null

# vi local-host-names

(该文件是一个文本文件,内容为本地邮件服务器的域名和别名,它们之间要用回车分隔。详见Readme文件的有关介绍)

5. 启动Sendmail

# /usr/lib/sendmail -bd -q30m

6. 编缉限制邮箱大小的程序

用sh命令编缉一个限制邮箱大小的程序,然后用操作系统的定时执行功能crontab设定其执行的频率,内容如下。

# vi /etc/mail/limit_mailbox.sh

(内容见附录)

# chmod u+x /etc/mail/limit_mailbox.sh

# crontab -e

接着,我们可以输入以下内容。

0 6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 * * * /etc/mail/limit_mailbox.sh 10

它表示在每天6:00~20:00间,每隔1小时启动一次,检查邮箱大小的sh命令。用户也可根据实际情况进行调整。"10"表示邮箱大小的门限值为10MB。

||||||四、附录limit_mailbox.sh 源代码

#!/usr/bin/ksh

# search the mailbox larger than MAXSIZE , then set this mailbox full and reject new mails

error() {

echo " $1 "

exit 1

}

BIN=/usr/bin

MAIL=/etc/mail

#Sendmail 参数文件所在的目录

MAILDIR=/var/mail

#存放邮箱文件的目录

ACCESS=access.db

#用于临时存放超过门限值的邮箱名

SUBACCESS=access.sub

#用于存放额外的收、转发限制规则

if [ $# -lt 1 ]; then

error "Must set the MAX mailbox size with the command!"

fi

if [ $1 -le 0 ] ; then

error " Mailbox Size < 0, Failed"

fi

((MAXSIZE=$1*1024*1024))

if [ -f $MAIL/$SUBACCESS ]; then

$BIN/cat $MAIL/$SUBACCESS > $MAIL/$ACCESS ' '

error "piping $MAIL/$SUBACCESS into $MAIL/$ACCESS, Failed"

else

> $MAIL/$ACCESS' 'error "clearing $MAIL/$ACCESS, Failed"

fi

cd $MAILDIR' 'error "entering $MAILDIR Failed"

for box in '$BIN/find .

! -user root -size +"$MAXSIZE"c -type f -print'; do

case $box in

.|..|./.*.pop)

;;

*)

mailuser=${box#./}

echo "To:$mailuser@

ERROR:550 $mailuser's Mailbox is full " >> $MAIL/$ACCESS

;;

esac

done

cd $MAIL || error " entering $MAIL Failed"

/usr/sbin/makemap dbm access

< ./$ACCESS || error "makemaping access Failed"

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有