ClamAV

English Version

[ 最新版本: 0.98.7 ]


2015/04/30

Fedora 21: 0.98.7 版本的 rpm 檔案可 在這裡下載

CentOS-5.11: 0.98.7 版本的 rpm 檔案可 在這裡下載


2015/02/05

Fedora 20: 0.98.6 版本的 rpm 檔案可 在這裡下載

CentOS-5.11: 0.98.6 版本的 rpm 檔案可 在這裡下載


2014/11/19

Fedora 20: 0.98.5 版本的 rpm 檔案可 在這裡下載

CentOS-5.10: 0.98.5 版本的 rpm 檔案可 在這裡下載


2014/06/17

Fedora 20: 0.98.4 版本的 rpm 檔案可 在這裡下載

CentOS-5.10: 0.98.4 版本的 rpm 檔案可 在這裡下載


2014/05/08

Fedora 20: 0.98.3 版本的 rpm 檔案可 在這裡下載

CentOS-5.10: 0.98.3 版本的 rpm 檔案可 在這裡下載


2014/01/16

Fedora 19: 0.98.1 版本的 rpm 檔案可 在這裡下載

CentOS-5.10: 0.98.1 版本的 rpm 檔案可 在這裡下載


2013/09/20

Fedora 19: 0.98 版本的 rpm 檔案可 在這裡下載

CentOS-5.9: 0.98 版本的 rpm 檔案可 在這裡下載


2011/06/17

如果你升級到 Fedora 15 而使用我所提供的 clamav rpm 包裝,你的 clamav 就無法啟動了 。 在 Fedora 15,/run 這個目錄掛到 /var/run 已經是虛擬檔案系統如同 /proc 一樣。 所以你關閉或重新啟動電腦時 /var/run/clamav 這個目錄已經不存在了。但是 clamav 需要這個目錄因為 clamav 會把它的 pid 和 sock 檔案都放在這裡。因為 /var/run/clamav 不存在所以 clamav 就無法啟動了。

要解決這個問題,請建 clamav.conf 這個檔案,內容是:

d /var/run/clamav 0700 clamav clamav -

然後把 clamav.conf 這檔案放在 /etc/tmpfiles.d/ 裡。

重新啟動電腦之後 clamav 就會正常的運作了。

Fedora 15 已經使用 systemd 代替傳統的 SysVinit。初始啟動程式是放在 /lib/systemd/system 而不在 原來的 /etc/rc.d/init.d。我已重建 clamav-0.97.1 rpm 包裝符合 systemd 的需求。你在這下載

當然指令也改變了。以下是指令的對照表:

systemd

SysVinit

systemctl start name.service service name start
stop name.service name stop
restart name.service name restart
status name.service name status
reload name.service name reload
try-restart name.service name condrestart
enable name.service chkconfig name on
disable name.service name off

請參考:https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/zh


我從來沒有想過要寫如何安裝 ClamAV 這篇文章因為安裝 ClamAV 是一個很容易的事情。但是為了完整﹝完整電子郵件方案: Sendmail + milter-greylist + ClamAV Anti-Virus + SpamAssassin﹞,我決定乾脆把它寫了。

有人可能會問為什麼在一個 Linux 伺服器安裝一個防毒程式?畢竟沒有病毒會攻擊 Linux。相反的, 大家知道病毒只攻擊微軟 Windows 這作業系統。對這問題的答案是:雖然電子郵件伺服器是安裝在 Linux 但是電子郵件的使用者很可能是在使用 Windows。為了保護你的使用者,乾脆也安裝了防毒程式。

我在使用 Fedora 14,所以我建的 clamav rpm 包裝和安裝是為 Fedora 14。

我在提供這些 rpm 包裝。我順便也提供 CentOS 5 的 rpm 包裝

因為 Fedora 14 也支援 ClamAV,當然你可以使用 Fedora 14 所提供的 rpm 包裝來安裝或更新。 我自己喜歡建我的 rpm 包裝因為我感覺 Fedora 14 負責 ClamAV 的人更新的很慢。

註:如果你不用 Fedora,你可以在 http://www.clamav.net/download/packages下載你 distribution 的 binary package。

安裝/更新

Fedora 建議安裝/更新 rpm 包裝時使用 yum。所以從 rpm 檔案安裝/更新,要下的指令是:

yum install rpmfile1 [rpmfile2] [...]
yum update rpmfile1 [rpmfile2] [...]

因為 Fedora 已經支援 ClamAV,但是如果你要使用我提供的 ClamAV rpm 檔案來安裝/更新的話,你必須告訴 yum 不要使用 Fedora 提供的 ClamAV 包裝。 就在 /etc/yum.repos.d/fedora.repo 和 /etc/yum.repos.d/fedora-updates.repo 兩個檔案加入 "exclude=clamav*"。

安裝時,執行:

yum install --nogpgcheck clamav-server-0.97.1-12i686.rpm clamav-0.97.1-3.i686.rpm clamav-milter-0.97.1-3.i686.rpm

更新時,執行:

yum update --nogpgcheck clamav-server-0.97.1-3.i686.rpm clamav-0.97.1-3.i686.rpm clamav-milter-0.97.1-3.i686.rpm

註:我把 clamav-devel 包裝合併到 clamav 包裝 (clamav-0.96 2010/04/02)。

設定檔案:

/etc/clamd.conf
/etc/freshclam.conf
/etc/clamav-milter.conf

除了你有特別的需要,要不然就不需要修改這些設定檔案的設定內容。都沒有問題的。

現在我們可以啟動 clamav-milter 、 clamd 和 freshclam:

chkconfig   clamav-milter   on
chkconfig   clamd   on
chkconfig   freshclam   on
service   clamav-milter   start
service   clamd   start
service   freshclam   start

因為我們使用 milter (clamav-milter),我們必須告訴 sendmail 收到信件時先呼叫 clamav-milter 來處理。我們要編輯 /etc/mail/sendmail.mc。

首先要設定 milter 的環境。在 OSTYPE(`linux')dnl 之後加入以下:

define(`confMILTER_MACROS_CONNECT', `H, j, _, {daemon_name}, {daemon_port}, {if_name}, {if_addr}, {client_addr}')
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')
define(`confMILTER_MACROS_ENVFROM', `i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}, {rcpt_addr}')
define(`confMILTER_MACROS_EOM', `{msg_id},?{mail_addr}, {rcpt_addr}, i')
define(`confMILTER_MACROS_ENVRCPT', `{rcpt_mailer}, {rcpt_host}, {rcpt_addr}')

然後告訴 sendmail 要呼叫 clamav-milter。加入以下兩列:

INPUT_MAIL_FILTER(`clamav-milter',`S=local:/var/run/clamav/clamav-milter.sock,F=, T=S:4m;R:4m')
define(`ConfINPUT_MAIL_FILTERS', `clamav-milter')

註:如果你也同時使用 milter-greylist,應該先放 milter-greylist 的設定,然後才放 clamav-milter。這樣的,當一封電子郵件到達,Sendmail 會先呼叫 milter-greylist 然後呼叫 clamav-milter。整個設定如下:

INPUT_MAIL_FILTER(`greylist',`S=local:/var/run/milter-greylist/milter-greylist.sock')
define(`ConfINPUT_MAIL_FILTERS', `greylist')
INPUT_MAIL_FILTER(`clamav-milter',`S=local:/var/run/clamav/clamav-milter.sock,F=, T=S:4m;R:4m')
define(`ConfINPUT_MAIL_FILTERS', `clamav-milter')

重新建 sendmail.cf 然後重新啟動 sendmail:

m4   /etc/mail/sendmail.mc   >   /etc/mail/sendmail.cf
service   sendmail   restart

現在你的使用者可以享受沒有病毒的電子郵件了。


蔡由世神父
2005/03/23
更新: 2014/11/19