« 2007/11, Vol. 142 PChome Magazine | 首頁 | 建立防毒、過濾垃圾郵件的 Mail Gateway »
2007年11月13日
P3Scan + ClamAV 建立防毒 Mail Proxy
Links:
Index:
- P3Scan 安裝地點與防護關係
- 安裝 P3Scan
- 以 Eicar 病毒碼測試 p3scan 防毒功能
P3Scan 安裝地點與防護關係
- 安裝於 Linux NAT
- User -- SMTP --> Linux NAT --> Hinet SMTP Server (寄外部郵件)
- User <-- Linux NAT <-- POP3 -- Hinet POP3 Server (收外部郵件)
- Mail Server -- SMTP --> Linux NAT --> 其他 MTA
(從公司內部寄出的郵件)
- 安裝於 Mail Server 所在機器
- User <-- POP3 -- Mail Server (收公司郵件)
- User -- SMTP --> Mail Server (以公司郵箱發信)
安裝 P3Scan
環境: Fedora Core 3, Source Installation ClamAV (prefix=/usr/local)
rpm -ivh p3scan-2.3.2-1.FC3.i386.rpm
cd /etc/p3scan
cp p3scan.conf.sample p3scan.conf
ln -s p3scan-en.email p3scan.email
vi p3scan.conf
刪除 /* P3Scan v2.3.2... 一直到 */ 的那幾行
user = mail
justdelete
scannertype = basic
scanner = /usr/local/bin/clamdscan --no-summary
viruscode = 1
virusregexp = .*: (.*) FOUND
enabletopvi /usr/local/etc/clamd.conf
User mail
ScanMail yesclamd
/etc/init.d/p3scan start (或 p3scan -d 進入 debug 模式)
iptables -t nat -A PREROUTING -s LAN -p tcp --dport 25 -j REDIRECT --to 8110
iptables -t nat -A PREROUTING -p tcp --dport 110 -j REDIRECT --to 8110
以 Eicar 病毒碼測試 p3scan 防毒功能
※於 [遠端 mail server] 或 [p3scan 與 mail server 在同一台機器] 的環境下進行以下操作
vi /tmp/virus_test.eml
From someone@somewhere.com
From: someone@somewhere.com
To: you@your.domain.com
Subject: virus test
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*cat /tmp/virus_test.eml >> /var/spool/mail/your_account
若收到一封主旨為: [Virus] found in a mail to you: Eicar-Test-Signature 的信件, 表示 p3scan 運作正常
參考資料
Posted by Jamyy at 2007年11月13日 11:14
Trackback Pings
TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/316
Comments
Jamyy偶像大大:
網路上mail proxy相關文章少之又少,可見其技術性之高,
而您文章寫的如此詳細,真是給您致上最高的敬意~
Posted by: aok at 2007年11月13日 22:41
aok 您好,
托您的福, 最近又學到了不少東西, 謝謝啦~~ :)
Posted by: Jamyy at 2007年11月13日 23:55
Jamyy偶像大大:
您客氣了,我們才從您網站學到不少功夫呢^__^
Posted by: Anonymous at 2007年11月14日 00:46
站長您好
關於P3Scan 安裝地點與防護關係有些搞不清,因為
我公司的mail-server(smtp+pop3)單獨一台,也就是在Lan端的某一個ip,client 的話在outlook設定mail-server 收發信,但是如果是公司的mail當然可以透過mailscanner防護
但是user如果又設定了一個hinet的帳號,那他就不行受到mailscanner的防護,我公司的firewall是ipcop,那我是不是不能使用p3scan囉,還是說我把p3scan 裝在mail-server
,在來的話我就不知如何設定?是需要在fireall改規則ㄇ
Posted by: 阿榮 at 2007年12月04日 11:21
阿榮您好,
p3scan 主要是用在 linux nat 為外部郵件 (如: hinet) 把關
內部 user 透過 linux nat 上網收取 hinet pop3 郵件時, 即可受到 p3scan 的過濾與保護
p3scan 作為 transparent proxy 之後, 變成由 linux nat 向外連入遠端 25 與 110 port, 所以防火牆只要考慮這一段就行了
如果內部的 mail server 已有 mailscanner 的保護, 再安裝 p3scan 在 mail server 機器上的話並沒有多大意義, 頂多就是 p3scan 與 mailscanner 使用不同的防毒軟體與垃圾信過濾機制來達到雙重保護而已
Posted by: Jamyy at 2007年12月04日 11:52
Jamyy您好
小弟有個很笨的問題想請教Jamyy大大
小弟的環境是Fc6,去官網抓p3scan-2.9.09d.tar.gz下來安裝
在./configure的時候,停在下列幾行
checking for dusable clamav... no
checking for clamav... no
configure: error: clamav.h not found in yes
小弟已經先安裝了clamav-0.91.2版本的clamav
不曉得問題出在何處呢?
或是..p3scan不支援fc6呢? ><
還請Jamyy大大賜教~
Posted by: JaKson at 2008年02月13日 20:11
JaKson 您好,
如果您的 clamav 是用 rpm 或 yum 安裝的
記得要裝 clamav-devel 哦
Posted by: Jamyy at 2008年02月13日 21:44
Jamyy您好
小弟的clamav是.tar.gz的
安裝Jamyy大大說的clamav-devel後果然解決上述的問題!
但現在出現下一個問題..@@"
configure: error: library 'ripmime' is missing! See README-ripmime
於是小弟查看了README-ripmime,將ripmime關掉試試
./configure --disable-ripmime
解決了上面的問題~但接下來就想請問Jamyy大大,出現以下訊息小弟不太懂..><
ERROR! Libpcre hrader not found, go get it from
http://www.pcre.org
小弟去該往站後,不曉得該抓何檔?該放何處?該如何處理?
還請Jamyy大大指教~ 感謝!!
Posted by: JaKson at 2008年02月15日 19:18
JaKson 您好,
目前 pcre 最新的版本是 7.6
您可以下載這個版本的 pcre
解包後以基本的 tarball source 安裝程序進行安裝:
./configure
make
make install
更簡單的方式是用 yum 安裝: yum install pcre-devel
Posted by: Jamyy at 2008年02月19日 09:02
Jamyy您好
感謝Jamyy大大的解答
果然問題已經解決了!
不過..小弟又碰到另一錯誤訊息,不好意思,又要麻煩大大幫忙看看
小弟在./configure --disable-ripmime執行之後
上列問題都不在出現,但出現下面的錯誤訊息
make[2]: *** [p3scan] Error 1
make[2]: Leaving directory `/usr/local/src/p3scan-2.9.09d/src'
make[1]: *** [all-recursive] Error 1
make[1]: Lraving directory `/usr/local/src/p3scan-2.9.09d'
make: *** [all] Error 2
還請Jamyy有空的話幫小弟解答一下~ 感激!
Posted by: JaKson at 2008年02月19日 22:21
JaKson 您好,
不好意思, 因為您提供的訊息不完整, 所以無法判斷問題出在什麼地方
真正的錯誤訊息通常出現在 make:... Error n 的前幾行, 您可以仔細看一下
Posted by: Jamyy at 2008年02月20日 09:56
Jamyy您好
不好意思,小弟這次將全部訊息貼上,希望Jamyy大大不吝指教!感謝!
make all-recursive
make[1]: Entering directory `/usr/local/src/p3scan-2.9.09d'
Making all in src
make[2]: Entering directory `/usr/local/src/p3scan-2.9.09d/src'
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -L/usr/lib/pthread -lclamav -lssl -lcrypto -lpcre -o p3scan p3scan.o getlinep3.o parsefile.o scanner_avpd.o scanner_avpd_new.o scanner_clamd.o scanner_trophie.o scanner_bash.o scanner_basic.o scanner_sophie.o getline_ssl.o restart.o -lpthread
gcc -g -O2 -o p3scan p3scan.o getlinep3.o parsefile.o scanner_avpd.o scanner_avpd_new.o scanner_clamd.o scanner_trophie.o scanner_bash.o scanner_basic.o scanner_sophie.o getline_ssl.o restart.o -L/usr/lib/pthread -lclamav -lssl -lcrypto -lpcre -lpthread
p3scan.o: In function `init_clamav':
/usr/local/src/p3scan-2.9.09d/src/p3scan.c:538: undefined reference to `cl_load'
collect2: ld returned 1 exit status
make[2]: *** [p3scan] Error 1
make[2]: Leaving directory `/usr/local/src/p3scan-2.9.09d/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/p3scan-2.9.09d'
make: *** [all] Error 2
另外請教一個題外問題,Jamyy大大的網站是使用lifetype的程式架成的嗎? 若是,如何在文章內使用框線,將內容放在裡面呢?
因為小弟看到大大使用框架來將內容歸類(),實在是相當不錯,簡潔有利的紀錄方式呢!
ex.http://cha.homeip.net/blog/archives/2005/12/_clamav_havp_ht.html
Posted by: JaKson at 2008年02月20日 20:56
JaKson 您好,
請問您的 clamav 是不是用 tarball source 安裝到 /usr/local (預設的安裝路徑) 呢?
如果是的話, 請編輯 /etc/ld.so.conf, 加入: /usr/local/lib
然後執行 ldconfig
再 make 一次看看 :)
這個 blog 是用 MovableType 做的, 文章內容是用 Frontpage 2003 編輯好之後, 再將原始碼 (HTML Tags) 貼入 後台, 出版後就是您現在看到的樣子啦 ^^
Posted by: Jamyy at 2008年02月20日 23:18
Jamyy您好
小弟加入/etc/ld.so.conf並且ldconfig之後再make
錯誤訊息仍然跟上面相同
不曉得是否還有其他解決方法呢?@@
Posted by: JaKson at 2008年02月22日 18:42
JaKson 您好,
剛剛仔細看了一下整個問題的來龍去脈, 才發現您是用 tarball source 安裝 clamav, 但卻又另外 yum 安裝了 clamav-devel
所以, 請先移除 clamav-devel: yum remove clamav-devel
接著重新 configure p3scan:
./configure --with-clamav=/usr/local --disable-ripmime
這樣應該就沒問題了
Posted by: Jamyy at 2008年02月22日 22:37
Jamyy您好
十分感謝!果然如同Jamyy大大說的,這樣就可以囉!
抱歉,小弟這幾天比較沒空上來看大大的回覆!
再下來小弟在試試後面的~ 感恩^^
Posted by: JaKson at 2008年02月27日 08:19
Jamyy您好
小弟在設定與啟動碰到幾個問題想請教Jammy大大
==================================
p3scan版本 = p3scan-2.9.09d.tar.gz
clamav版本 = clamav-0.91.2.tar.gz
Fedora版本 = Fedora 6
==================================
1.小弟依照Jamyy大大的教學設定
vi p3scan.conf
===============================================
user = mail (mail使用者是否需要先新增呢?我用Tarball安裝)
justdelete (問題1:我這樣改是否正確呢? @@
delnotify =
改成
delnotify = justdelete)
scannertype = basic
scanner = /usr/local/bin/clamdscan --no-summary
viruscode = 1
virusregexp = .*: (.*) FOUND
enabletop (問題2:此行在裡面找不到,我直接新增一行在最後面,
但是在執行/etc/init.d/p3scan start之後
卻會出現,Option '--enabletop' isn`t
known)
===============================================
由於(問題1)我直接改成delnotify = justdelete並無錯誤訊息,所以就先不理他@@,但是(問題2)一加上去後就出現錯誤訊息,所以先拿掉了
(問題3)在這之間,小弟設定clamd.conf也有個小疑問
User mail
這行的mail是否如同上面假設,是否也需要先建立mail的使用者呢?因為小弟設定成mail的話,則會出現
ROR: Can't open /var/log/clamav/clamav.log in append mode (check permissions!).
ERROR: Problem with internal logger. Please check the permissions on the /var/log/clamav/clamav.log file.
於是小弟改成User clamav暫時沒出現錯誤,這樣改法是否正確卻呢?
Posted by: JaKson at 2008年02月28日 18:55
JaKson 您好,
1. 後來我覺得 clamd.conf 與 p3scan.conf 都設定成 user root 會比較理想, 因為 clamd 以 mail 身份執行的話會很不方便 ^^'
2. p3scan v2.9.09d 這個版本的設定檔與本篇所使用的 v2.3.2-1 已經不太一樣:
justdelete 變成 delete
delnotify 可以不用設 (保持註解狀態)
新版已取消 enabletop 的參數, 請不要加入
Posted by: Jamyy at 2008年02月29日 14:51
Jammy您好
在上面設定都完成,並且啟動後
小弟執行
netstat -tln | grep 8110
得知p3scan執行中
但是在這之前小弟啟動p3scan的時候,出現以下錯誤
ERR: Can`t bind to socket!
但仍可啟動p3scan,這樣是否影響p3scan的正常運作呢?
Posted by: JaKson at 2008年03月01日 15:33
JaKson 您好,
若 p3scan 已啟動, 再執行 p3scan 就會出現 ERR: Can't bind to socket! 的訊息
此時 netstat -ntulp | grep p3scan 會發現有另一個 p3scan daemon 正聆聽 3724x 的 tcp port
解決的方法是:
killall p3scan 停止所有的 p3scan 程序
/etc/init.d/p3scan start 重新啟動 p3scan
Posted by: Jamyy at 2008年03月03日 13:53
Jamyy您好
請教Jamyy大大
小弟在家裡的環境測試安裝P3scan後
使用Outlook設定hinet信箱來測試
我使用gmail信箱向Hinet信箱寄一封測試信
使用Hinet信箱收信時,出現錯誤訊息如下
您的伺服器意外地終止連線.可能的原因包括伺服器問題.網路問題或是長時間閒置.帳戶:`msa.hinet.net`,伺服器:`msa.hinet.net`,通訊協定:POP3,伺服器回應:`+OK P3Scan'ing...',連接埠:110,安全(SSL):否,錯誤碼:0x800CCC0F
Posted by: JaKson at 2008年03月05日 22:14
Jamyy您好
承上問題後,小弟在公司的Fedora 6安裝P3Scan之後,遇到的狀況卻不太一樣,出現
您的POP3未在60秒內回應,您要再等60秒嗎?
帳戶: msa.hinet.net
伺服器: msa.hinet.net
於是小弟想了可能的問題點..
Outlook向Hinet信箱收信時,透過REDIRECT轉到8110之後,沒有轉到msa.hinet.net. 所以才發生沒有回應的問題..
但小弟不才..不之如何察看Linux是否已經將要收信的訊息交給Hinet..
所以還請Jamyy大大不吝給予指教! 感謝~~!!
Posted by: JaKson at 2008年03月21日 12:48
JaKson 您好,
凡是 proxy 類的 daemon, 從 lan client 端來的連線會轉成從本機到遠端的連線.
例如: linux host 的 ip 是 192.168.1.1, 當 lan client 透過 linux host 的 squid 上網時, 用 tcpdump port 80 觀察結果就是: 192.168.1.1:隨機埠口 --> 遠端 host:80
所以您可以在 p3scan 那台機器上執行 tcpdump port 110 來觀察 "本機到 hinet 110 port " 是否有封包傳遞
Posted by: Jamyy at 2008年03月24日 11:46
Jammy您好
感謝大大的回應,小弟按照大大的指令測試後
發現110 port並未有任何資料傳出
所以.或許小弟的猜測正確
但不解的是.是小弟哪裡設定錯誤了?導致無法傳出呢? ><
還請Jamyy大大不吝指教~ 感謝!
Posted by: JaKson at 2008年03月25日 08:46
JaKson 您好,
您可以觀察 /var/log/messages 看有無相關訊息
如果還是不行, 方便的話請把您的詳細環境描述一下,
並把 p3scan.conf 一起寄給我, 我再幫您看看囉~
Posted by: Jamyy at 2008年03月26日 09:30
Jamyy 您好,
在收信同時,小弟觀察/var/log/messages後,並未發現任何訊息在此出現,所以,小弟將所有安裝過程,以及p3scan.conf一併寄信給Jamyy大大,還請大大有空在幫小弟看看~ 感謝!!
Posted by: JaKson at 2008年03月26日 23:27