2008年12月26日 星期五

MailScanner 的好幫手 MailWatch

MailScanner 在處理垃圾郵件和病毒信件時 它的紀錄都是文字檔 , 紀錄詳細每封信件的處理過程 . 文字敘述的紀錄檔 當累積大量的資訊時就很難判讀

MailWatch 就是 MailScanner 的好搭檔 , 它把 MailScanner 的紀錄轉換成WEB 可以很清楚的辨別每一封來信的狀況 , 非常容易判讀 . 如下圖 :


(圖片來源 : 官方網站 http://mailwatch.sourceforge.net/)


它可以看每封信件的判斷狀況 , 讓您更加清楚知道判斷依據 如下圖 :


(圖片來源 : 官方網站 http://mailwatch.sourceforge.net/)


安裝步驟 :

1 : 先前須檢查是否有安裝 Apache , MySQL 及 PHP , PHP-gd , PHP-pear , PHP-mysql , PHP-devel 及相關元件

指令 : rpm -qa httpd , rpm -qa php* , rpm -qa mysql



結果如下圖 :


2 : 確認及設定 開機啟動 MySQL , httpd 服務

設定開機啟動服務 :

chkconfig http on
chkconfig mysqld on

查看是否有啟動服務 :


ps -ef grep mysql
ps -ef grep httpd

有啟動服務 , 如下圖 :



若無 則啟動服務

service mysql start
service httpd start


3 : 若第一次使用 mysql 記得用下列指令變更密碼

/usr/bin/mysqladmin -u root password 'XXXXXX'


4 : 設定 php.ini

vi /etc/php.ini

修改下列參數

short_open_tag = on
safe_mode = off
register_globals = off
magic_quotes_gpc = on
magic_quotes_runtime = off
session.auto_start = 0


5 : 下載 及安裝 MailWatch

下載點 : 官網
下載點 : http://sourceforge.net/project/showfiles.php?group_id=87163

安裝 MailWatch

tar -zxvf mailwatch-x.x.x.tar.gz


6 : 建立 MailWatch 資料庫

以下指令必須使用 root 登入

cd mailwatch-x.x.x
mysql -p <>


7 : 修改 MailWatch.pm 檔案 , 並複製到別的目錄

vi MailWatch.pm

my($db_name) = 'mailscanner'; (資料庫名稱)
my($db_host) = 'localhost'; (資料庫位置)
my($db_user) = 'root'; (使用者帳號)
my($db_pass) = 'xxxxx...'; (使用者密碼)

cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/


8 : 新增 mailwatch 網頁的使用者

mysql mailscanner -u root -p
Enter password : xxxxxx

mysql > insert into user values ('root',md5('xxxxx'),'root','A','0','0','0','0','0');


9 : 安裝 和 設定 MailWatch

在之前解壓縮之後產生的目錄裡有一個子目錄 , 名稱為 mailscanner


mv mailscanner /var/www/html

修改目錄權限

cd /var/www/html/mailscanner
chown root:apache images
chmod ug+rwx images
chown root:apache images/cache
chmod ug+rwx images/cache


10 : 修改 conf.php 設定

cd /var/www/html/mailscanner
cp conf.php.example conf.php

vi conf.php

define(DB_TYPE , 'mysql');
define(DB_USER, 'root');
define(DB_PASS, 'XXXXX');
define(DB_HOST, 'localhost');
define(DB_NAME, 'mailscanner');


11 : 修改 MailScanner 設定

先暫停 MailScanner

service MailScanner stop

vi /etc/MailScanner/MailScanner.conf

Quarantine User = root
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
Always Looked Up Last = &MailWatchLogging


11 : 整合 黑名單和白名單

在 MailWatch 也可以設定黑白名單
把之前解壓縮的目錄裡的檔案 SQLBlackWhiteList.pm 複製一份到 /usr/lib/MailScanner/MailScanner/CustomFunctions

vi SQLBlackWhiteList.pm

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'root';
my($db_pass) = 'xxxxx';

vi /etc/MailScanner/MailScanner.conf

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist


12 : 修改 MailScanner 目錄下的 spam.assassin.prefs.conf

vi /etc/MailScanner/spam.assassin.prefs.conf

加入下列兩行

bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660


13 : 建立 bayes 新目錄 , 並把原有 spamassassin 資料庫複製過來

mkdir /etc/MailScanner/bayeschown root:apache /etc/Mailscanner/bayes
chmod g+rws /etc/MailScanner/bayes
cp /root/.spamassasin/bayes_* /etc/MailScanner/bayes
chown root:apache /etc/MailScanner/bayes/bayes_*
chmod g+rws /etc/MailScanner/bayes/bayes_*


14 : 測試 spam.assassin.prefs.conf

spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint


15 : 重新啟動 MailScanner

service MailScanner restart && tail -f /var/log/maillog

若看到如下圖的訊息
裡面有一行:

Config: calling custom init function MailWatchLogging

表示安裝成功




可以在瀏覽器網址打 http://xxx.xxxx.xxx/mailscanner

輸入帳號密碼即可看到漂亮的報表


最後 隨著時間的增加 記錄也會不斷的增加 , 可以用下列的 SQL 指令來刪除過期的資料

delete from maillog where date < 'xxxx(年)-xx(月)-xx(日)';










2008年12月3日 星期三

Change redo log file size

註 : 本範例為 oracle 8.1.7.0


前言 :

在安裝好 oracle redo log file 都沒去變更過 都是建資料庫時的內定值
最近發先資料庫效能有問題所以才想到去變動這些設定檔
首先變更 init.ora 裡面的 log_buffer 的內定值 原本的值為 32768 = 32K 太小
導致常常會做寫入動作 , 首先先改這參數 , 至於要多大就看各環境而定。


1. 建立新的 redo log file :

redo log file 自從建立資料庫後就一直使用內定值沒變動過 , 內定值及數量如下圖 :



這一次要調整為一樣有 3個 group , 但是每個 group 有2個member,
其目的為容錯之用 , 並加大每個redolog file 至 10M.

建立新的 REDO LOG GROUP的語法 :
alter database add logfile group X ('/$oracle_HOME/datafilename ') size XXM
如下圖 :






2. Drop 舊有的 redo log file :

檢查現有的 redo log file 狀態 , 若是 inactive 才可以drop

語法 : select * from v$log;

在 STATUS 的欄位,各種值的說明如下:

CURRENT :  目前正在寫入的群組。
ACTIVE :      Checkpoint 正在進行中,寫入 datafile,尚未完成。
INACTIVE :  Checkpoint 已經完成。資料可以覆蓋。
CLEANING : 日誌正被清除內容但尚未完成。
UNUSED :      尚未被使用過或已經被清除完成。


清除  redo log file 語法 :
alter database drop logfile group X;

如下圖 :



若要移除的 redo log 目前的狀態是 active , 可以用下面指令切換到
下一個 redo log file 使其狀態由 active 變成 inactive

alter system switch logfile;
alter system checkpoint;

當已經都 drop 掉舊有的 redo log file 後 , 在 8.1.7.0版本 在 OS 裡面
檔案還是存在 , 這時才可以到檔案管理員去 delete file .

2008年11月28日 星期五

STATSPACK 使用心得 for Oracle 8.1.7.0

前置作業 :

alter system set job_queue_processes=6;
若需要自動建立收集資料的 JOB 建議更改這參數

alter system set timed_statistics=ture;
當要收及效能分析資料的時候必須把此參數打開 這樣收集的資料才有效




1. 建立必需的資料庫 以及使用者


第一次執行時執行這 SQL 指令檔 @spcreate.sql
執行過程中會詢問您 default_tablespace 及 temporary_tablespace 的位置

註 : 我都是用 tools 這 tablespace 當作 default_tablespace
temporary_tablespace 當然是選用 原本的 tmp 這 tablespace
需注意的是 , 空間大小要調整一下免得空間不足

最後產生一個user (perfstat) 密碼 perfstat , 如下圖:




會有一個LOG檔 spcpkg.lis 產生 , 紀錄執行過程中是否有錯誤產生

可以查看這檔案 , 若有錯誤須重新 create , 可用 刪除功能 這SQL指令檔 @spdrop.sql

它也會產生一個紀錄檔 spduser.lis 如下圖 :





2. 產生快照 , 建立比對資料

當都建立好後
connect perfstat/perfstat

執行 execute statspack.snap 2次
2次間隔須在30分鐘以上才有參考的價值 , 如下圖 :




兩次的快照後就可以產生報告 , 執行SQL指令 @ spreort.sql



詢問您 Snap ID , 您可以看時間決定要取哪一區間打上 ID , 並輸入report name 即可
如下圖 :




您也可以用這SQL指令刪除不要的報告 @sppurge.sql



再來就是分析所產生的 REPORT







官方參考網站 : http://download.oracle.com/docs/cd/B10501_01/server.920/a96533/statspac.htm

2008年11月27日 星期四

openwebmail 郵件規則修改

修改 openwebmail 內建郵件規則修改





公用的郵件過濾規則檔是 /var/www/cgi-bin/openwebmail/etc/filter.book


內容如下圖 :




以下列規則做說明 , 如下 :

30 : 郵件規則優先順序 . 越小者越先執行 subject : 設定 "郵件主旨" 為郵件過濾條件規則
include : 設定郵件過濾規則包含下列設定的關鍵字 \s{12} : 郵件過濾規則的關鍵字 move : 將符合過濾條件的郵件做搬移 mail-trash : 設定要把符合過濾條件搬移到的目的地 1 : 設定的郵件過濾規則生效 iso-8859-1 : 設定郵件規則的語系



依照上述的語法規則 , 就可以設定及修改自己的的過濾規則


個人的郵件過濾規則檔存放位置
~/.openwebmail/webmail/filter.book

2008年11月26日 星期三

ORACLE 8i 效能檢測工具 (一) _ utlbstat & utlestat

很久沒利用這 SQL 來查詢 oracle 效能 這一次發先有一個網站 可以把產生的 report.txt 幫你做分析 不必很辛苦的看一堆數據 蠻有幫助 以下是我的步驟 :

1. svrmgrl
2. connect sys as sysdba
3. alter system set timed_statistics=true;
4. @($Oracle_HOME)/rdbms/admin/utlbstat

收集2-3小時候 , 結束

5. @($Oracle_HOME)/rdbms/admin/utlestat
6. alter system set timed_statistics=false;


可以把產生的 report.txt 上傳到 http://www.oraperf.com/ 網站 可以幫你產生一個分析報表 pdf 檔 , 更方便整理分析資料










要先 register一個帳號 , 才可以上傳檔案 , 產生分析報表
如下圖 :

2008年10月24日 星期五

GPS Speed Sentry - GPS 軌跡紀錄軟體

GPS Speed Sentry



這真是一個好軟體 , 若您 PDA 有GPS功能 , 就可以利用這軟體顯示目前的經緯度 . 速度 .
海平面高度 ...等等 , 也可以紀錄所有移動的軌跡 , 而且可以轉到 google earth 上呈現航跡圖
它的功能不比市面上所售的專業GPS軌跡記錄器差 , 非常值得使用 .

整理一些安裝步驟 及 使用心得分享大家 :
版本 : 1.5.9

下載點 : http://www.tchartdev.com/

下載後 , cab 檔直接可以在 PDA上執行安裝即可


A : 主畫面 Tool Bar 面板介紹


由左至右


1. 白天/黑夜畫面切換

白天模式 :

黑夜模式 :



2. 速度圖表



紅色線表示所設定的 "限速"
綠色表示這段時間時速的過程 , 右下有速度顯示 "現在的時速"


3. 海平面高度




右下數字顯示 "目前的海平面高度"


4. 羅盤指示





5. 平均速度數度顯示




數字顯示紅色表示超過所設定的限速
圖例上設定40為限速 所以48就顯是為紅色


6. GPS衛星接收訊號顯示




顯示衛星定位狀況 綠色表是定位完成 , 紅色表示定位中 . 數字表示抓到的衛星數量


6.1 聲音開關

超過限速可以設定音效提示


B : 簡單的設定簡介

註 : 我是用Diamond 勝利機 , 所以我只能以我的設定為例 . 外接式 GPS Port的設定 , 要參考各廠牌手冊

1 : GPS 設定 Menu -> Setup -> GPS

在 Diamond 機 COM Port 選 COM4 Baud Rate : 57600 , 藍芽不要打勾




2 : 紀錄檔參數設定 Menu -> Setup -> Logging

選擇你要記錄的資料



3 : 設定記錄檔的檔名 , 格式 , 存放位置 Menu -> New Log

輸入你的檔名跟所要記錄的格式 然後把 Menu -> Log Active 打勾即可開始記錄

這版本可以選擇3種紀錄檔 : CVS Format , Google Earth Format , GPX Format

建議選 CVS 檔 , 然後 用下面推薦的網站 , 可以幫你轉成 Google 格式檔 , 這樣就有

各點的時間標註 . 若你選 Google Earth Format . 只有單純的經緯度座標點 , 沒有

各記錄點的時間 , 這樣就比較難看出個時間點各點的位置 , 難免會有一些不方便

轉換網址
http://www.gpsvisualizer.com/map_input?form=googleearth


4 : 限速設定 速度單位設定 .. 等 Menu -> Setup -> Units



打開 GPS , 開始記錄 Menu -> GPS Active , Log Active 打勾

抓到定位衛星 即可開始使用

慢慢享用 !!!


2008年10月1日 星期三

Linux MAIL主機轉換 , 帳號遷移

當伺服器用了多年難免會遇到主機效能的因素要更換設備 .

我們在做主機更換時 , 通常都是需要把使用者原本的帳號資料 ; 電子郵件等 , 原封不動的搬到新主機上 , 讓使用者也感覺不出使用上有什麼相異之處 , 只有感覺換新主機後系統反應變快 , 而且容量也變大 , 這就是一個非常成功的換機專案 .

本篇討論的只針對電子郵件的轉換作分享 , 其餘的服務就不包含在內 .

前置準備 :

使用者帳號所需檔案
/etc/passwd , /etc/group

使用者電子郵件存放位置
/var/spool/mail , /home

Passwd , group 檔案說明 :

passwd 檔 ==> 每筆記錄有7個欄位 , 每一欄位都用冒號 (:) 分隔
第一欄 使用者名稱
第二欄 使用者密碼
第三欄 使用者識別碼 (UID)
第四欄 群組編號 (GID)
第五欄 使用者全名
第六欄 使用者家目錄
第七欄 使用者使用的 SHELL程式

group 檔 ==> 每筆記錄有4個欄位 , 每一欄位都用冒號 (:) 分隔
第一欄 群組名稱
第二欄 密碼
第三欄 群組編號 (GID)
第四欄 群組成員

在使用者帳號密碼部分 , 在安裝好系統時已經被做加密(shadow)處理
所以當你把 passwd 檔案打開時 可以看到密碼欄裡面用 X 代表

如下圖




首先 要先把新的伺服器安裝好必要的程式都準備好 , 然後分兩部分進行 :

第一部分 使用者帳號

第二部分 MAIL 檔案處理

A : 使用者帳號


1. 在舊的伺服器裡下指令 , 把 SHADOW 密碼檔轉換至編碼回存到 passwd檔裡面

pwunconv

pwunconv 指令可以關閉 shadow 的功能 , 然後它會把密碼從/etc/shadow檔案寫回至 /etc/passwd 檔案裡


2. 把舊帳號的檔案依照 UID 大小依序排列另存到新的檔案 passwd.old


sort -t : -k 3 -n passwd > passwd.old

sort 指令解說 :

-t 指定排序所用到欄位分隔字元
-k 指定由第幾欄位做排序
-n 依照數值的大小排序

3. 利用 vi 去修改 passwd.old 把 UID 在500之前的帳號 全部刪掉

因為 UID 在 500 之前的都是系統帳號 , 這些系統帳號若也跟著轉移到新的主機會發生問題 , 所以只要把 UID 500 以後的使用者帳號轉過去就行 .

註 : UID編號 0 為系統帳號 , 1-500 保留給系統帳號使用 , 500以後給一般使用者



4. 把 passwd.old 檔案 COPY 至新的伺服器

然後把已經整理好的檔案 passwd.old 跟新主機的 passwd 合併

cat passwd.old >> /etc/passwd



5. 檢查一下是否新的 passwd 是否生效

id username

若可以顯示正確的 UID GID 等等資料 就表示帳號合併成功 , 如下圖 :



6. 把使用者密碼檔 passwd 恢復 SHADOW 加密

pwconv

這指令把 passwd 檔案第二欄位的密碼編碼 , 轉換成 SHADOW檔 . 然後這欄位變成 X .

7. group 檔案轉移步驟如 passwd 一樣

只是我們很少在 group 加上密碼 , 所以有關於 pwunconv , pwconv 就可以省略 .

做到這裡整個帳號轉移步驟就完成 , 可以用之前帳號登入看看 !!


B : MAIL 檔案處理


mail 資料放在2個地方 , /var/spool/mail , /home , 在這底下每個使用者的帳號檔案

COPY 到新的伺服器 . 注意 copy 到新主機後要檢查各檔案的權限

例如 使用者 lee 他的 mail 是儲存在 /var/spool/mail/lee and /home/lee 這兩個路徑

如下圖 :

目錄 /var/spool/mail 底下



目錄 /home 底下



目錄 /home/lee 底下



當把舊的伺服器上面 MAIL 相關檔案搬到新伺服器上的相對位置
然後把 權限 , OWNER 變更完成 (請參考上圖 )
MAIL的轉移工作就大功告成 !!
原本的信件都會完整的在新的伺服器上

2008年9月22日 星期一

Razor2 安裝 , 設定 , 測試

A : 安裝 Razor2

下載點 : http://razor.sourceforge.net/
下載 razor-agents-2.84 , razor-agents-sdk


1 : 安裝 razor-agents-2.84

tar -vxf razor-agents-2.84.tar.bz2
cd razor-agents-2.84
perl Makefile.PL
make
make test
make install


2 : 安裝 razor-agents-sdk

tar -vxf razor-agents-sdk-2.07.tar.bz2
cd razor-agents-sdk-2.07
perl Makefile.PL
make
make test
make install

razor-client
razor-admin -crate
razor-admin -register
-user=user@XXX.XXX -pass= xxxx


B : 啟用 Razor2 Function

1 : 參數設定

修改 spamassassin 的參數 ( local.cf ) 以便啟動 Razor2

cd /etc/mail/spamassassin
vi local.cf

加入 use_ razor2 1

重新啟動 spamassassin 即可
雖然不需要重新啟動就可以生效 , 但是我還是習慣把服務重啟

2 : 參數檢查

spamassassin --lint

若如下圖 表示正常 :



3 : 防火牆設定

若有使用防火牆的話
防火牆相關 PORT的設定 , 在 SPAMASSASSIN 官網有詳細介紹
http://wiki.apache.org/spamassassin/NetTestFirewallIssues


以上為安裝設定 Razor2 步驟


C : 測試 razor2


在 /usr/share/doc/spamassassin-3.2.5 目錄裡面有 SPAM測試信 ( sample-spam.txt)

指令如下 :

spamassassin -t -D razor2 < /usr/share/doc/spamassassin-3.2.5/sample-spam.txt

若看到 razor2 is available 就表是正常運作 , 如下圖 :

Pyzor 安裝 , 設定 , 測試

Pyzor 是一個利用網路合作的系統 , 它是利用文件的內文摘要去定義和封鎖垃圾郵件 .
利用分享式資料庫來回報跟通知使用者哪些是垃圾郵件 .


A : 安裝 Pyzor

下載點 : http://pyzor.sourceforge.net/

tar jxvf pyzor-0.4.0.tar.bz2
cd pyzor-0.4.0
python setup.py build
python setup.py install
chmod -R a+rX /usr/share/doc/pyzor \
/usr/lib/python2.5/site-packages/pyzor \
/usr/bin/pyzor /usr/bin/pyzord

在安裝完畢後執行

pyzor discover

這指令是下載一個名為 servers 的檔案 , 裡面記載 Pyzor伺服器的 IP


B : 啟用 Pyzor Function

1 : 參數設定
修改 spamassassin 的參數 ( local.cf ) 以便啟動 Pyzor

cd /etc/mail/spamassassin
vi local.cf

加入
use_pyzor 1
pyzor _options --homedir /etc/mail/spamassassin

這時你可以再去下載一次 servers 這檔案放在這目錄
pyzor --homedir /etc/mail/spamassassin discover

重新啟動 spamassassin 即可
雖然不需要重新啟動就可以生效 , 但是我還是習慣把服務重啟


2 : 參數檢查

spamassassin --lint

若如下圖 表示正常 :



3 : 防火牆設定

若有使用防火牆的話
防火牆相關 PORT的設定 , 在 SPAMASSASSIN 官網有詳細介紹 http://wiki.apache.org/spamassassin/NetTestFirewallIssues


以上為安裝設定 Pyzor 步驟

2008年9月20日 星期六

DCC 安裝 , 設定 , 測試


DCC (Distributed Checksum Clearinghouse) 官方網站 http://www.rhyolite.com/dcc/
這中文要翻成什麼我還想了好幾天 乾脆保持原文不翻成中文 因為不管翻成什麼怎麼翻譯
都覺得怪怪的 !!

到2007年中期 , 有超過250台伺服 , 60幾萬台電腦系統 , 上百萬使用者 , 大約可以在一個禮拜內收集和計算大約3億封信件 checksum 相關的資料 , 把所收集傳送給 DCC Server (在官網裡有一個流量圖 , 記錄它每天收集到資料量 )
如果在 DCC Server 中,某一封信的 Checksum 總數過多時,我們可以判斷它應該是一封大量傳送的垃圾郵件 。


A : 安裝 DCC

下載點 : http://www.dcc-servers.net/dcc/

tar -zxvf dcc.tar.Z
cd dcc-1.3.92
./configure
make
make install

cd /etc/mail/spamassassin
vi v310.pre


把 #loadplugin Mail::SpamAssassin::Plugin::DCC 前面的# 拿掉
存檔
如下圖所示 :



檢查是否安裝成功 , 執行下列指令 :

cdcc info

若安裝成功開始運作 , 會有如下圖顯示 :



是否有注意到最後有一段 DCC 會去找本機的 DCC Server , 如下圖 :
但是我們本機又沒有設定本機為 DCC Server




去掉這資料 免得浪費時間去要資料

cdcc "delete 127.0.0.1"
cdcc "delete 127.0.0.1 Greylist"


B : 啟用 DCC Function

1 : 參數設定

修改 spamassassin 的參數 ( local.cf ) 以便啟動 DCC

cd /etc/mail/spamassassin
vi local.cf

加入
use_dcc 1
dcc_home /var/dcc

cd /var/dcc
vi dcc_conf

DCCIFD_ENABLE=off 修改 DCCIFD_ENABLE=on
ln -s /var/dcc/libexec/rcDCC /etc/rc.d/init.d/DCC
chkconfig --add DCC

重新啟動


2 : 參數檢查

spamassassin --lint

若如下圖 表示正常 :


netstat -l grpe dcc

表示執行 OK

3 : 防火牆設定

若有使用防火牆的話
防火牆相關 PORT的設定 , 在 SPAMASSASSIN 官網有詳細介紹 http://wiki.apache.org/spamassassin/NetTestFirewallIssues


以上為安裝設定 DCC 步驟


參考文件
DCC 官網 http://www.rhyolite.com/dcc/