免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3583 | 回复: 10
打印 上一主题 下一主题

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-14 10:47 |只看该作者 |倒序浏览
solaris 8下,sendmail.12.6做邮件服务器,如何控制每用户邮箱大小?急!!!(如163.com控制每用户免费邮箱大小25M)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-03-14 11:35 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

sendmail的用户邮箱都在/var/mail下,恐怕只有用quota来限制文件的大小了。那种营运方式ISP是使用专门的软件的,很贵的。

论坛徽章:
0
3 [报告]
发表于 2003-03-14 12:04 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

在sendmail.cf里面控制的,仔细看看

论坛徽章:
0
4 [报告]
发表于 2003-03-14 12:21 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

http://www.mhdn.net/p/2002-04-06/4837.html
这是其中的一个说法,我个人的体会,不能实现限制邮箱的大小,只能限制单封邮件的大小。
个人想法,用quota实现。

论坛徽章:
0
5 [报告]
发表于 2003-03-14 12:35 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

sendmail.cf里面控制的是单封信件的大小啊

论坛徽章:
0
6 [报告]
发表于 2003-03-14 12:44 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

[quote]原帖由 \"坚持向左\"]sendmail.cf里面控制的是单封信件的大小啊[/quote 发表:


但是我在sendmail.cf里面设置了好象也没有用吗?大的信件照样可以发呀?

论坛徽章:
0
7 [报告]
发表于 2003-03-14 12:50 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

[quote]原帖由 \"坚持向左\"]sendmail.cf里面控制的是单封信件的大小啊[/quote 发表:


但是我在sendmail.cf里面设置了好象也没有用吗?大的信件照样可以发呀?

论坛徽章:
0
8 [报告]
发表于 2003-03-14 17:19 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

段誉  写到:
http://www.mhdn.net/p/2002-04-06/4837.html 按照方法,我试过,还是不行。

论坛徽章:
0
9 [报告]
发表于 2003-03-14 17:30 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

我试过用下面方法也不能限定用户邮箱大小:

sendmail中一种限定用户邮箱大小的实用方法
2001-12-11 00:40

发布者:netbull 阅读次数:1115  




目前,在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(lacklist_ 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 \"Tomailuser@
ERROR:550 $mailusers Mailbox is full \" >;>; $MAIL/$ACCESS
;;
esac
done
cd $MAIL || error \" entering $MAIL Failed\"
/usr/sbin/makemap dbm access
< ./$ACCESS || error \"makemaping access Failed\"
exit 0



来源:LinuxAid

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2003-03-14 17:37 |只看该作者

sendmail做邮件服务器,如何控制每用户邮箱大小?急!!!

去/var/mail下看看,每个用户的邮箱实际就是一个以用户名为名称的文件,用quota命令限制那个文件的大小不就可以了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP