• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Sendmail中限定用戶郵箱大小的方法

    發表于:2007-06-13來源:作者:點擊數: 標簽:
    目前,在 Linux / Unix 平臺上,Sendmail因成為缺省安裝的郵件 服務器 而得到非常廣泛的應用 但是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軟件包已下載到當前目錄后即可進行編譯,操作步驟如下。

    $ 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(aclearcase/" target="_blank" >ccess_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命令。用戶也可根據實際情況進行調整?!?0”表示郵箱大小的門限值為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 $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



    原文轉自:http://www.kjueaiud.com

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>