国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

sendmail中一種限定用戶郵箱大小的實用方法

2024-07-21 02:37:37
字體:
來源:轉載
供稿:網友

  目前,在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"
  exit 0'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 佳木斯市| 保定市| 平邑县| 屯留县| 比如县| 大关县| 刚察县| 瑞丽市| 永寿县| 杨浦区| 杨浦区| 茌平县| 阿克苏市| 嘉义县| 邹城市| 乐都县| 晋中市| 天长市| 光泽县| 华安县| 湖南省| 交城县| 定襄县| 曲水县| 临朐县| 兴国县| 民县| 白水县| 保康县| 曲麻莱县| 寻甸| 汶上县| 阿尔山市| 涟源市| 江陵县| 聊城市| 临夏市| 科技| 大余县| 自治县| 东宁县|