MailWatch mailscanner(報表)
最後更新日期:2006/08/22
作者:csc@ocean-pioneer.com
參考網站:http://mailwatch.sourceforge.net/
中譯檔案:不是很完整,但覆蓋原有檔案就可以了
參考文件:程式套件中INSTALL

MailScanner是一個很好 郵件處理程式介面,但如果要看統計結果呢?剛開始我是使用mailscanner-mrtg軟體,可是在安裝redhat fedora core 1時碰到問題,在MailScaner的FAQ中,看到它提到最好的MailScanner報表程式是mailwatch,因為它比mrtg詳細,當我一 看到它的報表就想要用它如下:

本來以為很難,安裝測試結果才發覺它的安裝文件INSTALL寫的非常詳細,因此決定翻譯,並將碰到的問題及自己中文化的作法寫予文後

INSTALL(MailWatch for MailScanner 0.5)譯自INSTALL(本人再加以修改)
原始程式是發展在redaht9 & RHEL 3.0因此安裝其它的版本可能會有問題
你必須安裝MySQL,APACHE,PHP(php-mysql),為了將記錄寫入MySQL必須安裝perl-DBI,perl-DBD-MySQL (版本必須<=2.1028,最後版本有問點問題(Fedora core1 就是這個問題,因此下載9.0的srpm來編譯安裝)
#如果是FC2,或FC3必須重新編譯mysql,要安裝mysql- devel,及perl-DBD-MySQL原始程式,太複雜了,不在此討論

最新程式1.03,以下參考自http://mailwatch.sourceforge.net/doku.php?id=mailwatch:documentation
如果沒有安裝如果你有上網並安裝apt-get 則可以直接安裝
apt-get install mysql
apt-get install mysql-server
apt-get install php
....
或有光碟片
rpm -ivh 套件名稱
...
正常安裝的php,其/etc/php.ini應該不用修改
#有人問我,預設別的程式需要session.auto_start=1,那如何使用共用設定呢?
在/etc/php.ini內設為session.auto_start=1,但在mailwatch的目錄設為0
試一下在/etc/httpd/conf/httpd.conf中加入
          <Directory "目錄所在">
          php_value session.auto_start 0
          </Directory>
重新啟動httpd後再測試一下,我沒有這種狀況所以沒有把握!


安裝
請使用root的身份
  1. 下載:請至http://mailwatch.sourceforge.net/
    一般下載至/tmp
  2. 解壓縮
    cd /tmp
    tar xvfz 下載檔案
    cd mailwatch
  3. 建立資料庫
    mysql < create.sql  
  4. 變更資枓庫的權限
    #設使用者mailwatch擁有這個資料庫mailwatch的權限
    mysql
    mysql> grant all on mailscanner.* to mailwatch@localhost identified by '密碼'
  5. 修改MailWatch.pm中$db_user 為mailwatch,$db_passwd為上一行的密碼
  6. 新增網頁登入的名稱,資料庫登入使用(5)的名稱及密碼,但下面則新增別的user-password,為登入驗證,你可以新增多個,使用下 面 insert into的sql指令
    mysql mailscanner -u mailwatch -p
    Enter password: ******           
    mysql> insert into users values('<名稱>',md5('<密碼>'),'<name>','A','0','0','0','0','0');
  7. 修改MailScanner 的設定
    mv MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions
    cd /usr/lib/MailScanner/MailScanner
    vi CustomConfig.pm
    #在$VERSION=substr ...'下一行加入
    require 'MailScanner/MailWatch.pm';
  8. 將MailWatch的mailscanner移至網頁伺服器的目錄(/var/www/html)
    cd /tmp/mailwatch
    mv mailscanner /var/www/html
  9. 檢查權限/var/www/html/mailscanner/images
    cd mailscanner
    chown root.apache images
    chmod ug+rwx images
  10. 建立conf.php
    cd  /var/www/html/mailscanner
    cp conf.php.example conf.php
  11. 修改MailScanner.conf
    cd /etc/MailScanner
    vi MailScanner.conf
    #下面的參數
    Always Looked UP Last = &MailWatchLogging
    Detailed Spam Report = yes
    Quarantine Whole Message = yes
    Quarantine Whole Message As Queue files =no
    Include Scores In SpamAssassin Report = yes
    Quarantine User= root
    Quarantine Group=apache
    Quarantine Permissions=0660
  12. 修改spam.assassin.prefs.conf (如果你有安裝spamassassin)
    #加入兩行
    bayes_path /etc/MailScanner/bayes/bayes
    bayes_file_mode 0660
    #建立新的目錄bayes及權限設定
    mkdir /etc/MailScanner/bayes
    chown root:apache /etc/MailScanner/bayes
    chmod g+rws /etc/MailScanner/bayes
    #如果已經存在bayes資料庫,複製過來
    cp /root/.spamassassin/bayes_* /etc/MailScanner/bayes
    chown root:apache /etc/MailScanner/bayes/bayes_*
    chmod g+rw /etc/MailScanner/bayes/bayes_*
    #測試spamassassin
    spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint
    #你將會看到一些訊息
  13. 重新啟動MailScanner
    service MailScanner restart
  14. 除錯tail -f /var/log/maillog , 查看是否正常
  15. 開啟你的瀏覽器http://<hostname>/mailscanner
    會磞出一個對話框,輸入你6.中所建立的使用者名稱及密碼
  16. (如果有裝SpamAssassin)更新SpamAssasin的規則,(other->tools->Update Spamassassin Rule Descriptions

中文化及修正
  1. 主旨如果是中文會產生亂碼
    根據其forums(中open Discussion)中有人提出解決方法如下,編輯functions.php尋找case 'subject',變更如下:
    case 'subject':
    $row[$f] = decode_header($row[$f]);
    # $row[$f] = htmlentities($row[$f]);
    $row[$f] = htmlspecialchars($row[$f]);
  2. 中文化的問問題
    為了讓一般使用者(別公司的管理者)能使用,我將其中文化,編輯functions.php,因為是主要的程式,你必須尋找$fieldname你只要變 更$fieldname[$f]=後面由原來的英文變為"中文",就可以了,其它的報表如果想要變為中文請一併修改re_*的,至於過濾的條件要修改 filter.inc,至於總報表reports.php(你只要正常執行報表就可以由網址列得知你要修改的程式了,另有一些sql指令夾有欄位名稱請一併修改)
    這是我翻譯的200/8/22,直接解壓縮覆蓋原檔案,不含設定檔 (覆寫後請將你的瀏覽器關於本站的cookie刪除,就可以正常連線)
  3. Bitdefender的問題(我己不使用本程式了)
    因為我使用Bitdenfeder所以在病毒報告時無法執行
    修改兩個地方functions.php,rep_viruses.php
    尋找clamav,在case最後面,breaker:的上面加入一下面
    case 'bitdefender':
    define(VIRUS_REGEX,'/(.+) Found virus (\S+)/');
  4. 其它防毒軟體的問題
    如果你有其它防毒軟體但是,本程式不支援
    檢查mysql資料庫中mailscanner表格maillog,欄位report,如果不是空的其中內容可能如下:
    Bitdefender: Found virus Win32.Netsky.P@mm in file websites01_mclin.pif ClamAV: websites01_mclin.pif contains Worm.SomeFool.P MailScanner: Shortcuts to MS-Dos programs are very dangerous in email (websites01_mclin.pif)
    上述有三個報告,Bitdefender,Clamav,MailScanner  
    查看你使用的防毒程式如Bitdefender:的報告字串,找到關鍵字Found virus,其中主旨(\S+)所在的位置,因此:Bitdefender使用/(.+) Found virus (\S+)/'
  5. quarantine(隔離郵件)的release ,先至quarantine ,開啟你要release的郵件,點選最下面的左release,如果有多個文件,則看你要釋放你一部份,然後點選右下角的submit ,刪除亦同
  6. <>jump to message,要填入的是message-id,和一般的messages-id不一樣,因此不是很有用處,因為我怎麼知道message-id呢?  
  7. 在隔離的報表中-看不到release功能
    1.檢查檔案及目錄的權限-我曾經權限不足,而看不到最後的釋放的選項
    2.真正為病毒的隔離,好像無法釋放
  8. GeO IP無法更新問題
    這是一個用來查詢IP所屬國家資料庫,我使用資料庫的使用者,也是無法更新,最後我暫時先將使用者改為root,就可以了
  9. 如何刪除舊資料
    隨著時間的增加,記錄會增加,因此我們如何刪除不要的記錄呢?
    使用mysql連線資料庫:mysql mailscanner
    下命令:delete from maillog where date<'2005-03-01';
    刪除2005/03/01之前的記錄,日期你可以自己修改