1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 运维 - 正文

君子好学,自强不息!

sendmail下设定邮箱大小

2022-11-05 | 运维 | 1818ip | 575°c
A+ A-

  目前,在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. 安装

  #./Buildinstall 

  (用超级用户身份安装)

  3. 生成配置文件

  #cd../cf/domain 

  #vigeneric.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 

  #makemapdbmaccess</dev/null 

  #vilocal-host-names 

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

  5. 启动Sendmail

  #/usr/lib/sendmail-bd-q30m 

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

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

  #vi/etc/mail/limit_mailbox.sh 

  #chmodu+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 

  #searchthemailboxlargerthanMAXSIZE,thensetthismailboxfullandrejectnewmails 

  error(){ 

  echo"" 

  exit1 

  } 

  BIN=/usr/bin

  MAIL=/etc/mail

  #Sendmail 参数文件所在的目录

  MAILDIR=/var/mail

  #存放邮箱文件的目录

  ACCESS=access.db

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

  SUBACCESS=access.sub

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

 

 if[-lt1];then 

  error"MustsettheMAXmailboxsizewiththecommand!" 

  fi 

  if[-le0];then 

  error"MailboxSize<0,Failed" 

  fi 

  ((MAXSIZE=*1024*1024)) 

  if[-f/];then 

  /cat/>/'' 

  error"piping/sintos/, 

  Failed" 

  else 

  >/''error"clearing/,Failed" 

  fi 

  cd''error"enteringFailed" 

  forboxin'/find. 

  !-userroot-size+""c-typef-print';do 

  casein 

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

  ;; 

  *) 

  mailuser= 

  echo"To:@ 

  ERROR:550'sMailboxisfull">>/ 

  ;; 

  esac 

  done 

  cd||error"enteringFailed" 

  /usr/sbin/makemapdbmaccess 

  <./||error"makemapingaccessFailed" 

  exit0' 

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

本文来源:1818IP

本文地址:https://www.1818ip.com/post/7233.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。