nopam user manual v6 - airpac models · nopam 開發小組 2 1 系統需求、軟體下載 1.1...

51
Nopam 使用手冊 無痛式郵件過濾系統使用手冊 2005/11 revision 6 http://nopam.ccu.edu.tw 國立中正大學電算中心、網際網路研究中心

Upload: others

Post on 01-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Nopam 使用手冊無痛式郵件過濾系統使用手冊 2005/11 revision 6

http://nopam.ccu.edu.tw

國 立 中 正 大 學 電 算 中 心 、 網 際 網 路 研 究 中 心

Nopam 開發小組1

索 引

1 系統需求、軟體下載.............................................................................................................2

1.1 硬體需求....................................................................................................................2

1.2 軟體需求....................................................................................................................2

1.3 軟體下載....................................................................................................................3

2.NOPAM 架構說明 ................................................................................................................4

2.1 以 Loop-Around 模式安裝 NOPAM........................................................................5

2.2 以 Proxy 模式安裝 NOPAM ....................................................................................6

2.3 進階 Proxy 模式 .......................................................................................................7

2.4 以 ASP 模式安裝 NOPAM........................................................................................8

2.5 不同安裝方式間的比較與考量 ................................................................................9

2.6 NOPAM 使用的 TCP Port ..........................................................................................9

3.NOPAM 安裝 ......................................................................................................................10

3.1 安裝前預先準備工作 ..............................................................................................10

3.2 以 Loop-Around 模式安裝 NOPAM (建議使用) ................................................. 11

3.3 以 Proxy 模式安裝 NOPAM (試驗性質)...............................................................15

3.4 MTA 組態設定.........................................................................................................18

3.4.1 MTA 主機以 Sendmail 為基礎的組態設定 .........................................................19

3.4.2 MTA 主機以 Postfix 為基礎的組態設定 .............................................................20

4.常見問題與回答...................................................................................................................21

4.1 一般問題...................................................................................................................21

4.2 管理問題...................................................................................................................23

4.3 郵件佇列(mail queue)相關問題...............................................................................31

4.4 進階管理與設定問題 ..............................................................................................37

4.5 其他...........................................................................................................................45

4.6 Nopam 1.2 版新增功能 ............................................................................................45

Nopam 開發小組2

1 系統需求、軟體下載

1.1 硬體需求

執行 NOPAM 所需要的硬體會隨著每天必須處理的郵件數目總量不同而有所變

化,以下的清單僅是一個概略性的建議,貴單位可依照自身的狀況適度調整,例如透過

安裝 RAID1 磁碟陣列讓存放的資料更有保障等等。

最低之硬體需求

CPU: Pentium III 800 Mhz 等級以上

RAM: 384 MB

Disk: 10G

建議之硬體需求

CPU: Pentium 4 2.0G Mhz 等級以上

RAM: 512 MB

Disk: 40G

1.2 軟體需求

作業系統:FreeBSD 4.8 以上、或 FreeBSD 5.4(註*)以上。

支援電子郵件伺服器:

依照安裝的方式不同,Nopam 可支援的電子郵件伺服器會有所不同。某些安裝方

式可以支援所有的電子郵件伺服器。有些安裝方式只適用特定的電子郵件伺服器,

例如 sendmail、postfix。詳細的安裝方式與細節,請參閱第三章(NOPAM 架構說明)

與第四章(NOPAM 安裝)。

於安裝 NOPAM 前需事先安裝的第三方軟體:

Curl: http://curl.haxx.se/

Iconv: http://www.gnu.org/software/libiconv/

Dcc: http://www.rhyolite.com/anti-spam/dcc/ (optional)

Clamav: http://www.clamav.net/ (optional)

Nopam 開發小組3

這些軟體可透過 FreeBSD 的 ports 來安裝,其 ports 目錄(註**)分別是:

Curl /usr/ports/ftp/curl

Iconv /usr/ports/converters/libiconv

Dcc /usr/ports/mail/dcc-dccd

Clamav /usr/ports/security/clamav

關於如何使用 port 安裝這些軟體與相關的動態連結函式庫(.so),請翻閱 FreeBSD 使

用說明。

註*:FreeBSD 5.x 需安裝有 FreeBSD 4.x compatible library

(可以從/usr/ports/misc/compat4x 安裝)

註**:隨著 FreeBSD 版本不同,與貴單位當初安裝 FreeBSD 的方式不同,貴單位的 ports

套件的目錄位置可能不同於上述的目錄位置。

註***:Nopam 尚未正式支援 FreeBSD 6.x

1.3 軟體下載

NOPAM 軟體,可以從以下 URL 下載 :

http://nopam.ccu.edu.tw/download.htm

Nopam 開發小組4

QS

LSD

HAM SPAM

Outgoing mail

GSD

NOPAM

Spam spool SCU

(optional)

Incoming mail

2.NOPAM 架構說明

NOPAM 系統包含四個模組:

1.QS (Quantum Switch):Quantum Switch 本質上是一個郵件收送之核心系統,它的角色

就如同一般郵件系統之 MTA 部分,例如一般常用的 sendmail 或 postfix 程式。QS 負

責和正常郵件系統之間的的信件溝通。

2.LSD (Local Spam Detection):LSD daemon 是一個 server 模組,它用來嵌入垃圾郵件

過濾程式。

3.GSD (Global Spam Detection):LSD 是第一線的過濾程式,GSD 是 spam mail 資料庫

與統計分析中心,它會提供 spam mail features db 更新到 LSD。

4.SCU (Spam Checking User Interface):SCU 模組是一個 Web Based mail reader。

NOPAM 會把過濾出來的垃圾信存放在 SCU 伺服器。使用者如果需要可以在 SCU

檢視垃圾信。SCU 可以安裝也可以不安裝,若取得的 NOPAM 安裝套件裡沒有包含

SCU 模組(註),貴單位也可以透過將郵件標題加上特定標記,由貴單位的郵件軟體據

之進行分類,這樣亦可達到相同的效果(細節請參閱 Q4.2-9, 如何修改垃圾信或病毒信

的標題)。

註:目前已釋出的 noapm 1.0/1.1/1.2 套件皆不包含 SCU 模組,未來若有提供將另行通知。

因無 SCU 的關係,nopam 不會將垃圾信扣留在伺服器上,現階段的 nopam 使用者,

預設使用透過在郵件標題加上特定標記的方式,來進行是否為垃圾信的判別方法,

使用者可透過自己的現有郵件閱讀軟體,針對這些被加入的特定標記,進行篩選後

分類。

這四個模組間的關係如下圖所示:

Nopam 開發小組5

Internet

MTA 1

NOPAM

User mailbox

MTA 2

DNS MXport 25

Internet

MTA 1

NOPAM

HAMSPAM

User mailboxSpam spool

DNS MXport 25

NOPAM 提供三種套用的安裝模式分別是 Loop-Around mode Proxy mode ASP mode

因市面上電子郵件伺服器軟體版本眾多,而且各有不同的功能與限制,受限於篇

幅,我們無法在此針對個別的 MTA 軟體在此一一介紹 NOPAM 要如何與之整合。在

NOPAM 手冊與安裝套件中,我們僅針對 Sendmail 與 Postfix 作較詳細的說明。至於其

他的MTA軟體,無論其是否有公開的介面可供調整與否,幾乎都可使用NOPAM的 proxy

mode 與之整合,詳細細節請自行參考貴單位所使用的 MTA 軟體的說明。

2.1 以 Loop-Around 模式安裝 NOPAM

1. Loop-Around mode:由原本收發信件的郵件主機(MTA)面對 Internet,收取來自外部的

信件,之後將郵件轉交給 NOPAM 進行垃圾信判斷之後,放行的郵件再轉發回給郵件

主機(MTA),由其繼續完成剩下的郵件遞送過程。

Loop-Around 安裝方式適合當 MTA 是可以很有彈性的調整遞送路徑時使用,諸如

常見的 Sendmail 或 Postfix 都適用這個方式。Loop-Around 模式中,NOPAM 與 MTA 只

要將使用的 TCP Port 適度設定,可以全部安裝在同一部機器上,適合沒有額外硬體而且

負載不高的環境。

類型一:將 Spam 與 Ham 以不同路徑遞送,分

別交由兩部不同的後端處理(註*)。

類型二:將 Spam 與 Ham 以相同路徑遞送,但在信件

標題(subject)或檔頭(header)加上特定標記識別 (註**)。

註*:NOPAM 可獨立安裝於一部機器上,也可以與 MTA 1 安裝在同一部機器上。註**:MTA1 與 MTA2 分別稱為前端 MTA(incoming MTA)與後端 MTA (outgoing MTA),這兩者可同

Nopam 開發小組6

在一部主機上,也可以分開裝在兩部獨立的機器上。

2.2 以 Proxy 模式安裝 NOPAM

有些 MTA 並非市面上常見軟體,可能是特殊規格或量身訂作專屬軟體,或根本沒

有相關的使用說明,因此難以類似透過 Loop-Around 的方式經過調整後和 NOPAM 整合。

對於這類的 MTA 可使用 Proxy 的模式來安裝 NOPAM,分別將 NOPAM 與現有的

MTA 分裝於兩部不同的主機上,讓原有的 MTA 主機在結構和架構上維持不變,由

NOPAM 直接面對 Internet,收取來自外部的信件,進行垃圾信判斷之後,才將放行的郵

件遞送給原本收發信件的郵件主機(MTA)。

類型一:將 Spam 與 Ham 以不同路徑遞送,分別交

由兩部不同的後端處理。

類型二:將 Spam 與 Ham 以相同路徑遞

送,但在信件標題(subject)或檔頭(header)

加上特定標記識別。

Internet

NOPAM

User mailbox

MTA

DNS MX

port 25

port 25

Internet

NOPAM

MTA

HAMSPAM

User mailboxSpam spool

DNS MXport 25

port 25

Nopam 開發小組7

2.3 進階 Proxy 模式

為讓收取來自 Internet 的郵件更穩定,並善用現有 Sendmail/Postfix 豐富的功能來進

行郵件的遞送控管,可採用進階的 Proxy 模式,將 Sendmail 或 Postfix 與 NOPAM 安裝

在同一部機器上,由 Sendmail/Postfix 收取來自 Internet 的郵件,之後才轉由 NOPAM 進

行過濾,最後才轉交至貴單位真正的電子郵件主機,其示意圖如下:

注意:在第四章的 NOPAM 安裝中,我們僅針對基本的 proxy 模式提供自動化的程式安

裝,這一小節所描述的進階 proxy 安裝模式,可翻閱 Sendmail/Postfix 的使用手冊,

自行調整。

Internet

NOPAM

User mailbox

MTA

DNS MX

port 25

port 25

NOPAM

port 25

MTASendmailor Postfix 同一部

機器

Nopam 開發小組8

2.4 以 ASP 模式安裝 NOPAM

除使用 Loop-Around mode 外,Proxy mode 需要一部額外的主機來安裝 NOPAM,

而且在 Loop-Around mode 中,除非貴單位電子郵件的流量不大,否則也不適合將

NOPAM 與現有的 MTA 安裝在同一部主機上。

畢竟額外維護一部網路主機的軟硬體設定需要花功夫,安裝與設定 NOPAM 也需要

和網路相關的 know-how,若不想花額外功夫維護一部網路主機,也不想費心神瞭解如

何設定 NOPAM,但又希望享受 NOPAM 帶來的好處,那麼透過 ASP 模式使用 NOPAM

會是最好的選擇。

在 ASP 模式下,使用者事先與 NOPAM

ASP 服務提供者申請使用這項服務。

原則上貴單位可選擇是否把 first

priority 的 DNS MX 指向 NOPAM ASP

的主機。

若選擇把 first priority DNS MX 指向

NOPAM ASP 主機,則貴單位所有來自

Internet 的郵件都會先經過 NOPAM

ASP 處理後,才會送回貴單位。對單位

僅需調整本身的 MTA,使其接受來自

NOPAM ASP 的郵件即可。

若貴單位選擇不將 first priority DNS MX 指向 NOPAM ASP 主機,則貴單位所有來

自 Internet 的郵件會直接先到貴單位的郵件主機。在這些信件裡,若希望部分的郵件能

由 NOPAM 過濾,可將需要過濾的郵件轉至 NOPAM ASP 主機。

因 ASP 安裝模式牽涉到需要有遠端的 NOPAM ASP 服務提供者,NOPAM 安裝套

件中並沒有提供 ASP 模式的安裝程式,若希望使用此一方式使用 NOPAM 服務,請和

NOPAM ASP 服務提供者接洽設定細節。

Internet

NOPAM ASP

MTA

User mailbox

First priorityDNS MX1

2 3

4

5

Second priorityDNS MX

Nopam 開發小組9

2.5 不同安裝方式間的比較與考量

NOPAM 有 Loop-Around、Proxy、進階 Proxy 與 ASP 數種安裝模式,這四種安裝方

式的比較如下:

Loop-Around Proxy 進階 Proxy ASP

安裝建議 推薦使用 實驗性質 推薦使用 推薦使用

是否可以透過安裝套

件,自動安裝?

可以 可以 不可以 不可以

設定難易度與

日後維護

一般 一般 一般 非常簡單

是否需要修改原有

DNS 中的 MX?

不用 不一定 不一定 不一定

是否需將NOPAM安裝

獨立於 MTA 的另一部

機器?

不一定 需要 需要 不需要

現有的 MTA 若不是

Sendmail/Postfix,

是否適用?

可能不合適 合適 合適 合適

2.6 NOPAM 使用的 TCP Port

NOPAM 預設會使用 10024~10032 的 TCP port,因此若貴單位用來安裝 NOPAM 的

主機上有相關的程式會使用到這些 TCP port,請預先將其他程式使用的 port 移開。或於

安裝 NOPAM 時,指定其他的 TCP port 安裝。

Nopam 開發小組10

3.NOPAM 安裝

如同第三章所述,NOPAM 有許多種不同的安裝方式,但因牽涉到使用者使用的

MTA 軟體各有不同,與電子郵件環境的複雜性,我們無法針對所有的安裝方式提供自

動化的安裝程式。在 NOPAM 釋出的套件中,我們只針對 Loop-Around 與 Proxy 兩種基

本的安裝模式,提供自動化的安裝程式。

3.1 安裝前預先準備工作

安裝 NOPAM 前,請先確定系統已預先安裝以下的軟體,而且這些軟體的動態連結

函式庫(.so)有位於環境變數 shared library 的搜尋路徑內:

Curl: http://curl.haxx.se/

Iconv: http://www.gnu.org/software/libiconv/

Dcc: http://www.rhyolite.com/anti-spam/dcc/ (optional)

Clamav: http://www.clamav.net/ (optional)

若安裝 FreeBSD 時,有安裝 port 套件,則可分別從 /usr/ports/ftp/curl 、

/usr/ports/mail/dcc-dccd、/usr/ports/converters/libiconv 以 ports 套件安裝,安裝完畢後,有

幾點要特別注意,上述三個套件的.so 檔必須位於 shared library 的搜尋路徑內。curl 與

iconv 在安裝完畢後,無須額外設定即可正常運作,但是請留意 Dcc,需確定 dcc 可以正

確與遠端的 checksum server 連線,詳細說明請參考 dcc 網頁。

其中 dcc 與 clamav 非必要安裝的項目。即使沒有這兩個項目,NOPAM 還是可以正

確運行。Dcc 可以提供 NOAPM 使用第三方公司提供的垃圾信資料庫,作為判斷時的參

考。Clamav 則可以讓 NOPAM 擁有病毒信的過濾和偵測功能。

請將於 2.3 節取得的 NOPAM 安裝程式,先行解開:

# tar xfz nopam_RELEASE_x.x.tgz

解開之後會得到一個名為 nopam_setup 的目錄,請將工作目錄切換進入該目錄內,並切

換成 root 身分:

# cd nopam _setup#

Nopam 開發小組11

3.2 以 Loop-Around 模式安裝 NOPAM (建議使用)

安裝時,若希望以中文訊息顯示安裝步驟,請執行:

# ./setup b5

安裝時,若希望以英文訊息顯示安裝步驟,請執行:

# ./setup

以下是詳細的安裝步驟會出現的畫面,其中藍色的部分是文件附加的說明,安裝過程中

系統會提示輸入一些設定,若直接按下 ENTER,則表示接受方括號內的預設值:# cd nopam_setuppostfix# lsREADME bin conf doc file sample setuppostfix# ./setup

---------------------------| The NOPAM Setup Program |---------------------------

Your OS is FreeBSD 4.11-RELEASE.

1) Install NOPAM0) Quit

Please enter your choice (0-1): 1

Select terminal type? (c)olor/(m)ono [c] c

System requirements:C Library version 4 or abovecURL Library version 3 or aboveICONV Library version 3 or aboveDistributed Checksum Clearinghouse [Optional]ClamAV [Optional]

Please select installation mode:1) Proxy Mode2) Loop-Around Mode

Please enter your choice (1-2): 2 表示要以 Loop-Around mode 安裝

+ Checking ID [ OK ]若未事先安裝 CURL 這個軟體,將會看到這個訊息:** [Warning] ** Please install cURL Library version 3 or above first!!出現這個訊息,NOPAM 還是可以繼續安裝,但安裝完將無法正常啟動,因此請務必於安裝 NOPAM 前先依照 3.1 節的說明,安裝必要的軟體。

Please enter the path of dccproc (e.g. /usr/local/bin/dccproc) [none]:若未事先安裝 DCC 這個軟體,可以按 ENTER 直接跳過。如果輸入的路徑找不到需要的檔案,將會看到這個訊息:** [Optional] ** Please install DCC first!!出現這個訊息,NOPAM 還是可以繼續安裝,安裝完也可以正常運作,只是無法參考外部的 SPAM 資料庫。若希望 NOPAM 可以使用外部資料庫,輔助垃圾信的判斷,請

Nopam 開發小組12

依照 4.1 節的說明,安裝 dcc。

Please enter the IP address of clamd (e.g. 127.0.0.1) [none]:+ IP of this host: 127.0.0.1 [ OK ]若未事先安裝 clamav 這個軟體,可以按 ENTER 直接跳過。如果輸入的路徑找不到需要的檔案,將會看到這個訊息:** [Optional] ** Please install ClamAV first!!出現這個訊息,NOPAM 還是可以繼續安裝,安裝完也可以正常運作,只是無法參考外部的 SPAM 資料庫。若希望 NOPAM 可以使用外部資料庫,輔助垃圾信的判斷,請依照 4.1 節的說明,安裝 clamav。

Please enter the port of clamd (e.g. 3310) [3310]:+ Port to be used: 3310 [ OK ]

Please enter the target directory [/usr/local/nopam]:+ Target directory: /usr/local/nopam [ OK ]+ Making directory /usr/local/nopam [ OK ]+ Checking HD space [ OK ]

Please enter QS (Quantum Switch) Daemon port number [10024]:+ Port to be used: [ OK ]

Please enter LSD (Local Spam Detection) Daemon port number [10025]:+ Port to be used: [ OK ]

Please enter Agent port number [10030]:+ Port to be used: [ OK ]

以下這個項目請依照貴單位實際狀況回答,使用預設不一定與貴單位的環境一致。Please enter incoming MTA Server IP address [127.0.0.1]:+ IP of this host: 127.0.0.1 [ OK ]

Please enter outgoing MTA Server IP address [auto]:+ IP of this host: auto [ OK ]

以下這個項目請依照貴單位實際狀況回答,使用預設不一定與貴單位的環境一致。Please enter outgoing MTA Server port number [10023]:+ Port to be used: 10023 [ OK ]

Do you want to backup ALL processed mails? (y)es/(n)o [n]

Do you want to modify spam mail subject? (y)es/(n)o [y]

以下這個項目請接受預設值,除非貴單位另有架設 SPDB 伺服器。SPAM DB auto update from URL [http://spdb.nopam.ccu.edu.tw/]:+ SPAM DB: http://spdb.nopam.ccu.edu.tw/ [ OK ]

Emergency status report to email [root@localhost]:

MY_NETWORK=127.0.0.1HAM_SERVO=127.0.0.1:10023SPAM_SERVO=127.0.0.1:10023NO_HOP_MAP_FOR_HAM=1NO_HOP_MAP_FOR_SPAM=1MAIL_ARCHIVE=0LOG_ALL=SPAM_DELIVERY_ACT=submodifySPAM_SERVO_SPLIT=SPAM_PROTOCOL_SPLIT=SMTPSPDB_UPDATE=http://spdb.nopam.ccu.edu.tw/

Nopam 開發小組13

NOPAM_REPORTER=root@localhostNOPAM_CHECK_VIRUS=1NOPAM_AV_SERVO=127.0.0.1:3310

Correct? (y)es/(n)o [y][ OK ]

Please enter the user name [nopam]:+ User name: nopam (888) [ OK ]若系統裡沒有 nopam 這個 user,會出現以下訊息:** [Error] ** User doesnot exist! This program will create for you安裝程式稍後會自動建立這個 USER。

Please enter the group name [nopam]:+ Group name: nopam (888) [ OK ]若系統裡沒有 nopam 這個 group,會出現以下訊息:** [Error] ** Group doesnot exist! This program will create for you安裝程式稍後會自動建立這個 GROUP。

+ Making backup directory /usr/local/nopam/bak [ OK ]

+ Configuring user [ OK ]

New password:Password unchanged.passwd: /etc/master.passwd: unchanged

+ Installing software, please wait ... [ OK ]+ Saving configuration [ OK ]+ Saving rc script [ OK ]

INSTALL COMPLETE!

+ Configuring crontab [ OK ]Do you want to update SPAM DB now? (y)es/(n)o [y]

Do you want to startup NOPAM? (y)es/(n)o [y]Starting QS若未事先安裝 CURL 這個軟體,將會看到數次以下訊息:/usr/libexec/ld-elf.so.1: Shared object "libcurl.so.3" not found, required by xxx出現這個訊息,NOPAM 將無法正常啟動,因此請務必於安裝 NOPAM 前先依照 3.1節的說明,安裝必要的軟體。

Starting QSStarting LSDStarting Agent#

Nopam 開發小組14

以下列出安裝過程中部分選項,在管理者輸入資料後,安裝程式依據該輸入修改那個設

定檔的那個值,方便管理者對照,可於日後要更改安裝設定時的參考:

0. pre-installation check (pkg:pkg:libcurl>=7.9.x)1. default server port checking & configuration

[qs:10024, lsd:10025, agent:10030]qs_server.conf: INTERNET_SERVER_PORT=lsd_server.conf: INTERNET_SERVER_PORT=agent_server.conf: INTERNET_SERVER_PORT=

2. incoming MTA server IP [127.0.0.1]qs.conf: MY_NETWORK=127.0.0.1

3. outgoing MTA server address [auto]4. outgoing MTA server port [10023]

若步驟三選 auto,請填:lsd.conf: HAM_SERVO=127.0.0.1:port <-port 是步驟 4 的 PORTlsd.conf: SPAM_SERVO=127.0.0.1:portlsd.conf: NO_HOP_MAP_FOR_HAM=1lsd.conf: NO_HOP_MAP_FOR_SPAM=1

若步驟三填入一個 IP,請填:lsd.conf: HAM_SERVO=IP:port <-port 是步驟 4 的 PORTlsd.conf: SPAM_SERVO=IP:portlsd.conf: NO_HOP_MAP_FOR_HAM=1lsd.conf: NO_HOP_MAP_FOR_SPAM=1

6. backup ALL processed mails [y/n]lsd.conf: LOG_ALL=(沒有變數值表示 NO,填入 1 表示 YES)

7. modify spam mail subject [y/n]lsd.conf: SPAM_DELIVERY_ACT=

Y: submodifyN: sent

8. SPAM DB auto update from server [http://spdb.nopam.ccu.edu.tw/]lsd.conf: SPDB_UPDATE= http://spdb.nopam.ccu.edu.tw/

9. setup NOPAM startup script [/etc/rc.d/rc.local, /etc/init.d]

10. Emergency status report to email [root@localhost]check_mail_log.conf: 將該 email address 放入這個檔案的第一行。

Nopam 開發小組15

3.3 以 Proxy 模式安裝 NOPAM (試驗性質)

* Proxy 的安裝模式目前仍屬試驗性質,適合用於非正式的實驗環境。

安裝時,若希望以中文訊息顯示安裝步驟,請執行:

# ./setup b5

安裝時,若希望以英文訊息顯示安裝步驟,請執行:

# ./setup

以下是詳細的安裝步驟會出現的畫面,其中藍色的部分是文件附加的說明,安裝過程中

系統會提示輸入一些設定,若直接按下 ENTER,則表示接受方括號內的預設值:# ./setup

---------------------------| The NOPAM Setup Program |---------------------------

Your OS is FreeBSD 4.11-RELEASE.

1) Install NOPAM0) Quit

Please enter your choice (0-1): 1

Select terminal type? (c)olor/(m)ono [c]

System requirements:C Library version 4 or abovecURL Library version 3 or aboveICONV Library version 3 or aboveDistributed Checksum Clearinghouse [Optional]ClamAV [Optional]

Please select installation mode:1) Proxy Mode2) Loop-Around Mode

Please enter your choice (1-2): 1 表示要以 proxy mode 安裝

+ Checking ID [ OK ]若未事先安裝 CURL 這個軟體,將會看到這個訊息:** [Warning] ** Please install cURL Library version 3 or above first!!出現這個訊息,NOPAM 還是可以繼續安裝,但安裝完將無法正常啟動,因此請務必於安裝 NOPAM 前先依照 3.1 節的說明,安裝必要的軟體。

Please enter the path of dccproc (e.g. /usr/local/bin/dccproc) [none]:若未事先安裝 DCC 這個軟體,可以按 ENTER 直接跳過。如果輸入的路徑找不到需要的檔案,將會看到這個訊息:** [Optional] ** Please install DCC first!!出現這個訊息,NOPAM 還是可以繼續安裝,安裝完也可以正常運作,只是無法參考外部的 SPAM 資料庫。若希望 NOPAM 可以使用外部資料庫,輔助垃圾信的判斷,請

Nopam 開發小組16

依照 4.1 節的說明,安裝 dcc。

Please enter the IP address of clamd (e.g. 127.0.0.1) [none]:+ IP of this host: [ OK ]若未事先安裝 clamav 這個軟體,可以按 ENTER 直接跳過。如果輸入的路徑找不到需要的檔案,將會看到這個訊息:** [Optional] ** Please install ClamAV first!!出現這個訊息,NOPAM 還是可以繼續安裝,安裝完也可以正常運作,只是無法參考外部的 SPAM 資料庫。若希望 NOPAM 可以使用外部資料庫,輔助垃圾信的判斷,請依照 4.1 節的說明,安裝 clamav。

Please enter the port of clamd (e.g. 3310) [3310]:+ Port to be used: 3310 [ OK ]

Please enter the target directory [/usr/local/nopam]:+ Target directory: /usr/local/nopam [ OK ]+ Making directory /usr/local/nopam [ OK ]+ Checking HD space [ OK ]

Please enter QS (Quantum Switch) Daemon port number [25]:+ Port to be used: [ OK ]

Please enter LSD (Local Spam Detection) Daemon port number [10025]:+ Port to be used: [ OK ]

Please enter Agent port number [10030]:+ Port to be used: [ OK ]

Please enter outgoing MTA Server IP address [auto]:+ IP of this host: auto [ OK ]

Please enter outgoing MTA Server port number [10023]:+ Port to be used: 10023 [ OK ]

Do you want to backup ALL processed mails? (y)es/(n)o [n]Do you want to modify spam mail subject? (y)es/(n)o [y]

以下這個項目請接受預設值,除非貴單位另有架設 SPDB 伺服器。SPAM DB auto update from URL [http://spdb.nopam.ccu.edu.tw/]:+ SPAM DB: http://spdb.nopam.ccu.edu.tw/ [ OK ]

Emergency status report to email [root@localhost]:

MY_NETWORK=HAM_SERVO= 127.0.0.1:10023SPAM_SERVO= 127.0.0.1:10023NO_HOP_MAP_FOR_HAM=1NO_HOP_MAP_FOR_SPAM=1MAIL_ARCHIVE=0LOG_ALL=SPAM_DELIVERY_ACT=submodifySPAM_SERVO_SPLIT=SPAM_PROTOCOL_SPLIT=SMTPSPDB_UPDATE=http://spdb.nopam.ccu.edu.tw/NOPAM_REPORTER=root@localhostNOPAM_CHECK_VIRUS=1NOPAM_AV_SERVO=127.0.0.1:3310

Correct? (y)es/(n)o [y][ OK ]

Nopam 開發小組17

Please enter the user name [nopam]:+ User name: nopam (888)

Please enter the group name [nopam]:+ Group name: nopam (888) [ OK ]

+ Making backup directory /usr/local/nopam/bak [ OK ]

+ Configuring user [ OK ]

+ Installing software, please wait ...+ Saving configuration [ OK ]+ Saving rc script [ OK ]

INSTALL COMPLETE!

+ Configuring crontab [ OK ]Do you want to update SPAM DB now? (y)es/(n)o [y]

Do you want to startup NOPAM? (y)es/(n)o [y]Starting QSStarting LSDStarting Agent#

以下列出安裝過程中部分的選項,在管理者輸入資料後,安裝程式依據該輸入修改那個

設定檔的那個值,方便管理者對照,可於日後要更改安裝設定時的參考:1. default server port checking & configuration

[qs:25, lsd:10025, agent:10030]qs_server.conf: INTERNET_SERVER_PORT=lsd_server.conf: INTERNET_SERVER_PORT=agent_server.conf: INTERNET_SERVER_PORT=

2. set MY_HOSTNAME []qs.conf: MY_HOSTNAME=lsd.conf: MY_HOSTNAME=mail_base.conf: MY_HOSTNAME=

3. set MY_DOMAIN []qs.conf: MY_DOMAIN=lsd.conf: MY_DOMAIN=mail_base.conf: MY_DOMAIN=

4. backup ALL processed mails [Y/n]lsd.conf: LOG_ALL=(裡面沒有值表示 NO)

7. modify spam mail subject [Y/n]lsd.conf: SPAM_DELIVERY_ACT=

Y: submodifyN: sent

8. SPAM DB auto update from server [http://spdb.nopam.ccu.edu.tw]lsd.conf: SPDB_UPDATE=http://spdb.nopam.ccu.edu.tw

9. setup NOPAM startup script [/etc/rc.d/rc.local, /etc/init.d]

10. Emergency status report to email [root@localhost]

Nopam 開發小組18

3.4 MTA 組態設定

注意:NOPAM 安裝套件僅針對符合以上所述環境的 MTA 提供自動化的 MTA 設定調整

程式,若貴單位的 MTA 不是 sendmail/postfix,或不是使用 loop-around 的方式與

NOPAM 整合,或不是與 NOPAM 安裝在同一部主機上,請勿使用安裝套件裡的

MTA 自動調整程式進行 MTA 設定調整。請按照貴單位的 MTA 軟體使用說明,

依照第三章的 NOPAM 架構自行調整。

安裝 NOPAM 之後,必須調整貴單位的 MTA 將收到的信件轉由 NOPAM 進行垃圾

信與否的判斷,若採用 loop-around mode 安裝 NOPAM,而且 NOPAM 與 MTA 是安裝

在同一部主機上,若貴單位的 MTA 主機並沒有對 sendmail/postfix 進行特殊調整,則可

以嘗試使用內建的 installation script 自動調整 sendmail/postfix 主要的設定檔,使其與

NOPAM 相銜接。

請看 NOPAM 解開的目錄裡有一 sample 次目錄,若係使用 sendmail,請執行

setup_sendmail.sh 與 start_sendmail.sh,若 MTA 使用的是 postfix,則請執行

setup_postfix.sh。

若貴單位的 MTA 主機和 NOPAM 不是安裝在同一部機器上,或 MTA 主機已特殊

調整過,則請參考 NOPAM 的文件,自行調整 sendmail 與 postfix 的設定。

以下,將以 Loop-Around 安裝模式,概略說明 NOPAM 與 MTA 主機間的搭配關係,下

面所標示的 TCP Port 都是以 NOPAM 安裝時預設的 TCP Port 說明:

將前端的 MTA 主機與後端的 MTA 主機

是同一部機器

將前端的 MTA 主機與後端的 MTA 主機

不是同一部機器

後端

MTA server

Internet

前端

MTA server

NOPAM

1 port 25

2 port 100243 port 10023

Internet

MTA server

NOPAM

1 port 25

2 port 10024

3 port 10023

Nopam 開發小組19

3.4.1 MTA 主機以 Sendmail 為基礎的組態設定

要將 NOPAM 納入 sendmail 的信件處理流程內,必須使用 sendmail dual 的方式調整

sendmail (sendmail dual 的觀念可參考:

http://www.ijs.si/software/amavisd/README.sendmail-dual.txt )。

貴單位必須準備兩套 sendmail,分別稱作

sendmail rx 與 sendmail tx,這兩套 sendmail

可在同一部或不同部機器上。若為不同部

機器,就如右示意圖的結構。

針對 sendmail RX與 sendmail TX貴單位必

須各準備一份 sendmail.cf 供其使用。

其中針對 sendmail RX 的調整基本上就是

將收下來的信存在另外建立的 mail

queue,並轉給 NOPAM 的 10024 這個 port。

針對 sendmail TX 的調整則是將原本 sendmail listen 的 port 25 改成 port 10023,以接

收來自 NOPAM 過濾完的信件。

至於 sendmail RX 與 TX 的 sendmail.cf 的詳細修改細節,可參閱 sendmail dual 說明。

注意*:NOPAM 套件中所附的 setup_sendmail.shc 會幫您調整 sendmail 主要的設定。設

定後請留意更新後的設定與原先的設定在 sendmail M4 設定中使用的

FEATURE 是否一致,若不一致,請自行將不要的 FEATURE 移除或將所需要

的 FEATURE 補上,否則 sendmail 可能會出現錯誤訊息。

注意**:建議在執行 setup_sendmail.sh 前,可以先將系統裡 sendmail 原本的 sendmail.cf

自行備份起來,以備未來不時之需。

MTA serverSendmail TX

Internet

MTA serverSendmail RX

NOPAM

1 port 25

2 port 100243 port 10023

Nopam 開發小組20

3.4.2 MTA 主機以 Postfix 為基礎的組態設定

貴單位可透過修改 postfix 的設定檔將 NOPAM 納入 postfix 的信件處理流程內。

NOPAM 是使用 Postfix 的"before queue content filter 機制"與之進行整合 (詳請請參閱

postfix 的使用手冊 http://www.postfix.org/SMTPD_PROXY_README.html )

在設定後端 MTA 部分,必須找出 postfix 的 mater.cf 設定檔,該設定檔多數可在

/etc/postfix 或/usr/local/etc/postfix 下找到,然後在檔案底部加入這兩行:

127.0.0.1:10023 inet n - - - - smtpd

-o content_filter= -o local_recipient_maps= -o myhostname=localhost

其中 127.0.0.1 這個 IP 指的是後端 MTA 主機的 IP,若 NOPAM 與後端 postfix 的 MTA

主機不是安裝在同一部伺服器上,請將 127.0.0.1 替換成後端 MTA 主機的 IP,並將

myhostname=localhost 的 localhost 改成該主機的名稱。

在設定前端 MTA 部分,請使用 postfix 的 postconf 下達這個指令:

postconf -e "content_filter = smtp:[localhost]:10024"

其中 localhost 這個 IP 指的是 NOPAM 主機的 IP,若 NOPAM 與 postfix 的 MTA 主機不

是安裝在同一部伺服器上,請將 localhost 替換成 NOPAM 主機的 IP。

注意**:建議在執行 setup_postfix.sh 前,可先將系統裡 postfix 原本的 main.cf 與 master.cf

自行備份起來,以備未來不時之需。

Nopam 開發小組21

4.常見問題與回答

4.1 一般問題

Q4.1-1. 什麼是 NOPAM?A. NOPAM 是一套垃圾信的過濾與攔截軟體,擁有以下特點:

垃圾信偵測率高

執行效率非常快速

很好的穩定性與可靠度

極易安裝(無須設定白名單/黑名單)

沒有語系的問題

在未來延伸性上,NOPAM 可以 archive 所有經過的電子郵件進一步建立郵件資料庫

來提供郵件長期備份、搜尋、重要文件保護、資料探勘分析,甚至於知識管理等進階

功能。

Q4.1-2. NOPAM 的授權方式為何?A. Nopam 系統為公益軟體。Nopam 系統為公益而開發,為公益而努力!

若此系統有幸因技術之傑出與對社會之實質貢獻而有經費收入,則所有之收入將作為

軟體後續之維護開發,與公益用途。

Nopam 授權所有教育與學術單位,公益性質之民間社團,可以免費使用此垃圾郵件

過濾系統。

技術授權,合作開發,市場代理等商業合作則視實際情形洽商訂定合作條款。

Q4.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

Nopam 開發小組22

Q4.1-4. NOPAM 的套件中,SCU (Spam Checking User Interface)安裝在哪裡呢?

A.目前已釋出的 NOPAM 1.0/1.1/1.2 套件不包含 SCU 模組,未來若有提供將另行通知。

因為沒有 SCU 的關係,NOPAM 預設安裝時不會將垃圾信扣留在伺服器上。現階段的

nopam 使用者,可使用透過在郵件標題加上特定標記的方式,來進行是否為垃圾信的

判別方法,使用者可以透過自己的現有郵件閱讀軟體,針對這些被加入的特定標記,

進行篩選後分類。

Q4.1-5. 如何透過 SCU (Spam Checking User Interface)來處理被攔截的垃圾信?

A.若安裝 NOPAM 時有選擇一併安裝 SCU 的話,就可透過 SCU 來檢視並處理被攔截的

垃圾信,可透過瀏覽器,連到

http://server:port/scu

即可看到 SCU 的登入畫面。

請輸入您的電子郵件帳號與收信時的密碼,就可以登入 SCU 檢視被攔截的垃圾信。

若您看到某封郵件,認為它應該是正常信,但是卻出現在 SCU 裡,可以點選畫面上

方的「這不是垃圾信」的連結,這封信會馬上被寄回您的信箱。

SCU 可以安裝也可以不安裝,若取得的 NOPAM 安裝套件裡沒有包含 SCU 模組,也

可以透過將郵件標題加上特定標記,由貴單位的郵件軟體據之進行分類,這樣亦可達

到相同的效果(細節參閱 Q4.2-9, 如何修改垃圾信或病毒信的標題)。

Q4.1-6. 如何開啟 Nopam 的進階輔助訊息輸出?A.進階輔助訊息可用來深入追蹤程式執行過程,進階輔助訊息假如有開啟的話,輔助訊

息檔將會產生在 Nopam 的 log 目錄之下,以 log 檔的方式存放在 disk 中。

Nopam 可以產生以下數種類型的進階輔助訊息:

輔助訊息名稱 說明

Plug-in Nopam 在垃圾信的判斷過程中,有時候會參考外部指定的輔助訊

息(例如 RBL 或 DCC),當有這些外部的輔助訊息被使用時,所得

到的相關資料會被存放在這個輔助訊息中。

Abstract Nopam 在垃圾信的判斷過程中,可以把郵件中少數幾個欄位的內

容抽取出來存放在這個輔助訊息中,方便追蹤時快速尋找特定欄位

的文字內容。

Normalized

mail

Nopam 在垃圾信的判斷過程中,會將經手的郵件進行解碼。假如

有開啟 normalized mail log 輔助訊息的話,這些已經解碼過的郵

件,除了非文字內容的附檔外,全部將會被完整的存入 log 檔。

這些輸出預設是處於關閉的狀態。假如您瞭解進階輔助訊息的內容,並希望加入

Nopam 開發小組23

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

4.2 管理問題

Q4.2-1. 可否簡單介紹一下 NOPAM 安裝後的檔案結構?A.NOPAM 安裝後,會在安裝目錄下產生以下次級目錄:

bin/ 所有可執行檔都會放在這兒

conf/ 存放所有的設定檔

data/ 郵件佇列(mail queue)、spam spool 的資料

logs/ log 與備份的郵件都會存放在這目錄

tmp/ 暫存目錄

Q4.2-2. 如何啟動或停止 NOPAM 系統的運作?A.要進行操作前,請先將身份切換成當初安裝 NOPAM 時所設定的使用者身份(預設的

使用者身份是 nopam 這個帳號)。

Nopam 開發小組24

若要啟動 NOPAM 的話,請進入 NOPAM 安裝目錄中,在 bin/這個目錄下執行:

./nopamctl start此外也可以從命列列中,手動叫起 NOPAM 的系統程式:

> ./switch_start.sh> ./lsd_start.sh> ./qs_agent.sh

若要停止 NOPAM 的話,請進入 NOPAM 安裝目錄中,在 bin/目錄下執行:

./nopamctl stop

此外也可以從命列列中,手動停止 NOPAM 的系統程式:

> killall bwd_qs> killall bwd_lsd> killall bwd_agent

特別注意,要執行./nopamctl start 與./nopamctl stop,必須先將工作目錄切換到 NOPAM

安裝目錄下 bin 這個目錄。

若 NOPAM 已經處於啟動的狀態,希望重新啟動 NOPAM,除可使用連續呼

叫./nopamctl stop; ./nopamctl start 來達到目的外,也可以使用:

./nopamctl restart

當使用./nopamctl restart 重新啟動 NOPAM 時,LSD 會被更換 listen 的 TCP Port 然後

叫起。LSD listen 的 TCP Port 會於 10025~10029 之間輪換。

Q4.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

Q4.2-4. 怎麼知道目前 NOPAM 系統有正常運作呢?A.首先,請看系統中是否有這幾個 process: bwd_qs, bwd_lsd, bwd_agent

Nopam 開發小組25

然後,請看看 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 系統目前順利運作中。

Q4.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

Nopam 開發小組26

可以用來輔助追蹤每一筆進出的郵件的歷程。

Q4.2-6. 如何從郵件備份裡找到我要的郵件?A.若安裝 NOPAM 時,有選擇"backup all processed mail",那麼將可從 NOPAM 的郵件備

份中找到所有進入 NOPAM 的郵件。

請看 NOPAM 安裝目錄中,在 logs/目錄下一個 all_mail.YYYYMMDD 的檔案

(YYYYMMDD 是郵件進入 NOPAM 的日期),這檔案裡紀錄著該天所有 NOPAM 經手

處理的郵件,郵件和郵件間以"QS_MaIl"為分隔。

Q4.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.

Nopam 開發小組27

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

Q4.2-8. 如何從取消或啟動郵件備份的功能?A.請看 NOPAM 安裝目錄中,在 config/目錄下一個 lsd.conf 的檔案裡有一個變數

LOG_ALL,看起來可能是:

LOG_ALL=all_mail.%Y%m%d

若在這行前面加上"#",就表示把這行註解掉,郵件備份的功能就會取消。若該行前

面沒有"#",郵件就會備份到該變數所指定的檔案裡。

Q4.2-9. 對於被判斷為垃圾和病毒的信件,可以有哪些處置的方式?A.請看 NOPAM 安裝目錄中,在 config/目錄下一個 lsd.conf 的檔案,有一個變數 SPAM_

DELIVERY_ACT,該變數是用來控制該如何處理被判定為垃圾信的郵件,其值可以有

三種,意義分別是:

變數值 意義 修改郵件

檔頭(header)

修改郵件

標題(subject)

send 將垃圾信依照正常信件,送給 MTA,

交由其送回收件者的信箱,或指定的

後端郵件伺服器。

Y N

submodify 將垃圾信依照正常信件,送給 MTA,

交由其送回收件者的信箱。

Y Y

Nopam 開發小組28

drop 將垃圾信直接捨棄,不送給 MTA,信

件不會送回收件者的信箱。

- -

針對被判定為病毒的郵件,則是由 VIRUS_ DELIVERY_ACT 所控制,與 SPAM_

DELIVERY_ACT 一樣可以有 send, submodify 與 drop 三種值。

Q4.2-10. 如何修改垃圾信或病毒信的標題?A.請看 NOPAM 安裝目錄中,在 config/目錄下一個 lsd.conf 的檔案,有一個變數

SPAM_SUBJECT,看起來可能是:

SPAM_SUBJECT=***Spam***

只要修改這個變數的值就可改變加入垃圾信標題的識別字。這個標題的修改,需配合

另一個變數

SPAM_ DELIVERY_ACT=submodify

時才會生效。

同樣的要修改加入病毒信標題的識別字,請修改 VIRUS_SUBJECT 這個變數的值即

可,同樣的這個標題的修改,需配合另一個變數

VIRUS_ DELIVERY_ACT=submodify

時才會生效。

Q4.2-11. 請問 NOPAM 對病毒信與垃圾信,預設是如何修改郵件標題呢?A. 對於垃圾信,NOPAM 會預設在郵件標題前方加入"***Spam***"的識別字。

對於病毒信,預設在郵件標題前方加入的識別字"***Virus***" 。

Q4.2-12. 我可以啟動 NOPAM,但是不要對信件作任何過濾的處理嗎?A.在某些特定情況下,可能會希望先確定 NOPAM 和單位內的郵件系統順利整合,稍後

再啟動 NOPAM 對信件過濾的功能。

要讓 NOPAM 暫時停止對信件的過濾,請看 NOPAM 安裝目錄中,在 config/目錄下一

個 lsd.conf 的檔案,有一個變數 BYPASS_CHECK,請把值改成 1 即可,就像這樣:

BYPASS_CHECK=1

Q4.2-13. NOPAM 開啟很多的連線送信進我的郵件主機,我的郵件主機無法同時處理大量的連線,我該怎麼辦?

A. NOPAM 處理郵件的能力非常強,可在很短的時間內收下一堆信件,並在極短的時間

內把處理完的郵件送出,但有時後端的 MTA 郵件主機可能硬體的能力不足,故無法

短時間內承接大量的信件或資料,此可透過讓 NOPAM 降低同時產生的連線數目達到

控制流量的目的。

限制 NOPAM 同時對外連線數目的方法,請參照 5.4 進階管理設定中,關於"如何限

Nopam 開發小組29

制 NOPAM 將處理完的郵件,送出時的速度?"的說明。

Q4.2-14. 我修改了 NOPAM 的設定檔,如何才能讓新的設定生效?A. 請重新啟動 NOPAM 即可。

Q4.2-15. 我重新啟動 NOPAM,或在 NOPAM 正在處理或收發信件的過程中,

停止 NOPAM 的運作,這樣會不會掉信?A.不會。NOPAM 對於信件的處理和遞送,有 transaction 的機制,只有當信件被正確處

理,或明確收發完成,處理過後的信件才會刪除。

那些沒有完成處理的信件,會持續留在 NOPAM 主機中,等稍後 NOPAM 系統再度被

啟動,未完成處理的信件可被繼續處理,所以不會掉信。

但要注意的是,因該些未完全處理好的信件,係存放在硬碟中,故若遇硬碟故障或檔

案系統滿了,後續再進來的新信,若處理到一半,而 NOPAM 被意外終止,那麼即使

NOPAM 再啟動,該些未完成處理的信件,因無法被暫存在硬碟上,因此將消失而無

法繼續被處理。

Q4.2-16. 什麼是 SPDB? 為什麼需要更新 SPDB?A. SPDB 是 Spam Pattern DataBase 的縮寫,這是一種資料庫裡記載可用來幫助 NOPAM

進行垃圾信判斷的資料。

因垃圾信的行為與特徵會隨著時間而有所變化,因此適時的更新 SPDB 可以讓

NOPAM 對於新的垃圾信有更準確的判斷。

Q4.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 的設定中。

Q4.2-18. 我可以手動更新 SPDB 嗎?A. 可以

請執行 Nopam 安裝目錄下的 bin/spdb_reload.sh 即可。更新完畢之後 LSD 會自動重

新啟動,以讓新的 SPDB 生效。

Q4.2-19. 假如我下載的 SPDB,因為網路傳輸或硬碟的關係導致損壞,那會發生

Nopam 開發小組30

什麼狀況?A. Nopam 會於檔案下載之後檢查 SPDB 的完整性。

假如檔案有所毀損,Noapm 會延用舊版 SPDB,不會使用有毀損的檔案。

但假如很不幸因為硬碟故障,使得新版、舊版的 SPDB 都毀損了,那麼 NOPAM 將可

能無法正常運作。您可能會看到為數不少的誤判、漏判,或 NOPAM 程式無法正常執

行,這種狀況請務必儘速更換硬碟,並檢查您的作業系統完整性。

Q4.2-20. 可以讓 NOPAM 把放在 log 檔的訊息也同步顯示在 console 上嗎?A.可以,但會在螢幕上產生大量的訊息。

請修改 NOPAM 安裝目錄中,conf/目錄下的 lsd.conf 與 qs.conf 這兩個檔案,找

VERBOSE 這個變數,請把值從 0 改成 1 即可。這可以讓 LSD 與 QS 的訊息也同步出

現在 console 上。

Q4.2-21. 我可以為自己的郵件主機,加入寄件者的白名單嗎?A.可以,貴單位可自行指定。

請看 NOPAM 安裝目錄中,conf/目錄下的 from.whitelist 這個檔案,它們是寄件者白

名單。

這個檔案是純文字檔,以行為單位,每一行是一筆 email address,可自行添加 email

資料,以下 email 格式都有效:

John <[email protected]>

[email protected]

<[email protected]>

這裡的白名單並不特別針對某個特定的使用者,該些設定是對整個 NOPAM 的過濾系

統對所有 user 的信箱都有效。

Q4.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 前務必先切換成當初所設定的使用者身份。

Q4.2-23. 我遇到一些使用手冊與 FAQ 裡沒有提及的問題,是和 NOPAM 郵件設

Nopam 開發小組31

定有關的,若我想回報或想求助的話,請問應該怎麼作?

A. 首先,貴單位應該準備以下的資料:

1. logs/YYYYMMDD.bwd2. logs/lsd.YYYYMMDD3. logs/qs_agent.YYYYMMDD4. logs/qs.YYYYMMDD5. 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. 遇到的狀況描述

Q4.2-24. 我發現 NOPAM 對少數信件有誤判的狀況,請問該如何回報?A.誤判有兩種,一種是將正常信誤判為垃圾信,另一種是垃圾信但卻沒有抓到。我們目

前只接受前一種誤判回報,若遇到這種狀況,請直接將該封信用 forward 或 bounce 的

方式寄到:[email protected]

貴單位的熱心回報,可以讓 NOPAM 未來作得更好。

4.3 郵件佇列(mail queue)相關問題

Q4.3-1. 什麼是 NOPAM 的郵件佇列(mail queue)?A. NOPAM 透過郵件佇列來存放尚未完全處理好的郵件。

這些未完成處理的郵件將會以檔案的形式存在郵件佇列的目錄裡,NOPAM 的郵件佇

列,觀念上就類似 sendmail 會把待送的信件存放在/var/spool/mqueue 一樣,但 NOPAM

有自己的郵件佇列和管理的方式,這點和 sendmail 傳統的 mail queue 不同。

Q4.3-2. NOPAM 的郵件佇列是怎麼運作的?A. NOPAM 共有以下幾個郵件佇列,用途分別如下:

郵件佇列目錄 使用模組 說明

data/lsd_async QS, LSD 位於 QS 和 LSD 的 queue,用來存放被 QS 收下,但尚未被

Nopam 開發小組32

QS

LSD

HAM SPAM

Outgoing mail

GSD

Spam spool SCU

lsd_async

lsd_spam

lsd_ham

Incoming mail

qs_external

Relayed ext. mail

郵件佇列目錄 使用模組 說明

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 中設定),

則該信件表示需要外送,等待外送的郵件會存放於此。

郵件佇列的邏輯示意圖如下:

Q4.3-3. 如何查看在郵件佇列中的郵件?A.郵件將會以檔案的形式存在郵件佇列的目錄裡,而檔案的名稱是以該郵件在 NOPAM

系統中的流水序號命名。

這些郵件都以文字檔的方式存放,可直接透過文書編輯器開這些檔案開啟看原始的郵

件內容。郵件的前方 NOPAM 會加入獨有的資料,這些資料與原始郵件是透過一行

"DATA"的關鍵字作分隔。"DATA"之前的內容是 NOPAM 加入的訊息,"DATA"之後

是原始的郵件資料。

NOPAM 提供一個程式,可以很快的瀏覽郵件佇列裡的郵件的部分摘要訊息,而不用

Nopam 開發小組33

管理進入郵件佇列目錄,將檔案一個一個開啟。這個程式位於 NOPAM 安裝目錄下,

bin/目錄中,要執行這個程式,必須把工作目錄切換到 bin 這個目錄。

要察看目前主要的郵件佇列中,分別有多少檔案,可在命列列中執行:bin>./qsq_manager NUMSPOOL_IN = 10 (#3) in /usr/local/NOPAM/data/lsd_asyncSPOOL_HAM = 5 (#1) in /usr/local/NOPAM/data/lsd_hamSPOOL_SPAM = 2 (#2) in /usr/local/NOPAM/data/lsd_spamSPOOL_SUSPEND = 4 (#0) in /usr/local/NOPAM/data/lsd_suspendbin>

以上例說明,輸出的資料以行為單位,等號前面表示佇列名稱,等號後面第一個數字

表示該佇列裡目前有多少郵件,接下來在括號裡的數字表示,在這些郵件裡,有多少

是 run-time 正在遞送中,但尚未完成的。因 NOPAM 提供有流量控制的機制,所以並

非所有在佇列中的檔案在同一時間通通都會立即被遞送出去,NOPAM 會依照設定,

逐步將郵件送出。

要察看目前主要的郵件佇列中,這些檔案的摘要訊息,可在命列列中執行:bin>./qsq_manager INFO!1. /usr/local/NOPAM/data/lsd_suspend/0/qs_47B9A580.11 (1K), delay 8h35m

From: <[email protected]> via mail04.ccu.edu.twTo : <[email protected]> (total 1 receivers)Info: 553 5.1.8 <[email protected]>... Domain of sender address

[email protected] does not exist

!2. /usr/local/NOPAM/data/lsd_suspend/E/qs_47B9717E.37 (73K), delay11h53m

From: <[email protected]> via mail07To : <[email protected]> (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 9sFrom: <[email protected]> via mail01.ccu.edu.twTo : <[email protected]> (total 1 receivers)

4. /usr/local/NOPAM/data/lsd_async/A/#qs_47BA022A (1K), delay 27sFrom: <[email protected]> via mail02.ccu.edu.twTo : <[email protected]> (total 1 receivers)

bin>

這個指令會明確列出每一封信的實體檔案位置,已經嘗試遞送多少次,信件大小,已

停留在 NOPAM 系統裡多久時間,從誰寄出,收件人是誰(包括共有多少收件人),

這封信停留在郵件佇列裡的原因。

以第一封信為例,訊息表示:

這封信目前在系統的 /usr/local/NOPAM/data/lsd_suspend/0/qs_47B9A580.11

這封信已經經過 11 次的遞送,仍未能成功送出去 檔名後的".11"

這封信的大小是 1K (byte)

Nopam 開發小組34

這封信從進入 NOPAM 系統起算,截至目前已經停留 8 小時 35 分

這封信是由 [email protected] 寄出

傳送這封信到 NOPAM 的 MTA 郵件主機是 mail04.ccu.edu.tw

這封信的第一個收件人是 [email protected],總共只有一個收件人

這封信寄不出去的最近一次原因是因為對方的郵件主機因為查不到

kiss-and-kiss.com 這個網域,所以拒絕收取這封信件

每封信的編號,前面可能會有一個符號,這符號可能有"#", "!",分別代表:

"#": 這封信目前正在遞送中。

"!": 這封信遞送的過程,遇到嚴重的 permanent error。

沒有符號: 這封信正常存放在 queue 裡,目前並未透過網路遞送。

Q4.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_cleanerQuantumSwitch 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_MAPrename: =0/1, rename before deliverydel: =0/1, delete after successful delivery

=dir_name, move delivered file to this dirinc: =0/1, add retry count after failed deliverymax: =X, drop this mail if retry count > X

timeout:=0/1, the MAX seconds allowed to deliver a mailverbose:=0/1, set skt_debug value

Q4.3-5. 如何刪除郵件佇列中的郵件?A.若真的確定處理到一半、或還沒處理的郵件都不要,可以透過執行以下命令刪除所有

queue 裡的檔案:

bin> ./qsq_manager RESET_ALL

Nopam 開發小組35

若只想刪除某個特定的 queue 裡的檔案,而非所有 queue 裡的檔案,或只想刪除來自

某個 MTA 郵件主機的信,可進一步參考 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_DNNUM = show queued mail numberINFO = show mail queue infoFLUSH_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>

Q4.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 開始遞送。

Q4.3-7.可以透過 rm 直接刪除郵件佇列裡的檔案嗎?A.當 NOPAM 仍在執行中的話,我們不建議這麼做,雖然說可能運氣好不會有什麼問

題…。

Q4.3-8. 如何設定郵件遞送失敗後的重複嘗試遞送次數?A. NOPAM 最大的郵件遞送嘗試次數,是由 qsq_cleaner 所控制,前述已介紹過,管理

者可透過 qsq_cleaner 來強制要求 NOPAM 立即送出在郵件佇列裡的郵件。

最大的郵件遞送嘗試次數是由 qsq_cleaner 的 max 參數所控制:bin>./qsq_cleanerQuantumSwitch 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_MAPrename: =0/1, rename before deliverydel: =0/1, delete after successful delivery

=dir_name, move delivered file to this dirinc: =0/1, add retry count after failed delivery

Nopam 開發小組36

max: =X, drop this mail if retry count > Xtimeout:=0/1, the MAX seconds allowed to deliver a mailverbose:=0/1, set skt_debug value

當重複嘗試遞送的次數到達了 X,但郵件仍無法成功遞送,郵件將會被從 lsd_suspend

這個 queue 搬到 lsd_dead 這個 queue,不再繼續嘗試遞送。

要修改這個設定,可檢視 NOPAM 安裝目錄中,conf/目錄下的 lsd.conf 檔案裡有一個

變數 SUSPEND_Q_CLEANER,該變數的值是一道呼叫 qsq_cleaner 的命令,可自行

更換其中 max 這個參數的值即可。

Q4.3-9. 那些到了最大嘗試遞送次數還送不出去的信會到哪裡?A. 會在 lsd_dead 這個郵件佇列裡。

Q4.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 這些變數並加以設定。

Q4.3-11. 對於這些郵件佇列裡的信件,我該注意些什麼?A.前述提及,管理者可透過 qsq_manager 察看在各主要郵件佇列裡的郵件數目,假設該

些數字暫時用符號代表:bin>./qsq_manager NUMSPOOL_IN = A (#a) in /usr/local/nopam/data/lsd_asyncSPOOL_HAM = B (#b) in /usr/local/nopam/data/lsd_hamSPOOL_SPAM = C (#c) in /usr/local/nopam/data/lsd_spamSPOOL_SUSPEND = D (#d) in /usr/local/nopam/data/lsd_suspendbin>

特徵一:A 的數值很大,但 B 和 C 很小 (例如差異在十倍或百倍以上)

可能 LSD 當掉,或 LSD 沒有開啟,請啟動 LSD。

可能瞬間進入 NOPAM 的流量太多,若機器硬體無法負荷,請參考 5.4 進階管理

與設定一節,針對外部進入 NOPAM 的郵件速度手動進行調節。

特徵二:A 的數值很小,但 B 和 C 很大 (例如差異在十倍或百倍以上)

可能貴單位MTA 郵件主機掛點或連不上,請檢查的 MTA 主機連線是否正常。

可能瞬間 NOPAM 對外送出的流量太多,導致對單位 MTA 郵件主機無法負荷,

Nopam 開發小組37

若 MTA 機器硬體無法負荷,請參考 5.4 進階管理與設定一節,針對 NOPAM 對外

的郵件速度手動進行調節。

特徵三:但 B 和 C 很小,但 D 很大 (例如差異在十倍或百倍以上)

可能貴單位 MTA 郵件主機掛點或連不上,而且這個狀況已經持續很長一段時間。

請立即檢查請檢查的 MTA 主機硬體或網路連線是否正常。

4.4 進階管理與設定問題

Q4.4-1. 可以限定 NOPAM 只接收來自特定 IP 的 MTA 網路連線嗎?A. 可以,而且我們強烈建議貴單位這麼做。

透過修改 NOPAM 安裝目錄中,conf/目錄下的 qs.conf 檔案,貴單位可藉由調整

MY_NETWORK、BAD_NETWORK 來限制允許連線的前端 MTA server

這幾個變數的意思是:

變數名稱 說明

MY_NETWORK 以 IP 的方式指定,凡是屬於這個變數所指定範圍的 IP 送

過來的郵件,都可以由 NOPAM 處理。

註:若不填,表示來自任何 IP 的郵件都收。

BAD_NETWORK 凡是從 BAD_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

Q4.4-2.我可以把 NOPAM 當作 SMTP mail relay,透過 NOPAM server 來發信嗎?A. 可以。

透過修改 NOPAM 安裝目錄中,conf/目錄下的 qs.conf 檔案,可藉調整

MY_DESTINATION、MY_NETWORK、BAD_NETWORK 來對 NOPAM 的 SMTP mail

relay 進行控制。

Nopam 開發小組38

這幾個變數的意思是:

變數名稱 說明

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 設定的處理方式:

Nopam 開發小組39

若該封郵件是 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 政策自行處理。

Q4.4-3. 如何將掃毒程式整合到 NOPAM 之中?A. 目前 NOPAM 支援有名的 Clamav 掃毒軟體 (http://www.clamav.net/ )。

若要使用 Clamav 使其為 NOPAM 經手的郵件進行掃毒,當然必須先安裝 Clamav,並

讓 Clamav 接收來自 Internet domain socket 的掃毒請求。Clamav 預設是不接受 Internet

domain socket 的掃毒請求,這個設定可以在 Clamav 的設定檔 clamd.conf 中,藉由更

Nopam 開發小組40

改 TCPSocket、TCPAddr、LocalSocket 幾個變數來啟動。詳細設定方法請參閱 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 是病毒的名稱。

Q4.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 來處理。

Nopam 開發小組41

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 封,都可以順利收下。

Q4.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 可參考前述關於限制 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 則不在此限。

Q4.4-6. 可以讓 NOPAM 本身進行負載平衡嗎?A.可以。

Nopam 開發小組42

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 這個目錄。

Q4.4-7. 可以讓 NOPAM 支援多部的 MTA 郵件主機嗎?A. 可以。

若貴單位原本就有多部 MTA 郵件主機,為分散流量而一同收取某個特定 domain 的郵

件,則 NOPAM 也支援這種運作模式,甚至可以在遞送郵件的同時,將流量平均的分

配到多部 MTA 郵件主機之上。

以下說明將假設前端(incoming)MTA 主機與後端(outgoing)MTA 主機是安裝在同一部

伺服器上。

若遇到某部郵件主機沒有回應或網路連線中斷,NOPAM 會自動避開該部 MTA 主機,

僅將郵件送給其他正常的 MTA 郵件主機。待出問題的 MTA 主機恢復正常,NOPAM

會自動偵測,並再將該部主機納入平均分配流量的主機範圍內,後續繼續將新的信件

轉交其處理。

要使用多部 MTA 郵件主機的話,必須修改 LSD 的設定檔 conf/lsd.conf,請找一個

Nopam 開發小組43

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 系統。

Q4.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 不修改郵件標頭的目的。

Q4.4-9.我有設定要對所有經手的信件進行備份,且有設定捨棄垃圾信不要遞送,但我發現垃圾信並沒有被備份下來,請問該怎麼作才能讓垃圾信也備

份下來?A. 當對所有經手的信件進行備份,且有設定捨棄垃圾信不要遞送,表示 conf/lsd.conf

設定檔裡的這幾個變數值是:

MAIL_ARCHIVE=1

SPAM_DELIVERY_ACT=drop

Nopam 開發小組44

雖有設定 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 郵件主機),而

且可以備份下來。

Q4.4-10.我的 FreeBSD 版本是 5.x,我使用的 MTA 主機是 Sendmail,我發現

sendmail 的 log 裡偶而會有 I/O error 的訊息,請問該如何排除?A.我們發現 FreeBSD 5.x 上的 sendmail 與 NOPAM 有匹配上的問題。信件仍可透過

NOPAM 正常處理,但是無法避免這個錯誤訊息。

若貴單位的主機作業系統是 FreeBSD 5.x,我們建議將 MTA 改採 postfix。

Q4.4-11.我有使用 Dcc,啟動 NOPAM 後每隔一段時間,偶爾會在畫面上看到類似這樣的訊息,這是什麼意思?

no answer from dcc2.dcc-servers.net (198.137.254.147,6277) after 14023 mscontinue not asking DCC 16 seconds after failure

A. 這些訊息是 Dcc 的警告訊息。

Dcc 會向分散在全球各地的公眾 Dcc 伺服器,透過網路詢問關於垃圾信的相關資訊,

若 Dcc 無法連上公眾 Dcc 伺服器,就會出現這樣的訊息,詳細意義請參考 Dcc 的使

用說明 http://www.rhyolite.com/anti-spam/dcc/ 。

Q4.4-12.我的郵件主機每天經手的郵件非常多,負載很重,偶而會發現 clamd長時間造成非常高的 CPU 負載(例如數分鐘不間斷),請問怎麼辦?

A.在郵件主機本身負載很高的情況下,clamav 可能會承受不了過高的流量而產生異常

的現象。

這些可能的異常包含,clamd 可能吃掉所有的 CPU 資源而且不會停止,立即的解決辦

法是請停掉 clamav (直接 kill 掉 clamd 這個 process 即可),然後再重新啟動。

請嘗試著將 clamav 更新到最新的版本,若問題仍然無法解決,可以嘗試在 crontab 裡,

將 clamav 定期重新啟動,至於重新啟動的週期長短,則視主機負載與 clamav 的狀況

而定,一般來說即使主機負載很重,一個小時重新啟動一次 clamav 也是非常安全的。

Nopam 開發小組45

Q4.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 startingNOPAM,應該如何解決?

A. 請先把執行者的身份切換成當初安裝 NOPAM 時,在安裝程序中所輸入套件所屬的

USER 身份,然後才啟動 LSD。勿使用 root 的身份去啟動。

4.5 其他

Q4.5-1. NOPAM 會有除了 FreeBSD 之外,其他作業系統的版本嗎?A. 未來可能有。

Q4.5-2. 我安裝和使用上遇到問題,該向誰求助?A. 可將遇到的問題 email 至 [email protected]

Q4.5-3. 我找到一個 bug,該向誰回報?

A.請檢附 Q4.2-23.所提到的資料,將遇到的問題 email 至 [email protected]

Q4.5-4. NOPAM 有提供"專業服務"嗎?A.礙於人力,可能短時間內無法對於所有需求個別一一處理,但還是歡迎與我們聯絡,

我們將抽空儘速瞭解狀況,請 email 至 [email protected]

4.6 Nopam 1.2 版新增功能

Q4.6-1. 什麼是 NOPAM 的 Web Management Console?A.NOPAM 本身內建有一套 web server,讓管理者可以透過瀏覽器直接操作 NOPAM 本

身部分的管理功能,或察看即時的處理訊息,全名是 Web Management Console,簡稱

Nopam 開發小組46

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 提供的管理功能極為有限,未來會逐步擴充。

Q4.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。

Q4.6-3. 我可以知道 NOPAM 一天幫我處理的郵件中,正常信和垃圾信的數量分別是多少嗎?

A.可以的,要使用這個功能您必須先開啟 NOPAM 的 Web Management Console (WMC)。

而且您必須檢查 conf/lsd.conf 中,有個變數叫做 MRTG_STATISTICS,必設定為

"MRTG_STATISTICS=1"。

假設您安裝 NOPAM 時,把 QS modules 安裝在 192.168.0.200 這部機器的 10024 這個

TCP Port 上,而且您操作瀏覽器的這部機器位於 WDM_NETWORK 所允許的 IP 範圍

內,則您可以透過瀏覽器瀏覽這個 URL:

http://192.168.0.200:10024/lsd_statistics_html

Nopam 開發小組47

畫面看起來就像這樣:

LSD Ham Spam Virus

1 127.0.0.1:100277550 (11.67%),

1514.5M (73.7%)

57123 (88.33%),

611.0M (26.3%)

0 (0.0%),

0.0M (0.0%)

* Total7550 (11.67%),

1514.5M (73.7%)

57123 (88.33%),

611.0M (26.3%)

0 (0.0%),

0.0M (0.0%)

畫面中顯示的是 NOPAM 從上一次啟動開始到現在,累計所有處理的郵件的數量統計

資訊,當 LSD 重新啟動後統計數字就歸零重來。

在(Q1.4-6. 可以讓 NOPAM 本身進行負載平衡嗎?)有提到您可以設定多部 LSD 進行

負載平衡,您設定多少部 LSD,每部 LSD 處理的結果都會呈現出來,並且在最後出

現一欄所有 LSD 處理的郵件的加總統計,以上面的畫面為例,這套 NOPAM 只佈屬了

一部 LSD,而且沒有開啟病毒信的掃瞄功能(所以 Virus mail 統計數字為 0)。

這個功能未來還會進一步延伸,與 MRTG (http://mrtg.hdl.com/)相整合,可以產生視覺

化的即時的流量統計圖表。

Q4.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"。

Q4.6-5. NOPAM 會幫我更新 Clamav 的病毒碼嗎?A. 不會。這不在 NOPAM 的服務範圍內。您必須自行更新。

Clamav 安裝時附有一個 freshclam 的工具,只要再 cron job 裡面定期呼叫它,就可以

定期將 clamav 的病毒碼保持在最新的狀態。詳情請參閱 clamav 的使用說明

(http://www.clamav.net/)

Nopam 開發小組48

Q4.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 預設各種

檢查的最大處理時間。

Q4.6-7. 除了使用 qsq_cleaner 這個工具程式外,有其他方法讓 NOPAM 立即對郵件佇列中的信件開始遞送嗎?

A.有的

您可以使用 bin/qsq_manager。前面的 FAQ 已經大致介紹過 qsq_manager 的用法,

從 Nopam 1.2 版以後,qsq_manager 可以針對不同的郵件佇列分別進行刪除或遞送。

您可以從下面這個使用說明,針對不同的郵件佇列,分別進行處理

Nopam 開發小組49

> 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 管理員下達:

bin> ./qsq_manager FLUSH

NOPAM會馬上呼叫 qsq_cleaner 開始遞送 SPOOL_SUSPEND 這個郵件佇列裡面的

郵件,至於實際呼叫的 qsq_cleaner 時所下達的參數,則是使用 conf/lsd.conf 中

SUSPEND_Q_CLEANER 這個變數所載的參數呼叫。

Q4.6-8. 我是以 Loop-Around 的方式安裝 Nopam,這種狀況下 Nopam 有退信的功能

嗎?

A.沒有

在 Loop-Around 中,信件的流程是:

sender MTA -> internet -> incoming MTA -> Nopam -> outgoing MTA

只要 incoming MTA 把信收下轉交給 Nopam,而且 incoming MTA 已跟 sender MTA 回

覆說信件已經正常收下,那些到 outgoing MTA 才被拒收的信件,Noapm 不會退回給

原寄件者。

常見的這種被 outgoing MTA 拒絕不收的信有:

Nopam 開發小組50

user unknown

mailbox exceeds quota

virus mail

sender domain not exist

其他

若您認為應該要退信的話,可以考慮從第一時間在 incoming MTA 的階段,就依照貴

單位如何處理這些信件的政策,把不收的信退回給對方,不要收下來交給 Nopam。

那些被 outgoing MTA 拒收的信,Nopam 會持續一段時間,繼續嘗試送給 outgoing,

看看 outgoing MTA 會不會改變心意而收下,假如經過多次嘗試仍無法送出,最後信

件會被擺放到 lsd_dead 這個郵件佇列裡面。

Nopam 不會自動幫您清除 lsd_dead 裡面的郵件,若您想檢視那些被拒絕收下的郵件

可以到這個郵件佇列尋找,為避免這個郵件佇列累積過多的郵件,若您確定那些郵件

不再需要,可以定期清理裡面的資料。