| 展開所有答案
關閉所有答案 |
| |
| 1.1一般問題 |
| Q1.1-1. |
什麼是NOPAM? |
| A. NOPAM是一套垃圾信的過濾與攔截軟體,擁有以下特點: |
|
|
|
|
|
在未來延伸性上,NOPAM可以 archive 所有經過的電子郵件進一步建立郵件資料庫來提供郵件長期備份、搜尋、重要文件保護、資料探勘分析,甚至於知識管理等進階功能。 |
|
| Q1.1-2. |
NOPAM的授權方式為何? |
A. Nopam 系統為公益軟體。Nopam 系統為公益而開發,為公益而努力! |
| 若此系統有幸因技術之傑出與對社會之實質貢獻而有經費收入,則所有之收入將作為軟體後續之維護開發,與公益用途。 |
| Nopam 授權所有教育與學術單位,公益性質之民間社團,可以免費使用此垃圾郵件過濾系統。 |
| 技術授權,合作開發,市場代理等商業合作則視實際情形洽商訂定合作條款。 |
|
| Q1.1-3. |
NOPAM對硬體和軟體的需求? |
A.執行NOPAM所需要的硬體會隨著每天必須處理的郵件數目總量不同而有所變化,我們建議硬體能有CPU: Pentium
4 2.0G Mhz等級以上,RAM: 512 MB以上,Disk: 40G以上。 |
軟體上,目前僅支援FreeBSD 4.8以上,與5.x*以上的作業系統。 |
註*:FreeBSD 5.x需安裝有FreeBSD 4.x compatible library (可以從 /usr/ports/misc/compat4x 安裝)
註**:Nopam尚未正式支援FreeBSD 6.x |
|
| Q1.1-4. |
NOPAM的套件中,SCU
(Spam Checking User Interface)安裝在哪裡呢? |
A.目前已釋出的NOPAM 1.0/1.1/1.2套件不包含SCU模組,未來若有提供將另行通知。因為沒有SCU的關係,NOPAM預設安裝時不會將垃圾信扣留在伺服器上。現階段的nopam使用者,可使用透過在郵件標題加上特定標記的方式,來進行是否為垃圾信的判別方法,使用者可以透過自己的現有郵件閱讀軟體,針對這些被加入的特定標記,進行篩選後分類。
|
|
| Q1.1-5. |
如何透過SCU (Spam
Checking User Interface)來處理被攔截的垃圾信? |
| A.假如您安裝NOPAM時有選擇一併安裝SCU的話,您就可以透過SCU來檢視並處理被攔截的垃圾信,您可以透過瀏覽器,連到
|
| http://server:port/scu |
| 就可以看到SCU的登入畫面, |
| 請輸入您的電子郵件帳號與收信時的密碼,就可以登入SCU檢視被攔截的垃圾信。假如您看到某封郵件,認為它應該是正常信,但是卻出現在SCU裡面,可以點選畫面上方的「這不是垃圾信」的連結,這封信會馬上被寄回您的信箱
|
SCU可以安裝也可以不安裝,假如您取得的NOPAM安裝套件裡面沒有包含SCU模組,您也可以透過將郵件標題加上特定標記,由您的郵件軟體據之進行分類,這樣亦可達到相同的效果(細節參閱Q1.2-9,
如何修改垃圾信或病毒信的標題)。 |
|
| Q1.1-6. |
如何開啟Nopam的進階輔助訊息輸出? |
| A. 進階輔助訊息可用來深入追蹤程式執行過程,進階輔助訊息假如有開啟的話,輔助訊息檔將會產生在Nopam的log目錄之下,以log檔的方式存放在disk中。 |
| Nopam可以產生以下數種類型的進階輔助訊息: |
| 輔助訊息名稱 |
說明 |
| Plug-in |
Nopam在垃圾信的判斷過程中,有時候會參考外部指定的輔助訊息(例如RBL或DCC),當有這些外部的輔助訊息被使用時,所得到的相關資料會被存放在這個輔助訊息中。 |
| Abstract |
Nopam在垃圾信的判斷過程中,可以把郵件中少數幾個欄位的內容抽取出來存放在這個輔助訊息中,方便追蹤時快速尋找特定欄位的文字內容。 |
| Normalized mail |
Nopam在垃圾信的判斷過程中,會將經手的郵件進行解碼。假如有開啟normalized mail log輔助訊息的話,這些已經解碼過的郵件,除了非文字內容的附檔外,全部將會被完整的存入log檔。 |
|
| 這些輸出預設是處於關閉的狀態。假如您瞭解進階輔助訊息的內容,並希望加入Nopam的Collaborative Users Program,願意提供Nopam開發小組進階輔助訊息資料,讓我們協助貴單位進一步提升垃圾信的偵測率,這些進階輔助訊息可以透過如下方式開啟(1.2版以後適用): |
| 輔助訊息名稱 |
開啟方式 |
| Plug-in |
修改"conf/lsd.conf"中的 LOG_PLUGIN變數,請設定為:
LOG_PLUGIN=plugin.%Y%m%d
假如這個變數不存在,請自行加至"conf/lsd.conf"之中。
* Log檔名形式與位置:logs/plugin.yyyymmdd
(yyyymmdd是該訊息產生當日的日期) |
| Abstract |
修改"conf/lsd.conf"中的 LOG_DEBUG與LSD_DEBUG_INFO變數,請設定為:
LOG_DEBUG=lsd_stdout.%Y%m%d
LSD_DEBUG_INFO=1
假如這兩個變數不存在,請自行加至"conf/lsd.conf"之中。
* Log檔名形式與位置:logs/lsd_stdout.yyyymmdd |
| Normalized mail |
修改"conf/lsd.conf"中的 NORM_MAIL_ARCHIVE變數,請設定為:
NORM_MAIL_ARCHIVE=1
假如這個變數不存在,請自行加至"conf/lsd.conf"之中。
* Log檔名形式與位置:logs/ham_mail.norm.yyyymmdd
Log檔名形式與位置:logs/spam_mail.norm.yyyymmdd |
|
|
| |
| 1.2管理問題 |
| Q1.2-1. |
可否簡單介紹一下NOPAM安裝後的檔案結構? |
A. NOPAM安裝後,會在安裝目錄下產生以下次級目錄: |
| bin/ ←存放所有可執行檔 |
| conf/ ←存放所有的設定檔 |
| data/ ←郵件佇列(mail queue)、spam spool的資料 |
| logs/ ←存放log與備份的郵件 |
| tmp/ ←暫存目錄 |
|
| Q1.2-2. |
如何啟動或停止NOPAM系統的運作? |
| A. 要進行操作前,請先將您的身份切換成當初安裝NOPAM時所設定的使用者身份(預設的使用者身份是nopam這個帳號) |
若要啟動NOPAM,請進入NOPAM安裝目錄中,在bin/這個目錄下執行: |
| |
此外也可從命令列中,手動叫起NOPAM的系統程式: |
| > ./switch_start.sh |
| > ./lsd_start.sh |
| > ./qs_agent.sh |
若要停止NOPAM,請進入NOPAM安裝目錄中,在bin/這個目錄下執行: |
| |
此外也可從命列列中,手動停止NOPAM的系統程式: |
| > killall bwd_qs |
| > killall bwd_lsd |
| > killall bwd_agent |
特別注意,要執行./nopamctl start與./nopamctl stop,必須先將工作目錄切換到NOPAM安裝目錄下bin這個目錄。 |
假如NOPAM已處於啟動的狀態,若欲重新啟動NOPAM,除可使用連續呼叫./nopamctl stop; ./nopamctl
start來達到目的外,也可以使用: |
|
當使用./nopamctl restart來重新啟動NOPAM,LSD會被更換listen的TCP Port然後叫起。LSD
listen的TCP Port會於10025~10029之間輪換。 |
|
| Q1.2-3. |
NOPAM 啟動時出現
"Init_ID_socket: bind fail port",該如何處理? |
A.這有幾個可能的原因。
●目前設定的port,在作業系統裡面可能已經有其他程式佔用。
●目前所設定的port低於1024,需要以root身份才能啟動。
●假如是NOPAM被重新啟動過程中出現的話,可能剛剛還在執行的NOPAM程式,雖然被停止執行,但是作業系統還沒有把NOPAM所需要的資源釋放出來,請稍後再啟動NOPAM即可。
|
針對最後一個狀況,假如你認為已經等了很久,但是作業系統仍沒有釋放出前一個process所bind的port,您可以執行NOPAM安裝目錄中,在bin/這個目錄下執行以下幾個命令,強迫NOPAM更改目前LSD所使用的port: |
> ./nopamctl restart |
|
| Q1.2-4. |
怎麼知道目前NOPAM系統有正常運作呢? |
| A. 首先,請先看看系統中是否有以下幾個process: |
| bwd_qs, bwd_lsd, bwd_agent |
| |
然後,請看看NOPAM安裝目錄中,在logs/這個目錄下一個qs.YYYYMMDD的檔案(YYYYMMDD是今天的日期),若有信件從外部進來的話,應該會看到相關記錄,例如: |
20050810 17:29:55 Client arrival from mail04.ccu.edu.tw
20050810 17:29:56 Get 1th mail 47B922F7 (2373B) from mail04.ccu.edu.tw
ID:j7A9TnWS072463;
20050810 17:29:56 Send mail 47B922F7 to LSD 127.0.0.1:10026 ok (0 sec)
20050810 17:29:56 Client disconnect mail04.ccu.edu.tw with 1 mails delivered [0:0:0.0000] |
|
| |
再看看logs/這個目錄下一個lsd.YYYYMMDD的檔案,裡面會紀錄郵件處理完的遞送結果,例如: |
20050810 17:31:21 process_mail: fork pid=65918 (2/20, 15/240)
20050810 17:31:21 process_mail: materialize mail 47B92344 into
/usr/local/NOPAM/data/lsd_async/4/#qs_47B92344
20050810 17:31:21 process_mail: begin 47B92344, flag_fork=65918)
20050810 17:31:21 deliver SPAM 47B92344 to *140.123.5.113:10024 in 0s,
(250 2.0.0 j7A9VKTs078572 Message accepted for delivery) |
|
假如從log中看到郵件順利從外部進來,而且進行垃圾信處理後,順利將非垃圾信或非垃圾信遞送到指定的主機,這就表示NOPAM系統目前順利運作中。 |
|
| Q1.2-5. |
如何透過 /var/log/maillog來追蹤NOPAM處理的郵件? |
A. NOPAM會把所有經手處理過的郵件,把處理過程中得到的流水序號記錄在/var/log/maillog中,記錄的資料類似: |
Aug 10 17:35:35 NOPAM LSD: lsd 1203315708,47B923FC; j7A9XrVh079096;;
250 2.0.0 j7A9ZYrX072829 Message accepted for delivery
Aug 10 17:35:36 NOPAM LSD: lsd 1203315703,47B923F7; j7A9XrVf079096;;
250 2.0.0 j7A9ZaSs093097 Message accepted for delivery
Aug 10 17:35:37 NOPAM LSD: lsd 1203315726,47B9240E; j7A9ZNe8093052;
250 2.0.0 j7A9ZaTb076338 Message accepted for delivery |
|
紅色部分表示該封信件在NOPAM內部的流水序號。 |
藍色部分表示該封信件進入NOPAM時,對方MTA所宣稱的該封信的流水序號(不一定會有,但多數狀況都會有)。 |
綠色部分表示,當NOPAM處理完郵件後,將信件送至外部MTA主機,外部MTA主機所回覆的訊息,通常這裡都會帶有外部MTA主機賦予該封郵件的新流水序號(劃底線的部分)。 |
記錄在/var/log/maillog的資料是一種可用來追蹤信件流向的流水記錄,透過這個log可用來輔助追蹤每一筆進出的郵件的歷程。 |
|
| Q1.2-6. |
如何從郵件備份裡面找到我要的郵件? |
A.若安裝NOPAM時,有選擇"backup all processed mail",將可從NOPAM的郵件備份中找到所有進入NOPAM的郵件。 |
請看NOPAM安裝目錄中,在logs/這個目錄下一個all_mail.YYYYMMDD的檔案(YYYYMMDD是郵件進入NOPAM的日期),該檔案紀錄該日所有NOPAM經手處理的郵件,郵件和郵件間以"QS_MaIl"為分隔。 |
|
| Q1.2-7. |
我有啟動NOPAM的信件備份功能,我如何把備份的信件找出來,然後重新寄回到使用者的信箱? |
| A. 首先,請先找出含有您郵件備份的檔案(詳細作法請參考 " Q1.2-6. 如何從郵件備份裡面找到我要的郵件?") |
| 假設您要尋找的郵件是於2005/10/30號收到,請您找logs/all_mail.20051030這個檔案(若擔心時間差,可以一併尋找前後一天的郵件備份)。 |
| 備份的郵件和郵件間是以"QS_MaIl"這個字串作為分隔,您可以自行用文書編輯器將要需要的郵件找出來,另外存成一個檔,或使用bin/qs_get_mail這個工具程式來抽取信件也可以。qs_get_mail的使用方式如下: |
bin> ./qs_get_mail
QuantumSwitch Get Mail v1.0 (C)Copyright 2005 by Monkia
* Extract qs_mail from qs_mbox file
./qs_get_mail qs_mbox from_# to_# [pattern] |
|
| 例如您想把備份檔裡面,掃瞄第一封到第200封之間,凡是信件裡面帶有關鍵字"honey@my_hear.com"的郵件通通找出來另外存成一個檔,那麼您可以這樣輸入: |
bin> ./qs_get_mail ../logs/all_mail.20051030 1 200 'honey@my_hear.com' > mail.dat |
|
| 接下來可以透過bin/qs_player這個工具程式,將這個檔案裡面的郵件,以標準的SMTP通訊協定送回給後端的MTA主機。qs_player的詳細使用方式如下: |
bin> ./qs_player
QuantumSwitch Traffic Player v1.0 (C)Copyright 2005 by Monkia
* qs_player sends mails in qs_mbox files to smtp server
./qs_player host:port qs_mbox mode timeout verbose [max_rate] [fork_rate]
host:port is the destination to direct mail to.
If 'host:port' = 'auto', the mails will be directed
to the SMTP server specified in RCPT TO.
qs_mbox: can be a hashed dir or a single QS mailbox
mode = 1: one time scan, keep delivered mailbox
2: one time scan, remove delivered mailbox
3: continuously scan, remove delivered mailbox
timeout: the MAX seconds allowed to deliver a mail
set timeout 0 to tunr it off.
verbose: set skt_debug value. 1=on, 0=off
max_rate = X: inject no more than X mails
into simulated system per minutes.
fork_rate = Y: fork no more than Y process per minute.
set Y=0 to stop fork.
|
|
| 假如您要送回的郵件都存在mail.dat這個檔案,您後端MTA的IP是127.0.0.1,使用的Port是10023的話,則qs_player的指令可以這樣下達: |
bin> ./qs_player 127.0.0.1:10023 mail.dat 1 0 0 |
|
| 假如您很瞭解SMTP通訊協定,希望監看qs_player和後端MTA主機之間的完整SMTP對話,則可以這樣輸入: |
bin> ./qs_player 127.0.0.1:10023 mail.dat 1 0 1 |
|
|
| Q1.2-8. |
如何從取消或啟動郵件備份的功能? |
A.請看NOPAM安裝目錄中,config/目錄下一個lsd.conf的檔案,裡面有一個變數 LOG_ALL,看起來像: |
| LOG_ALL=all_mail.%Y%m%d |
若在這行前面加上"#",就表示把這行註解掉,郵件備份的功能就會取消。若該行前面沒有"#",郵件就會被備份到該變數所指定的檔案裡。 |
|
| Q1.2-9. |
對被判斷為垃圾信和病毒信,可以有哪些處置的方式? |
A.請看NOPAM安裝目錄中,config/目錄下一個lsd.conf的檔案裡有一個變數 SPAM_ DELIVERY_ACT,該變數是用來控制該如何處理被判定為垃圾信的郵件,其值可以有三種,意義分別是: |
| 變數值 |
意義 |
修改郵件檔頭(header) |
修改郵件標題(subject) |
| send |
將垃圾信依照正常信件,送給MTA,交由其送回收件者的信箱,或指定的後端郵件伺服器
|
Y |
N |
| submodify |
將垃圾信依照正常信件,送給MTA,交由其送回收件者的信箱 |
Y |
Y |
| drop |
將垃圾信直接捨棄,不送給MTA,信件不會送回收件者的信箱。 |
|
|
|
針對被判定為病毒的郵件,則是由VIRUS_ DELIVERY_ACT所控制,與SPAM_ DELIVERY_ACT一樣可以有send,submodify與drop三種值。 |
|
| Q1.2-10. |
如何修改垃圾信或病毒信的標題? |
A.請看NOPAM安裝目錄中,config/目錄下一個lsd.conf的檔案,裡面有一個變數 SPAM_SUBJECT,看起來像: |
| SPAM_SUBJECT= ***Spam*** |
只要修改該變數值就可以改變加入垃圾信標題的識別字。這個標題的修改,需配合另一個變數: |
SPAM_ DELIVERY_ACT=submodify |
才會生效。 |
同樣的,要修改加入病毒信標題的識別字,請修改VIRUS_SUBJECT這個變數值即可,這個標題的修改,也需配合另一個變數: |
VIRUS_ DELIVERY_ACT=submodify |
才會生效。 |
|
| Q1.2-11. |
請問NOPAM對病毒信與垃圾信,預設是如何修改郵件標題呢? |
A. 對於垃圾信,NOPAM會預設在郵件標題前方加入"***Spam***"的識別字。 |
對於病毒信,預設在郵件標題前方加入的識別字"***Virus***" 。 |
|
| Q1.2-12. |
我可以啟動NOPAM,但是不要對信件作任何過濾的處理嗎? |
A.在某些特定情況下,若希望先確定NOPAM和現有郵件系統可否順利整合,欲稍後再啟動NOPAM對信件過濾的功能。 |
要讓NOPAM暫時停止對信件的過濾,請看NOPAM安裝目錄中,config/目錄下一個lsd.conf的檔案,裡面有一個變數BYPASS_CHECK,請把值改成1即可,就像: |
| BYPASS_CHECK=1 |
|
| Q1.2-13. |
NOPAM開啟很多的連線送信進我的郵件主機,我的郵件主機無法同時處理大量的連線,我該怎麼辦? |
A. NOPAM處理郵件的能力非常強,可以在很短的時間內收下一堆信件,並在極短的時間內把處理完的郵件送出,但有時後端的MTA郵件主機可能硬體的能力不足,所以無法短時間內承接大量的信件或資料,這時可透過讓NOPAM降低同時產生的連線數目來達到控制流量的目的。 |
| 限制NOPAM同時對外連線數目的方法,請參照進階管理設定中,Q1.4-5.關於"如何限制NOPAM將處理完的郵件,送出時的速度?"的說明。
|
|
| Q1.2-14. |
我修改了NOPAM的設定檔,如何才能讓新的設定生效? |
|
| Q1.2-15. |
我重新啟動NOPAM,或在NOPAM正在處理或收發信件的過程中,停止NOPAM的運作,這樣會不會掉信? |
A.不會。NOPAM對於信件的處理和遞送,都有transaction的機制,只有當信件被正確處理,或明確收發完成,處理過後的信件才會刪除。 |
那些沒有完成處理的信件,會持續留在NOPAM主機中,等稍後NOPAM系統再度被啟動,未完成處理的信件可被繼續處理,所以不會掉信。 |
但需要注意的是,因這些未完全處理好的信件係存放在硬碟中,若遇到硬碟故障或檔案系統滿了,後續再進來的新信處理到一半時,NOPAM被意外終止,則之後即便NOPAM再啟動,這些未完成處理的信件,因無法被暫存在硬碟上,將消失而無法繼續被處理。 |
|
| Q1.2-16. |
什麼是SPDB?為什麼需要更新SPDB? |
A. SPDB是Spam Pattern DataBase的縮寫。這是一種資料庫裡面記載了可用來幫助NOPAM進行垃圾信判斷的資料。 |
因垃圾信的行為與特徵會隨著時間而有所變化,因此適時的更新SPDB可以讓NOPAM對於新的垃圾信有更準確的判斷。 |
|
| Q1.2-17. |
如何更新SPDB? |
A.修改NOPAM安裝目錄中,conf/目錄下的lsd.conf中,修改SPDB_URL這個變數。將其設定為"SPDB_URL=http://spdb.NOPAM.ccu.edu.tw/
"。假如把這個變數的值清空,則NOPAM不會去更新SPDB,更新完SPDB之後,NOPAM會重新啟動LSD。 |
SPDB的更新是每日凌晨2:00~4:00間進行一次更新,這個設定會透過安裝的預設USER的身份,存於其crontab的設定中。 |
|
| Q1.2-18. |
我可以手動更新SPDB嗎? |
| A. 可以。 |
| 請執行Nopam安裝目錄下的 bin/spdb_reload.sh即可。更新完畢之後LSD會自動重新啟動,以讓新的SPDB生效。 |
|
| Q1.2-19. |
假如我下載的SPDB,因為網路傳輸或硬碟的關係導致損壞,那會發生什麼狀況? |
| A. Nopam會於檔案下載之後檢查SPDB的完整性。 |
| 假如檔案有所毀損,Noapm會延用舊版SPDB,不會使用有毀損的檔案。 |
| 但假如很不幸因為硬碟故障,使得新版、舊版的SPDB都毀損了,那麼NOPAM將可能無法正常運作。您可能會看到為數不少的誤判、漏判,或NOPAM程式無法正常執行,這種狀況請務必儘速更換硬碟,並檢查您的作業系統完整性。 |
|
| Q1.2-20. |
可以讓NOPAM把放在log檔的訊息也同步顯示在console上嗎? |
A.可以,但這會在螢幕上產生大量的訊息。 |
請修改NOPAM安裝目錄中,conf/目錄下的lsd.conf與qs.conf這兩個檔案,找VERBOSE這個變數,請把值從0改成1即可。這可以讓LSD與QS的訊息也同步出現在console上。 |
|
| Q1.2-21. |
我可以為自己的郵件主機,加入寄件者的白名單嗎? |
| A. 可以,貴單位可自行指定。 |
| 請看NOPAM安裝目錄中,conf/目錄下的from.whitelist這個檔案,它們是寄件者白名單。 |
| 這個檔案是純文字檔,以行為單位,每一行是一筆email address,可自行添加email資料,以下email格式都有效: |
| John <john@asd.zxc.com> |
| john@asd.zxc.com |
| <john@asd.zxc.com> |
| 這裡的白名單並不特別針對某個特定的使用者,該些設定是對整個NOPAM的過濾系統對所有user的信箱都有效。 |
|
| Q1.2-22. |
啟動NOPAM後,會出現這樣的訊息,之後NOPAM並沒有成功啟動 |
| |
>bw_open_log_file: unable to open [../logs/YYYYMMDD.bwd]
|
|
Warning: Unable to open log file, disable logging
service. |
A. 請檢查訊息中所顯示的那個檔案的讀寫權限,那個檔案必須可以被目前執行NOPAM的這個USER所寫入。 |
NOPAM安裝的時候,有要求您使用輸入一個執行時所希望使用的user身份,常見的狀況是管理者手動以root身份執行NOPAM,使得相產生的檔案身份變成root所擁有,因此會造成這個問題。請於執行NOPAM前務必先切換成您當初所設定的使用者身份 |
|
| Q1.2-23. |
我遇到一些使用手冊與FAQ裡面沒有提及的問題,是和NOPAM郵件設定有關的,假如我想回報或想求助的話,請問應該怎麼作? |
A. 首先,貴單位應該準備以下的資料: |
1. logs/YYYYMMDD.bwd |
2. logs/lsd.YYYYMMDD |
3. logs/qs_agent.YYYYMMDD |
4. logs/qs.YYYYMMDD |
5. conf/* |
6. 執行 bin/qsq_manager INFO > /tmp/queue_info.txt |
準備/tmp/queue_info.txt |
| 7. /var/log/maillog |
* 上述檔案中,假如有YYYYMMDD的表示,您要檢查的log那天的日期。 |
假如您要回報和郵件設定有關的問題,請務必檢附以上所述的檔案,並說明以下項目,如此我們才能辦法進一步瞭解問題: |
| A. 使用的作業系統、版本 |
| B. 使用的MTA與版本 |
| C. NOPAM安裝的模式 |
| D. 遇到的狀況描述 |
|
| Q1.2-24. |
我發現NOPAM對少數信件有誤判的狀況,請問該如何回報? |
A. 誤判有兩種,一種是將正常信誤判為垃圾信的狀況, |
另一種是是垃圾信但是卻沒有抓到。 |
我們目前只接受前一種的誤判回報,假如您有遇到這種狀況的話,請直接將該封信用forward或bounce的方式寄到: |
notspam@nopam.ccu.edu.tw |
貴單位的熱心回報,可以讓NOPAM未來作得更好。 |
|
| Q1.2-25. |
在ASP安裝模式中,如何避免垃圾信業者繞過DNS MX所設定的NOPAM ASP主機,而直接將信件投遞到後端的郵件主機? |
A. 部分垃圾信業者,在大量散發垃圾信時,並不會將郵件送往DNS MX所指定的
郵件主機,而是直接投送至貴單位的郵件主機,這種狀況將會造成垃圾郵件在未經NOPAM過濾的情況下,就直接進入貴單位的使用者信箱。正常的信件不應有這種行為模式。
這個狀況可以用下圖來說明,在正常的ASP模式中,信件遞送的流程是以藍色的線段,經過1~5步驟,最後到使用者信箱,這是標準的郵件遞送流程。但有些垃圾信業者完全不理會,直接以紅色的線段所表示的方式遞送郵件,在真實的世界中,這就好像有些發傳單的人,看到住戶有掛個郵箱在門口就往內塞,而不管收件人的地址為何,或有沒有人住。 |
| 這種未經Nopam過濾而直接投遞的郵件很容易判別,您只要檢視郵件的標頭(header),發現裡面沒有NOPAM附加的訊息,就可以知道這個郵件是屬於此類型的不正常信件
對於這種狀況,您可以透過以下數種方法,任擇其一來處理:
1.使用防火牆,將port 25擋住,但在例外的設定中,接受來自Nopam ASP主機的連線
2.設定MTA (sendmail/postfix)僅接受來自Nopam ASP主機的郵件
3.將郵件檔頭(header)中,沒有Nopam訊息的信件過濾掉
這幾個方法,從效能的考量,我們建議您選擇的優先順序為1 > 2 > 3 |
 |
|
|
| Q1.2-26. |
我們單位有提供SMTP relay讓本地的使用者發信,
這部SMTP relay和我們用來安裝NOPAM的機器是同一部主機,
有發現凡是透過這部主機寄出去的信,很多都被標記成垃圾信,請問該怎麼辦?
|
|
這有兩種處理方式:
將NOPAM安裝到另一部機器上,不要把NOPAM和接受SMTP
relay的機器安裝在同一部機器上的同一套sendmail或postfix之下。
這是最好的解決方法
透過更改sendmail/postfix的設定,
要求sendmail或postfix不要把這種relay的信丟入NOPAM進行是否為垃圾信的檢查。
您可以依照貴單位的IT政策,在sendmail/postfix設定這種不檢查的信件處理規則,
但要特別留意的是,假如設定上有考慮不週全的地方的話,
垃圾信業者可能可以利用漏洞,委由貴單位的主機發送垃圾信
|
|
| |
| 1.3郵件佇列(mail queue)相關問題 |
| Q1.3-1. |
什麼是NOPAM的郵件佇列(mail
queue)? |
A. NOPAM透過郵件佇列來存放尚未完全處理好的郵件。 |
這些未完成處理的郵件將會以檔案的形式存在郵件佇列的目錄裡面,NOPAM的郵件佇列,觀念上就類似sendmail會把待送的信件存放在/var/spool/mqueue一樣,但NOPAM有自己的郵件佇列和管理的方式,這點和sendmail傳統的mail
queue不同。 |
|
| Q1.3-2. |
NOPAM的郵件佇列是怎麼運作的? |
A. NOPAM共有以下幾個郵件佇列,用途分別如下: |
| 郵件佇列目錄 |
使用的模組 |
說明 |
| data/lsd_async |
QS, LSD |
位於QS和LSD的queue,用來存放被QS收下,但尚未被LSD處理完成的郵件。
|
| data/lsd_ham |
LSD |
被LSD判定為正常郵件,但尚未遞送出去的郵件,會存放在這裡。 |
| data/lsd_spam |
LSD |
被LSD判定為垃圾郵件,但尚未遞送出去的郵件,會存放在這裡。 |
| data/lsd_suspend |
LSD |
經LSD多次以上的嘗試遞送,但卻仍未成功遞送出去的郵件,會存放在這裡。 |
| data/lsd_dead |
LSD |
經LSD多次遞送,已達系統設定的最大重送次數,但卻仍未成功遞送出去的郵件,會存放在這裡。
|
| data/qs_external |
QS |
當QS被設定為接受來自外部的SMTP relay時,假如信件將送達的目的地非MY_DESTINATION
(於conf/qs.conf中設定),則該信件表示需要外送,等待外送的郵件會存放於此。 |
|
郵件佇列的邏輯示意圖如下: |
 |
|
| Q1.3-3. |
如何查看在郵件佇列中的郵件? |
A.郵件將會以檔案的形式存在郵件佇列的目錄,檔案的名稱是以該郵件在NOPAM系統中的流水序號命名。 |
這些郵件都是以文字檔的方式存放,直接透過文書編輯器開啟,就可看到原始的郵件內容。郵件的前方NOPAM會加入獨有的資料,這些資料與原始郵件則透過一行"DATA"的關鍵字作分隔。"DATA"之前的內容是NOPAM加入的訊息,"DATA"之後是原始的郵件資料。 |
NOPAM提供一個程式,可以很快的瀏覽郵件佇列裡面的郵件的部分摘要訊息,而不用管理進入郵件佇列目錄,將檔案一個一個開啟。這個程式位於NOPAM安裝目錄下,bin/這個目錄中,要執行這個程式,必須把工作目錄切換到bin這個目錄。 |
要查看目前主要的郵件佇列中,分別有多少檔案,可以在命令列中執行: |
bin>./qsq_manager NUM
SPOOL_IN = 10 (#3) in /usr/local/NOPAM/data/lsd_async
SPOOL_HAM = 5 (#1) in /usr/local/NOPAM/data/lsd_ham
SPOOL_SPAM = 2 (#2) in /usr/local/NOPAM/data/lsd_spam
SPOOL_SUSPEND = 4 (#0) in /usr/local/NOPAM/data/lsd_suspend
bin> |
|
由這個例子來說明,輸出的資料以行為單位,等號前面表示佇列名稱,等號後面第一個數字表示該佇列裡目前有多少郵件,括號裡的數字表示在這些郵件裡有多少是run-time正在遞送中,但尚未完成的。因NOPAM提供有流量控制的機制,所以並非所有在佇列中的檔案在同一時間通通都會立即被遞送出去,NOPAM會依照設定,逐步將郵件送出。 |
要查看目前主要的郵件佇列中,這些檔案的摘要訊息,可在命列列中執行: |
bin>./qsq_manager INFO
!1. /usr/local/NOPAM/data/lsd_suspend/0/qs_47B9A580.11 (1K),
delay 8h35m
From: ‹erika@kiss-and-kiss.com> via mail04.ccu.edu.tw
To : ‹u85120xx@ccu.edu.tw> (total 1 receivers)
Info: 553 5.1.8 ‹erika@kiss-and-kiss.com>...
Domain of sender address erika@kiss-and-kiss.com does not exist
!2. /usr/local/NOPAM/data/lsd_suspend/E/qs_47B9717E.37 (73K),
delay 11h53m
From: ‹root@mail07.ccu.edu.tw> via mail07
To : ‹root@mail07.ccu.edu.tw> (total 1 receivers)
Info: TIMEOUT: bw_connect_remote 140.123.19.99:10024
#3. /usr/local/NOPAM/data/lsd_async/5/#qs_47BA0265 (29K), delay 9s
From: ‹gary516xx@ms81.url.com.tw> via mail01.ccu.edu.tw
To : ‹asttsm@ccu.edu.tw> (total 1 receivers)
4. /usr/local/NOPAM/data/lsd_async/A/#qs_47BA022A (1K), delay 27s
From: ‹Antony_abjecting@purinmail.com> via mail02.ccu.edu.tw
To : ‹g87360xx@ccunix.ccu.edu.tw> (total 1 receivers)
bin> |
|
這個指令會明確列出每一封信的實體檔案位置,已經嘗試遞送多少次,信件大小,已停留在NOPAM系統裡面多久時間,由誰寄出,收件人是誰(包括共有多少收件人),這封信停留在郵件佇列裡的原因。 |
以第一封信為例,訊息的意思是: |
- 這封信目前在系統的/usr/local/NOPAM/data/lsd_suspend/0/qs_47B9A580.11
|
- 這封信已經過11次的遞送,仍未能成功送出去a檔名後的".11"
|
|
- 這封信從進入NOPAM系統起算,截至目前已停留8小時35分
|
- 這封信是由erika@kiss-and-kiss.com寄出
|
- 傳送這封信到NOPAM的MTA郵件主機是mail04.ccu.edu.tw
|
- 這封信的第一個收件人是u85120xx@ccu.edu.tw,總共只有一個收件人
|
- 這封信寄不出去的最近一次原因是因為對方的郵件主機因為查不到kiss-and-kiss.com這個網域,所以拒絕收取這封信件
|
| |
每封信的編號,前面可能會有一個符號如"#", "!",它們的意思分別是: |
"#":這封信目前正在遞送中。 |
"!":這封信遞送的過程,遇到嚴重的permanent error。 |
沒有符號: 這封信正常存放在queue裡面,目前並未透過網路遞送。 |
|
| Q1.3-4. |
如何強迫NOPAM立即對郵件佇列中的信件開始遞送? |
A.我們並不建議在NOPAM已主動安排寄信時間的狀況下,另外強制NOPAM立即處理郵件佇列中的郵件。 |
| 但假如有特殊需要,真的非這麼做不可的話,可使用qsq_cleaner這個工具程式,可在NOPAM安裝目錄下的bin/子目錄找到,要執行這個程式,必須將工作目錄切換到bin/這個子目錄,然後執行:
|
| bin> ./qsq_cleaner ../conf/lsd.conf 1 ../data/lsd_dead
1 48 200 1 ../data/lsd_suspend |
|
在本例最後一個參數是"../data/lsd_suspend",表示要求NOPAM立刻處理../data/lsd_suspend這個郵件佇列裡面的郵件寄送,也可把這個目錄換成其他要處理的郵件佇列目錄位置。 |
qsq_cleaner有很多參數可以供調整,例如最長的等待時間,重複寄送次數,同時連線數目等,可自行參考程式本身的說明,調整所需設定: |
bin>./qsq_cleaner
QuantumSwitch Queue Cleaner v1.0 (C)Copyright 2005 by Monkia
./qsq_cleaner host:port rename del inc max timeout verbose q_dir_file
host:port = the server:port to relay.
= replace this with a file path to lsd.conf to
use auto switched relay by looking up HOP_MAP
rename: =0/1, rename before delivery
del: =0/1, delete after successful delivery
=dir_name, move delivered file to this dir
inc: =0/1, add retry count after failed delivery
max: =X, drop this mail if retry count > X
timeout:=0/1, the MAX seconds allowed to deliver a mail
verbose:=0/1, set skt_debug value |
|
|
| Q1.3-5. |
如何刪除郵件佇列中的郵件? |
A.若真的確定處理到一半、或還沒處理的郵件都不要了,可透過執行以下命令來刪除所有queue裡的檔案: |
| bin> ./qsq_manager RESET_ALL |
|
若只想刪除某特定queue裡的檔案,而非所有queue裡的檔案,或只想刪除來自某個MTA郵件主機的信,可進一步參考qsq_manager的使用說明: |
bin>./qsq_manager
bin> QuantumSwitch Queue Manager v1.2 (C)Copyright 2005 by Monkia
./qsq_manager cmd [lsd.conf] [lsd_milter.conf]
BYPASS = deliver unchecked mails as HAM (in->ham)
RESET_HAM = delete undelivered ham (ham)
RESET_SPAM = delete undelivered spam (spam)
RESET_SUSPEND = delete suspended mails (suspend)
RESET = delete undelivered mails (ham+spam+suspend)
RESET_ALL = delete all mails (in+ham+spam+suspend)
RESET:RMTA_DN = delete undelivered mails from RMTA_DN
NUM = show queued mail number
INFO = show mail queue info
FLUSH_HAM = send ham mails immediately (ham)
FLUSH_SPAM = send spam mails immediately (spam)
FLUSH = send suspended mails immediately (suseand)
FLUSH_ALL = send undelivered mails (ham+spam+suspend)
* default lsd.conf assumed to be ../conf/lsd.conf
* default lsd_milter.conf assumed to be ../conf/lsd_milter.confbin>
|
|
|
| Q1.3-6. |
我發現在郵件佇列data/lsd_async
(SPOOL IN)裡面有很多信件,對於這些尚未處理的信件,我認為不需要NOPAM繼續進行是否為垃圾信的判斷,我是否可以當作HAM直接全部放行? |
A.可以的,可以透過前面所說的qsq_manager來達成。 |
請使用qsq_manager的BYPASS這個參數下達命令,所有在data/lsd_async (SPOOL
IN)的郵件會馬上被移到data/lsd_ham (SPOOL HAM)這個郵件佇列,稍後馬上當作HAM開始遞送。 |
|
| Q1.3-7. |
可以透過rm直接刪除郵件佇列裡面的檔案嗎? |
A.當NOPAM仍在執行中的話,我們不建議這麼做,雖然說可能運氣好不會有什麼問題…。 |
|
| Q1.3-8. |
如何設定郵件遞送失敗後的重複嘗試遞送次數? |
| A. NOPAM最大的郵件遞送嘗試次數,是由qsq_cleaner所控制,前面有介紹過,管理者可透過qsq_cleaner強制要求NOPAM立即送出在郵件佇列裡面的郵件。
|
最大的郵件遞送嘗試次數是由qsq_cleaner的max參數所控制: |
bin>./qsq_cleaner
QuantumSwitch Queue Cleaner v1.0 (C)Copyright 2005 by Monkia
./qsq_cleaner host:port rename del inc max timeout verbose q_dir_file
host:port = the server:port to relay.
= replace this with a file path to lsd.conf to
use auto switched relay by looking up HOP_MAP
rename: =0/1, rename before delivery
del: =0/1, delete after successful delivery
=dir_name, move delivered file to this dir
inc: =0/1, add retry count after failed delivery
max: =X, drop this mail if retry count > X
timeout:=0/1, the MAX seconds allowed to deliver a mail
verbose:=0/1, set skt_debug value |
|
當重複嘗試遞送的次數到達了X,但郵件仍無法成功遞送出去,郵件將會被從lsd_suspend這個queue搬到lsd_dead這個queue,不再繼續嘗試遞送。 |
要修改這個設定,可以檢視NOPAM安裝目錄中,conf/目錄下的lsd.conf檔案,裡面有一個變數SUSPEND_Q_CLEANER,該變數值是一道呼叫qsq_cleaner的命令,可自行更換其中max這個參數的值即可。 |
|
| Q1.3-9. |
那些到了最大嘗試遞送次數還送不出去的信會到哪裡? |
|
| Q1.3-10. |
假如一封郵件因為某種原因遞送失敗,經過多久NOPAM會再重新嘗試往外傳送一次? |
A.假如那封信是在lsd_ham或lsd_spam這兩個郵件佇列裡面,NOPAM會每隔CLEANUP_PERIOD秒就嘗試寄送一次,最多嘗試MAX_RETRY_CNT次,假如仍送不出去,就會將郵件移至lsd_suspend這個郵件佇列。 |
在lsd_suspend這個郵件佇列裡面,NOPAM會每隔SUSPEND_Q_C_PERIOD秒就嘗試寄送一次,假如超過qsq_cleaner所設定的最大重複嘗試傳送次數,仍送不出去,就會將郵件移至lsd_dead這個郵件佇列。 |
可在NOPAM安裝目錄中,conf/目錄下的lsd.conf檔案,找到CLEANUP_PERIOD、MAX_RETRY_CNT、SUSPEND_Q_C_PERIOD這些變數並加以設定。 |
|
| Q1.3-11. |
對於這些郵件佇列裡面的信件,我該注意些什麼? |
| A.前面有提到,管理者可透過qsq_manager查看在各主要郵件佇列裡的郵件數目,假設我們把該些數字暫用符號代表:
|
bin>./qsq_manager NUM
SPOOL_IN = A (#a) in /usr/local/NOPAM/data/lsd_async
SPOOL_HAM = B (#b) in /usr/local/NOPAM/data/lsd_ham
SPOOL_SPAM = C (#c) in /usr/local/NOPAM/data/lsd_spam
SPOOL_SUSPEND = D (#d) in /usr/local/NOPAM/data/lsd_suspend
bin> |
|
| 特徵一:A的數值很大,但B和C很小 (例如差異在十倍或百倍以上) |
- 可能LSD當掉了,或LSD沒有開啟,請啟動LSD。
|
- 可能瞬間進入NOPAM的流量太多了,假如機器硬體無法負荷,請參考1.4進階管理與設定問題一節,針對外部進入NOPAM的郵件速度手動進行調節。
|
特徵二:A的數值很小,但B和C很大 (例如差異在十倍或百倍以上) |
- 可能貴單位MTA郵件主機掛點或連不上,請檢查的MTA主機連線是否正常。
|
- 可能瞬間NOPAM對外送出的流量太多,導致對單位MTA郵件主機無法負荷,假如MTA機器硬體無法負荷,請參考1.4進階管理與設定問題一節,針對NOPAM對外的郵件速度手動進行調節。
|
特徵三:但B和C很小,但D很大 (例如差異在十倍或百倍以上) |
- 可能貴單位MTA郵件主機掛點或連不上,而這個狀況已持續很長一段時間。請立即檢查請檢查的MTA主機硬體或網路連線是否正常。
|
|
| |
| 1.4進階管理與設定問題 |
| Q1.4-1. |
可以限定NOPAM只接收來自特定IP的MTA網路連線嗎? |
A.可以,而且我們強烈建議這麼做。 |
透過修改NOPAM安裝目錄中,conf/目錄下的qs.conf檔案,可藉由調整MY_NETWORK、BAD_NETWORK來限制允許連線的前端MTA
server。 |
以上變數的意義如下: |
| 變數名稱 |
說明 |
| MY_NETWORK |
以IP的方式指定,凡屬於這個變數所指定範圍的IP送過來的郵件,都可由NOPAM處理。
註:假如不填,表示來自任何IP的郵件都收。 |
| BAD_NETWORK |
凡是從MY_NETWORK所指定IP範圍內來的郵件,NOPAM都拒絕處理。
|
|
MY_NETWORK與BAD_NETWORK這兩個變數可以有很多行,意即這兩個變數在qs.conf裡可以出現不止一次,而且其輸入值可以是用列舉的方式列出IP,或使用CIDR的方式表示某特定範圍的IP。 |
例如 (僅為舉例,請勿將本例直接輸入貴單位的qs.conf設定檔): |
MY_NETWORK=140.123.5.120, 127.0.0.1
MY_NETWORK=140.123.5.111/24, 140.123.19.99 |
|
*注意,MY_NETWORK與BAD_NETWORK的值都是以IP的方式表示,請勿輸入hostname或domain
name。 |
|
| Q1.4-2. |
我可以把NOPAM當作SMTP
mail relay,透過NOPAM server來發信嗎? |
A.可以。 |
透過修改NOPAM安裝目錄中,conf/目錄下的qs.conf檔案,可藉由調整MY_DESTINATION、MY_NETWORK、BAD_NETWORK來對NOPAM的SMTP
mail relay進行控制。 |
這幾個變數的定義是: |
| 變數名稱 |
說明 |
| MY_DESTINATION |
只有當郵件的收件人的主機是在我方的destination中,NOPAM才收這封信,否則將把郵件收下後,依NOAPM的設定決定是否代為將郵件轉寄出去。
注意:若不填就表示所有的信都是在我方的destination中。 |
| MY_NETWORK |
以IP的方式指定,凡屬於這個變數所指定範圍的網路連線,可任意透過NOPAM發信,不管收發信人是否屬於MY_DESTINATION。
若非從MY_NETWORK所指定IP範圍內來的網路連線,若收發信人都不在MY_DESTINATION所規範的主機中,那麼這封信將會被拒絕透過NOPAM進行relay。
注意:假如不填,表示來自任何IP的郵件都收。 |
| BAD_NETWORK |
凡是從MY_NETWORK所指定IP範圍內來的網路連線,無論收發信人在不在MY_DESTINATION所規範的主機中,都不准透過NOPAM進行SMTP
relay。 |
|
| |
[CASE 1: 有設定MY_DESTINATION] |
例如可設定: |
MY_DESTINATION= ccu.edu.tw, mail.ccu.edu.tw
MY_NETWORK= 140.123.5.0/24, 192.168.0.0/24
BAD_NETWORK=192.168.1.0/24, 10.0.0.0/8 |
|
指我方收目的地是ccu.edu.tw與mail.ccu.edu.tw的郵件,對方的連線必須來自140.123.5.0/24或192.168.0.0/24所標示的IP範圍才收,此外凡是來自192.168.1.0/24或10.0.0.0/8這些範圍的IP都不收。 |
假如送過來的信其目的地(收件人)不是ccu.edu.tw與mail.ccu.edu.tw,則這就是mail relay,NOPAM依照qs.conf裡SEP_EXT_MAIL這個變數的值,決定該如何處理目的地(收件人)不是ccu.edu.tw與mail.ccu.edu.tw的郵件。 |
假如SEP_EXT_MAIL=1,則NOPAM不會將信件轉交LSD進行是否為垃圾信的判斷,而會直接將信件寄達郵件所載的遠端目的地。 |
假如SEP_EXT_MAIL=0,則NOPAM會將信件轉交LSD進行是否為垃圾信的判斷,至於信件是否會寄達郵件所載的遠端目的地,則看LSD設定的處理方式: |
- 假如該封郵件是HAM,而LSD被設定為將HAM轉呈後端的MTA server,則該封信的處理將由後端的MTA
server決定。
|
- 假如該封郵件是SPAM,而LSD被設定為將SPAM轉呈後端的MTA server,則該封信的處理將由後端的MTA
server決定。
|
- 假如該封郵件是SPAM,而LSD被設定為將SPAM捨棄,則該封信永遠到不了目的地。
|
| |
[CASE 2: 沒有設定MY_DESTINATION] |
例如可設定: |
MY_DESTINATION=
MY_NETWORK= 140.123.5.0/24, 192.168.0.0/24
BAD_NETWORK=192.168.1.0/24, 10.0.0.0/8 |
|
指所有的郵件都收,但對方的連線必須來自140.123.5.0/24或192.168.0.0/24所標示的IP範圍才收,此外凡是來自192.168.1.0/24或10.0.0.0/8這些範圍的IP都不收。 |
這些收下來的信,NOPAM都會轉交給LSD進行是否為垃圾信的判斷,至於信件是否會寄達郵件所載的遠端目的地則看LSD設定的處理方式。 |
- 假如該封郵件是HAM,而LSD被設定為將HAM轉呈後端的MTA server,則該封信的處理將由後端的MTA
server決定。
|
- 假如該封郵件是SPAM,而LSD被設定為將SPAM轉呈後端的MTA server,則該封信的處理將由後端的MTA
server決定。
|
- 假如該封郵件是SPAM或病毒信,而LSD被設定為將SPAM與病毒信捨棄,則該封信永遠到不了目的地。
|
| |
[mail relay 總結] |
除非有特別的需求,如無法安裝postfix或sendmail來發信,否則沒有必要刻意透過NOPAM當作mail
relay的SMTP server。若貴單位只是使用NOPAM過濾垃圾信,而不當作提供mail relay的SMTP
server,可以關閉mail relay的功能。 |
要關閉mail relay的功能,可修改SEP_EXT_MAIL,把值設定成0,讓NOPAM不會將relay的郵件送出,而是交由後端的MTA依照貴單位的IT政策自行處理。 |
|
| Q1.4-3. |
如何將掃毒程式整合到NOPAM之中? |
A.目前NOPAM支援有名的Clamav掃毒軟體 (http://www.clamav.net/
)。 |
若要使用Clamav使其為NOPAM經手的郵件進行掃毒,必須先安裝Clamav,並讓Clamav接收來自Internet
domain socket的掃毒請求。Clamav預設是不接受Internet domain socket的掃毒請求,這個設定可在Clamav的設定檔clamd.conf中,藉由更改TCPSocket與TCPAddr兩個變數達到來啟動。詳細設定方法請參閱Clamav的說明文件。可設定: |
# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
#LocalSocket /var/run/clamav/clamd 請把這行最前面加上#,變成註解
# TCP port address.
# Default: disabled
TCPSocket 3310
# TCP address.
# By default we bind to INADDR_ANY, probably not wise.
# Enable the following to provide some degree of protection
# from the outside world.
# Default: disabled
TCPAddr 127.0.0.1
|
|
假設把clamav安裝在某部機器,IP是a.b.c.d,且clamav的daemon 有listen在port
X,則請修改NOPAM安裝目錄中,conf/目錄下的lsd.conf檔案,找CHECK_VIRUS與AV_SERVO這兩個變數,將其值修改為: |
CHECK_VIRUS=1 |
AV_SERVO=a.b.c.d:X |
假如是把Clamav以預設的方式安裝在和NOPAM同一部的主機上,AV_SERVO可填"AV_SERVO=127.0.0.1:3310"。 |
經過clamav掃瞄後,假如有偵測到病毒,信件的標頭會被加入類似如下的內容: |
| X-NOPAM-Status: Virus detected. Found virus XXXXX.XXXX |
其中XXXX是病毒的名稱。 |
|
| Q1.4-4. |
如何限制從外部郵件進入NOPAM的速度? |
A.外部郵件的收取是由QS所控管,要限制外部郵件進入NOPAM的速度,要調整QS的設定檔。 |
請修改NOPAM安裝目錄中,conf/目錄下的qs.conf檔案,找MAX_FORK_PER_SEC與MAX_FORK_PER_20_SEC這兩個變數,變數的意義是: |
| 變數名稱 |
說明 |
| MAX_FORK_PER_SEC |
每秒最多允許QS產生幾個新的process。QS每收到一封新的信,就會產生一個新的process來處理。
|
| MAX_FORK_PER_20_SEC |
每20秒最多允許QS產生幾個新的process。
|
|
當MAX_FORK_PER_SEC=0時,QS不會因為處理新的郵件而fork新的process,只有當LSD完整收下QS所轉交的信後,QS才會再從外部收取下一封信。這個方法可以很有效的限制外部進來的信件,不會超過主機硬體所能處理的負荷量。 |
當MAX_FORK_PER_SEC > MAX_FORK_PER_20_SEC時,這表示QS平均收信的速度會被MAX_FORK_PER_20_SEC所限制,但卻又有空間能夠承受爆發性的瞬間流量,只要該流量不超過每秒MAX_FORK_PER_SEC封,都可以順利收下。 |
|
| Q1.4-5. |
如何限制NOPAM將處理完的郵件,送出時的速度? |
A.外部郵件的收取是由LSD所控管,要限制NOPAM送出郵件的速度,要調整LSD的設定檔。 |
請修改NOPAM安裝目錄中,conf/目錄下的lsd.conf檔案,找FORK_BEFORE_CHECK、MAX_FORK_PER_SEC、MAX_LSD_PROC_NO與MAX_FORK_PER_20_SEC這幾個變數的意義是: |
| 變數名稱 |
說明 |
| FORK_BEFORE_CHECK |
當LSD每收到一封新的信,是否要產生一個新的process來處理。 |
| MAX_FORK_PER_SEC |
每秒最多允許LSD產生幾個新的process。
|
| MAX_FORK_PER_20_SEC |
每20秒最多允許LSD產生幾個新的process。
|
| MAX_LSD_PROC_NO |
允許系統內最多有多少個active的LSD
process |
|
當MAX_FORK_PER_SEC與MAX_FORK_PER_20_SEC可參考Q1.4-4.關於限制QS收信速度的說明,但有一點要特別注意的是這兩個變數,只有在FORK_BEFORE_CHECK被enable時,才會生效。透過這兩個變數,就可控制NOPAM同時間最大的對外連線數目,間接達到限制流量與流速的目的。 |
LSD因為對於收到的信件,會進行是否為垃圾信判斷,所以每一封信處理的時間會比QS要來得長,因此系統中LSD的process數目會遠比QS的process數目來得多,為避免記憶體被過多的process所消耗,管理者可以對系統內有效的LSD
process總數進行限制,這可以透過MAX_LSD_PROC_NO來控制。 |
但MAX_LSD_PROC_NO只限制"有效"也就是正在積極處理郵件的LSD,至於只是在默默等待資料回傳的LSD則不在此限。 |
|
| Q1.4-6. |
可以讓NOPAM本身進行負載平衡嗎? |
A. 可以。 |
NOPAM主要是由QS、LSD、SCU、GSD所構成,每個元件都可安裝在獨立的機器上,不一定要全部安裝在同一部機器。 |
LSD對於收到的信件會進行是否為垃圾信判斷,所以每一封信處理的時間會比QS來得長,而且判斷後還會往外遞送,故LSD是整個系統中會消耗最多運算資源的模組。 |
NOPAM支援多部LSD同時運作,透過NOPAM內建的server clustering來達到負載平衡的機制,若要將NOPAM佈屬在一個郵件流量很大的環境中,例如每天會有百萬或數千萬封信件進出的環境下,這個機制正符合所需。 |
要使用多部LSD的話,必須修改QS的設定檔conf/qs.conf,請找一個LSD_SERVO的變數,假設有三部LSD
server,IP分別是a1.a2.a3.a4、b1.b2.b3.b4、c1.c2.c3.c4,假設這幾部機器的LSD都跑在port
10025,則請在qs.conf中加入以下三行: |
LSD_SERVO= a1.a2.a3.a4:10025 |
LSD_SERVO= b1.b2.b3.b4:10025 |
LSD_SERVO= c1.c2.c3.c4:10025 |
接下來請看qs.conf裡面另一個變數LSD_POLICY,這個變數的值和意義如下: |
| LSD_POLICY |
說明 |
| 1 |
QS會以round-robin 的方式分派郵件給各部LSD
server處理。 |
| 2 |
QS會把郵件送給第一部正常的LSD處理,直到該部LSD出現錯誤,或暫時沒有回應才將郵件分派給下一部LSD。
|
|
此外這三部LSD的目錄lsd_async目錄,需要透過NFS mount的方式,掛上QS的lsd_async這個目錄。 |
|
| Q1.4-7. |
可以讓NOPAM支援多部的MTA郵件主機嗎? |
A. 是的,可以。 |
假如貴單位原本就有多部MTA郵件主機,為分散流量而一同收取某個特定domain的郵件,NOPAM也支援這種運作模式,甚至可在遞送郵件的同時,將流量平均的分配到多部MTA郵件主機之上。 |
以下說明將假設前端(incoming)MTA主機與後端(outgoing)MTA主機是安裝在同一部伺服器上。 |
若遇到某部郵件主機沒有回應或網路連線中斷,NOPAM會自動避開該部MTA主機,僅將郵件送給其他正常的MTA郵件主機。待出問題的MTA主機恢復正常,NOPAM會自動偵測,並再將該部主機納入平均分配流量的主機範圍內,後續繼續將新的信件轉交其處理。 |
要使用多部MTA郵件主機的話,必須修改LSD的設定檔conf/lsd.conf,請找裡面一個HOP_MAP的變數,假設有三部MTA郵件,IP分別是a1.a2.a3.a4、b1.b2.b3.b4、c1.c2.c3.c4,假設這幾部機器的MTA
daemon (可能是sendmail或postfix)分別跑在port 10024、10025、10025,則HOP_MAP的變數值可以這樣設定
(請寫成一行,勿如下斷成兩行): |
HOP_MAP= a1.a2.a3.a4,b1.b2.b3.b4,c1.c2.c3.c4;
a1.a2.a3.a4:10024,b1.b2.b3.b4:10025,c1.c2.c3.c4:10025 |
|
以上例作說明之,若信件是來自以下幾個IP:a1.a2.a3.a4、b1.b2.b3.b4或c1.c2.c3.c4,則信件在LSD處理完之後,請將其依照負載平衡的原則,轉交到a1.a2.a3.a4:10024、b1.b2.b3.b4:10025或c1.c2.c3.c4:10025,並自動避開連線上有問題的MTA郵件主機。 |
此外,請再看conf/lsd.conf設定檔裡面NO_HOP_MAP_FOR_HAM與NO_HOP_MAP_FOR_SPAM這個變數。 |
要讓被LSD判斷為正常信(HAM)的信,能透過HOP_MAP進行多部MTA主機的自動郵件派發,則NO_HOP_MAP_FOR_HAM要設定為0,否則假如NO_HOP_MAP_FOR_HAM=1,則該正常信會被直接送往HAM_SERVO所載的MTA主機,而不管它原先是從哪一部MTA主機進入NOPAM系統。 |
同樣要讓被LSD判斷為垃圾信(SPAM)的信,能透過HOP_MAP進行多部MTA主機的自動郵件派發,則NO_HOP_MAP_FOR_SPAM要設定為0,否則若NO_HOP_MAP_FOR_SPAM=1,則該正常信會被直接送往SPAM_SERVO所載的MTA主機,而不管它原先是從哪一部MTA主機進入NOPAM系統。 |
|
| Q1.4-8. |
可以讓NOPAM完全不要修改經手的郵件的標頭嗎? |
A. 可以,但確定要這麼做嗎? |
這麼做的話,NOPAM將不會去動郵件的檔頭(header),以下訊息都會被省略: |
| 1. 不會加入任何X-NOPAM-status的訊息。 |
| 2. 不會更改郵件的subject,就算是病毒信或垃圾信也不會更動。 |
| 3. 不會加入"Received from xxxxx by NOPAM..."之類的訊息。 |
請看conf/lsd.conf設定檔裡NO_QS_HEADER這個變數,只要把值設定為0,就可達成要NOPAM不修改郵件標頭的目的。 |
|
| Q1.4-9. |
我有設定要對所有經手的信件進行備份,且有設定捨棄垃圾信不要遞送,但我發現垃圾信並沒有被備份下來,請問該怎麼作才能讓垃圾信也備份下來? |
A.當對所有經手的信件進行備份,且有設定捨棄垃圾信不要遞送,表示conf/lsd.conf設定檔裡的這幾個變數值如下: |
| MAIL_ARCHIVE=1 |
| SPAM_DELIVERY_ACT=drop |
雖有設定MAIL_ARCHIVE=1,但被丟棄的垃圾信卻不會被備份下來,若希望垃圾信也要納入備份的範圍,那麼請將lsd.conf裡面這幾個變數設定成: |
| MAIL_ARCHIVE=1 |
| SPAM_DELIVERY_ACT=deliver |
| SPAM_SERVO=0.0.0.0:10040 |
| NO_HOP_MAP_FOR_SPAM=1 |
| 其中10040是一個可以隨便輸入的數值(介於10000~20000的整數)。 |
如此設定的話,垃圾信不會被送回使用者信箱(或遞送給後端的MTA郵件主機),而且可以備份下來。 |
|
| Q1.4-.10 |
我的FreeBSD版本是5.x,我使用的MTA主機是Sendmail,我發現sendmail的log裡面偶而會有I/O
error的訊息,請問該如何排除? |
A.我們發現FreeBSD 5.x上的sendmail與NOPAM有匹配上的問題。信件仍可透過NOPAM正常處理,但是無法避免這個錯誤訊息。 |
若主機的作業系統是FreeBSD 5.x,我們建議將MTA改採postfix。 |
|
| Q1.4-11. |
我有使用Dcc,啟動NOPAM後每隔一段時間,偶爾會在畫面上看到類似這樣的訊息,這是什麼意思? |
|
no answer from dcc2.dcc-servers.net (198.137.254.147,6277)
after 14023 ms |
|
continue not asking DCC 16 seconds after failure |
|
| Q1.4-12. |
我的郵件主機每天經手的郵件非常多,負載很重,偶而會發現clamd長時間造成非常高的CPU負載(例如數分鐘不間斷),請問怎麼辦? |
A. 在郵件主機本身負載很高的情況下,clamav 可能會承受不了過高的流量而產生異常的現象。 |
這些可能的異常包含,clamd可能吃掉所有的CPU資源而且不會停止,立即的解決辦法是請停掉clamav (直接kill掉clamd這個process即可),然後再重新啟動。 |
請嘗試著將clamav更新到最新的版本,若問題仍然無法解決,可以嘗試在crontab裡面,將clamav定期重新啟動,至於重新啟動的週期長短,則視主機負載與clamav的狀況而定,一般來說即使主機負載很重,一個小時重新啟動一次clamav也是非常安全的。 |
|
| Q1.4-13. |
來自部分的MTA所寄出的信有不少被判定為SPAM,可是我很確定它是合法的郵件主機,送出的信應該絕大多數都是正常信,請問怎麼會這樣? |
A. 有些郵件主機雖然目前是正常的,但是過去曾經被用來發送大量的垃圾信,而且被許多國外的反垃圾信組織列入黑名單,因此會有此一現象。從那些被列為黑名單的郵件主機發信,信件不只可能會被NOPAM將信件判為SPAM,就算您寄到其他地方,也會有非常高的機率被別的郵件主機當作垃圾信處理。 |
| 我們無法代替您把貴單位的郵件主機從國外反垃圾信組織的黑名單中移除,但是假如您遇到這個狀況,而且您是使用NOPAM
的ASP服務,請和我們的ASP服務提供者聯絡,針對這些主機,經過我們查證後假如沒問題,可以強制設定放行。 |
|
| Q1.4-14. |
採用Loop Around模式安裝,前端之MTA與nopam安裝於同一台機器,使用sendmail,於啟動nopamctl
之後錯誤訊息:
Error:Switch to the user specified duing installation before starting
NOPAM,應該如何解決? |
| A. 請先把執行者的身份切換成當初安裝NOPAM時,在安裝程序中所輸入套件所屬的USER身份,然後才啟動LSD。勿使用root的身份去啟動。 |
|
| |
| 1.5其他 |
| Q1.5-1. |
NOPAM會有除了FreeBSD之外,其他作業系統的版本嗎? |
|
| Q1.5-2. |
我安裝和使用上遇到問題,該向誰求助? |
A. 可將遇到的問題email至nopam_dev@ccu.edu.tw。
|
|
| Q1.5-3. |
我找到一個bug,該向誰回報? |
|
| Q1.5-4. |
NOPAM有提供"專業服務"嗎? |
|
| Q1.5-5. |
請問我們是一般公司行號,想使用NOPAM來過濾公司郵件,需要購買授權的嗎?如需要如何購買呢? |
A. 若使用後的確對貴公司有所助益,我們希望貴公司能捐贈贊助一些經費(金額自訂) 給中正大學,以支持我們持續將系統改進得更完善,但不勉強,感謝您的詢問。 |
|
| |
| 1.6 Nopam 1.2版新增功能 |
| Q1.6-1. |
什麼是NOPAM的Web Management Console? |
| A. NOPAM本身內建有一套web server,讓管理者可以透過瀏覽器直接操作NOPAM本身部分的管理功能,或察看即時的處理訊息,全名是Web
Management Console,簡稱WMC。 |
| 要開啟NOPAM的WMC,您必須在conf/qs.conf中,設定WMC_ACTIVATE這個變數,當設定為"
WMC_ACTIVATE=1"時,NOPAM就會啟用Web Management Console。WMC預設是不開啟。 |
| 啟用WMC後,NOPAM不會listen額外的TCP port,而是和NOPAM中QS這個模組使用相同的TCP port,這代表著同一個TCP
Port同時可以支援SMTP與HTTP兩套通訊協定。 |
| 目前WMC提供的管理功能極為有限,未來會逐步擴充。 |
|
| Q1.6-2. |
可以限制Web Management Console的連線範圍嗎? |
| A. 可以的,假如您有啟動WMC的話,我們建議您對連線範圍加以限制。 |
| WMC的連線控管是以IP來源作為限制,而不是以帳號密碼的方式。您可以透過conf/qs.conf中的WMC_NETWORK這個變數來限制從哪些IP來的連線可以使用WMC。 |
| 這個變數的設定方式和conf/qs.conf裡面MY_NETWORK這個變數的設定方式完全一模一樣,請您參考"Q1.4-1. 可以限定NOPAM只接收來自特定IP的MTA網路連線嗎?"的說明即可。 |
| 以下是一個例子,讓WMC只接受本機與192.168.0.網段的所有機器連線: |
WMC_NETWORK=127.0.0.1, 192.168.0.0/24 |
|
| 假如WDM_NETWORK這個變數沒有輸入任何數值,這表示沒有任何IP可以連線使用WMC。 |
|
| Q1.6-4. |
什麼是Site Report?我可以關閉它嗎? |
| A. Site report是向nopam.ccu.edu.tw回報您的NOPAM主機每天處理的垃圾信和正常信各為多少,內容如同您在WMC中 lsd_statistics_html所看到的畫面。 |
| 假如要關閉這個功能的話,只需要在conf/lsd.conf中,把SITE_REPORT這個變數,設定為"SITE_REPORT=0"即可。 |
| 相對的假如您想開啟site report這個功能的話,您可以設定conf/lsd.conf中的"SITE_REPORT=1"與"MRTG_STATISTICS=1"。 |
|
| Q1.6-5. |
NOPAM會幫我更新Clamav的病毒碼嗎? |
| A. 不會。這不在NOPAM的服務範圍內。您必須自行更新。 |
| Clamav安裝時附有一個freshclam的工具,只要再cron job裡面定期呼叫它,就可以定期將clamav的病毒碼保持在最新的狀態。詳情請參閱clamav的使用說明(http://www.clamav.net/) |
|
| Q1.6-6. |
NOPAM對於經手處理的信件,最長大概會要花多久時間進行判斷?我可以控制這個時間的長短嗎? |
| A. 多數狀況下,當郵件從前端MTA到達NOPAM後,信件會在非常短的時間內馬上就判斷完畢,立刻就由LSD遞送給後端MTA,這個時間多數都在一秒以內。 |
| 但有些少數狀況,可能會使這個時間拉長: |
| 1. 信件本身很大,單單網路傳輸就花很多時間。 |
| 2. 需經過clamav掃瞄是否有病毒,若有很多附件或附件很大,或附件經過層層壓縮,病毒掃瞄在這裡會要花點時間。 |
| 3. 經NOPAM判斷,需要透過DCC向外尋外遠端的public DCC server |
| 4. 經NOPAM判斷,需要透過RBL向國外的反垃圾信組織比對來源IP是否在黑名單內 |
| 5. 網路環境本身有問題,連線速度緩慢 |
| 您可以透過conf/lsd.conf裡面的一些變數,來控制最大允許處理的時間(*): |
| 變數名稱 |
說明 |
| MAX_WAIT_SEC |
NOPAM總處理時間不得超過MAX_WAIT_SEC秒。總處理時間包含,NOPAM的核心處理時間、病毒掃瞄時間、DCC查詢時間、RBL查詢時間等,但不包含郵件本身在網路傳輸的時間,也不包含在郵件佇列中等待處理的時間。 |
| MAX_MILTER_EXEC_SEC |
NOPAM核心處理時間不得超過MAX_WAIT_SEC秒。核心處理時間是包含在總處理時間之內 |
| EXT_WAIT_SEC_PER_MB |
假如信件超過1MB,每增加1MB,允許總處理時間增加幾秒 |
| MAX_VIRUS_SCAN_SEC |
NOPAM允許clamav掃瞄信件最長的時間(單位:秒) |
|
| 註*:在超過最大允許處理時間還沒有完成處理的郵件,該階段的檢查會直接略過。 |
| 註**:除非您的主機或網路環境特殊,不然多數狀況下沒有必要調整NOPAM預設各種檢查的最大處理時間。 |
|
| Q1.6-.7 |
除了使用qsq_cleaner這個工具程式外,有其他方法讓NOPAM立即對郵件佇列中的信件開始遞送嗎? |
| A. 有的,您可以使用bin/qsq_manager。前面的FAQ已經大致介紹過qsq_manager的用法,從Nopam 1.2版以後,qsq_manager可以針對不同的郵件佇列分別進行刪除或遞送。您可以從下面這個使用說明,針對不同的郵件佇列,分別進行處理: |
> cd bin
bin> ./qsq_manager
QuantumSwitch Queue Manager v1.2 (C)Copyright 2005 by Monkia
./qsq_manager cmd [lsd.conf] [lsd_milter.conf]
BYPASS = deliver unchecked mails as HAM (in->ham)
RESET_HAM = delete undelivered ham (ham)
RESET_SPAM = delete undelivered spam (spam)
RESET_SUSPEND = delete suspended mails (suspend)
RESET = delete undelivered mails (ham+spam+suspend)
RESET_ALL = delete all mails (in+ham+spam+suspend)
RESET:RMTA_DN = delete undelivered mails from RMTA_DN
NUM = show queued mail number
INFO = show mail queue info
FLUSH_HAM = send ham mails immediately (ham)
FLUSH_SPAM = send spam mails immediately (spam)
FLUSH = send suspended mails immediately (suspend)
FLUSH_ALL = send undelivered mails (ham+spam+suspend)
* default lsd.conf assumed to be ../conf/lsd.conf
* default lsd_milter.conf assumed to be ../conf/lsd_milter.conf
|
|
| 以SPOOL_SUSPEND這個郵件佇列為例,從上面的使用說明可以知道,可以透過FLUSH這個參數來立即遞送這個佇列裡面的郵件。當NOPAM管理員下達: |
|
| NOPAM會馬上呼叫qsq_cleaner開始遞送SPOOL_SUSPEND這個郵件佇列裡面的郵件,至於實際呼叫的qsq_cleaner時所下達的參數,則是使用conf/lsd.conf中SUSPEND_Q_CLEANER這個變數所載的參數呼叫。 |
|
| Q1.6-8. |
我是以Loop-Around的方式安裝Nopam,這種狀況下Nopam有退信的功能嗎? |
| A. 沒有。 |
在Loop-Around中,信件的流程是: sender MTA -> internet -> incoming MTA -> Nopam -> outgoing MTA |
|