作者 主題: 自己寫的,自動產生和設定好procmailrc檔  (閱讀 7440 次)

0 會員 與 1 訪客 正在閱讀本文。

飛鳥

  • 懷疑的國中生
  • **
  • 文章數: 43
    • 檢視個人資料
信件過濾程式說明
建立者:飛鳥
建立日期:2005/5/23

建立原因:由於垃圾信件及廣告信件過多,故建立procmail郵件過濾機製

使用方法:start為主程式,檔案權限設定700,直接執行下指令”./start”即可

程式說明:此程式因為公司的需要,每個使用者有不同的要求,有的不希望使用這個功能,怕重要信件會被過濾掉,而又因為怕每一個使用者都有自己的條件時,會使得管理員太過於多rule時,被送去精神病院就不太好了。故寫一個小程式,方便mail server的管理者能方便管理及過濾郵件。

檔案說明:

檔名   用途
start   主要執行程式,執行時,下達”./start”即可。

Causer.pl   主要核心檔案,由perl寫成,主要內容請看下原始碼說明。

userlist   此為要啓用郵件過濾的使用者,為本機使用者名單。

Usergb註1*   此檔為使用者個人允許的寄件者,會直接放入個人收件夾。
bin.txt   為寄件者黑名單,可定期增加,可以文字編輯器修改,所有使用者都會套用這黑名單。修改後請重新執行程式./start。

Subject.txt   為不允許的主旨清單,內容為base64加密過的,因為郵件在傳送的過程會是base64加密的,所以在比對也是以base64的方式比對。有附上base64.exe的加/解密程式,供大家方便在windows下編輯此檔。註2*

註1*:usergb為使用者名稱加上gb,如使用者名稱為sam,這個檔名為samgb,使用者為marry,檔名為marrygb,就是說,userlist內有多少個user,就要有多少個usergb。不然會出現error。

註2*:因為在command mod,沒有辦法打入中文,以及打中文的過濾上,沒有百分百能過濾,所以選擇base64作條件。而且現在程式只作到比對前幾個字元。

檔案內容說明

bin.txt   Mail-adress黑名單
代碼: [選擇]

@localhost.localdomain
@mediapaper.biz

…….
zylclrbya@yahoo.com.cn
zzaed@mailfb.com
zziytyeuecnarowf@mail.hotemail.com.tw

Causer.pl   核心主程式
代碼: [選擇]
#!/usr/bin/perl
#===========================(變數宣告)====
#$road=”為一般sedmail的郵件存放路徑”;
#$home=”為一般使用者的根家目錄”;
#$ppm=”為暫時及copy到家目錄時的檔名”;
#$pm=”為過濾條件乎合時的處理方法”;
#$gb=”為使用者自定allow的address檔名,請參閱上註1”;
#=================================================
$road="/van/mail/";
$home="/home/";
$ppm=".procmailrc";
$pm="procmail";
$gb="gb";
#===========================(讀取使用者清單)====
open (FILE, "userlist") or die "$!";
for $user (<FILE>){
        chomp  ($user);
#===========================(清空暫時檔案)====
open (NEW, "|>$ppm") ||die "$!\n";
close (NEW);
#===========================(?#125;啓及寫入暫時檔案,寫入provmailrc的基本宣告)====
open (NEW, "+>>$ppm") ||die "$!\n";
print NEW "LOGFILE=/var/log/procmail.log\nLOGABSTRACT=all\nVERBOSE=yes\nUMASK=000\n\n";

#===========================(?#125;啓及?#125;始寫入使用者自定允許mail-address條件)====
open (GB, "$user$gb") ||die "$!\n";
for $usergb (<GB>){
        chomp  ($usergb);
print NEW ":0\n*^From:.*$usergb\n";
print NEW "$road$user\n";
print NEW "\n";
}
close(GB);
#=========================== (?#125;啓及?#125;始寫入共用不允許的mail-address條件)====
open (FILE1, "bin.txt") or die "$!";
for $line1 (<FILE1>){
chomp  ($line1);
print NEW ":0\n";
print NEW "*^From:.*";
print NEW "$line1\n";
print NEW "$pm\/$line1\n\n";
}
close(FILE1);
#=========================== (?#125;啓及?#125;始寫入共用不允許的主旨條件)====
open (FILE1, "Subject.txt") or die "$!";
for $line1 (<FILE1>){
        chomp  ($line1);
                #if ($line1){
                        print NEW ":0\n";
                        print NEW "*^Subject:.*";
                        print NEW "$line1\n";
                        print NEW "$pm\/$line1\n\n";
                }
close(FILE1);
#=========================== (寫入完畢,關閉暫時檔案)====
close(NEW);
#=========================== (關閉使用者清單)====
close(FILE);
#=========================== (複製.procmailrc到使用者的家目錄)====
use File::Copy;
copy ("$ppm","$home$user/$ppm");
#=========================== (在螢幕上show出複製成功的訊息!)
print ("copy $user 's $ppm to $home$user/$ppm\n");
#===========================(清空暫時檔案內容及關閉檔案)=====
open (NEW, "|>$ppm") ||die "$!\n";
close (NEW);
}


userlist   使用者清單
代碼: [選擇]

sam
marry
joyce

samgb   Sam允許的mail清單
代碼: [選擇]

@yahoo.com.tw
@pchome.com.tw

Subject.txt   不允許的主旨清單(內容為base64碼)
代碼: [選擇]

?B?o
tPq/qre
pU7AdrLXtbKqzKFBMi
pU7AdrLXtbKqzKFB

說明:
如?B?o是過濾全型的特殊符號?#125;頭的主旨
如:★☆『╭▲▅▆▇㊣等等……
如下面一個主旨:
Subject: =?big5?B?omaiZ6JoobmhwLLupKunQ7ZnqmkoKKJDorCkuKVEvvcpKSChuadLtk+haaq9vnbC96Rsp6ihaqJoomeiZg==?=
利用base64解密後會是:▅▆▇★㊣船井低週波(($1元主機)) ★免費【直髮離子夾】▇▆╰


如有任何意見,可以mail to:netgames123@yahoo.com.tw

下載:http://home.kimo.com.tw/netgames123/procmail.rar