sendmail下设定邮箱大小

运维 系统运维
在Linux或者UNIX平台下,如何设定sendmail邮箱的大小呢?由于现在垃圾邮件或者长时间不读取邮件而造成的大面积磁盘空间的浪费,这一系列的问题该如何处理呢?

  目前,在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软件包已下载到当前目录后即可进行编译,操作步骤如下。

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

  sendmail-8.11.3/sendmail

  /Build

  (编译Sendmail )

  2. 安装

  1.   # ./Build install  

  (用超级用户身份安装)

  3. 生成配置文件

  1.   # cd ../cf/domain  
  2.  
  3.   # vi generic.m4 

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

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

  FEATURE('blacklist_ recipients')dnl

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

  1.   # cd ../cf  
  2.  
  3.   # m4 ../m4/cf.m4 ./generic-solaris2.mc > ./sendmail.cf  
  4.  
  5.   # cp ./sendmail.cf /etc/mail/  
  6.  

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

  1.   # cd /etc/mail  
  2.  
  3.   # makemap dbm access < /dev/null  
  4.  
  5.   # vi local-host-names  
  6.  

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

  5. 启动Sendmail

  1.   # /usr/lib/sendmail -bd -q30m  

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

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

  1.   # vi /etc/mail/limit_mailbox.sh  
  2.  
  3.   # chmod u+x /etc/mail/limit_mailbox.sh  
  4.  
  5.   # crontab -e  
  6.  

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

  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 源代码

 

  1.  #!/usr/bin/ksh  
  2.  
  3.   # search the mailbox larger than MAXSIZE , then set this mailbox full and reject new mails  
  4.  
  5.   error() {  
  6.  
  7.   echo " "  
  8.  
  9.   exit 1  
  10.  
  11.   }  
  12.  

  BIN=/usr/bin

  MAIL=/etc/mail

  #Sendmail 参数文件所在的目录

  MAILDIR=/var/mail

  #存放邮箱文件的目录

  ACCESS=access.db

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

  SUBACCESS=access.sub

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

 

  1.  if [ -lt 1 ]; then  
  2.  
  3.   error "Must set the MAX mailbox size with the command!"  
  4.  
  5.   fi  
  6.  
  7.   if [ -le 0 ] ; then  
  8.  
  9.   error " Mailbox Size < 0, Failed"  
  10.  
  11.   fi  
  12.  
  13.   ((MAXSIZE=*1024*1024))  
  14.  
  15.   if [ -f / ]; then  
  16.  
  17.   /cat / > / ' '  
  18.  
  19.   error "piping /sintos/,  
  20.  
  21.   Failed"  
  22.  
  23.   else  
  24.  
  25.   > /' 'error "clearing /, Failed"  
  26.  
  27.   fi  
  28.  
  29.   cd ' 'error "entering Failed"  
  30.  
  31.   for box in '/find .  
  32.  
  33.   ! -user root -size +""c -type f -print'; do  
  34.  
  35.   case in  
  36.  
  37.   .|..|./.*.pop)  
  38.  
  39.   ;;  
  40.  
  41.   *)  
  42.  
  43.   mailuser=  
  44.  
  45.   echo "To:@  
  46.  
  47.   ERROR:550 's Mailbox is full " >> /  
  48.  
  49.   ;;  
  50.  
  51.   esac  
  52.  
  53.   done  
  54.  
  55.   cd || error " entering Failed"  
  56.  
  57.   /usr/sbin/makemap dbm access  
  58.  
  59.   < ./ || error "makemaping access Failed"  
  60.  
  61.   exit 0'  
  62.  

  通过以上一系列的命令和方法,就可以设定sendmail 邮箱的大小

【编辑推荐】

  1.  Sendmail邮件系统的安全解决全方案
  2. Sendmail邮件系统的安全解决全方案
  3. Coremail邮件系统入选广东Linux产品推荐目录
  4. Sendmail 配置下载及安装
  5. 解决Sendmail 配置的两种方案
  6. Sendmail 安装升级实现方式
  7. 在php sendmail Windows下配置的具体实现
  8. Linux系统sendmail配置安装
责任编辑:zhaolei 来源: 网络转载
相关推荐

2011-03-04 11:13:11

2011-01-21 10:38:52

sendmail

2011-01-21 13:21:21

sendmail安全

2011-01-21 10:10:44

sendmail

2011-02-25 12:29:25

Proftpd

2011-01-21 11:21:38

sendmail

2011-02-21 16:21:49

Sendmail

2011-01-21 09:17:39

sendmail目录

2011-01-18 15:00:57

2011-01-21 10:40:52

Sendmail

2010-06-03 13:44:35

Sendmail配置

2011-01-21 12:12:54

sendmail

2011-01-21 09:49:18

sendmail目录

2011-01-21 10:39:48

sendmail

2011-01-19 10:11:22

sendmail安装方法

2011-01-21 15:40:56

Sendmail

2011-01-21 09:32:57

LinuxSendmail

2011-01-21 09:00:21

sendmail

2011-01-21 11:32:07

sendmail

2011-01-21 10:58:57

sendmail流程
点赞
收藏

51CTO技术栈公众号