Ubuntu下爲郵件服務器配置反垃圾和反病毒

系統:ubuntu-10.04.3-server-amd64mysql

服務器配置完整的FQDN名linux

下面咱們來學習,反垃圾郵件,和反病毒。 ios

你能夠在postfix 下的main.cf配置文件中過濾垃圾郵件。git


具體要怎樣作,請參考中國反垃圾郵件聯盟中的配置web


http://anti-spam.org.cn/sql


接下來是個人配置數據庫


配置 Amavisd-new, SpamAssassin 和 ClamAVapache


apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unrar bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax  rar  lha  arc  lzopubuntu


修改/etc/amavis/conf.d/15-content_filter_modesass


裏面的內容爲這樣


use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1; # ensure a defined return


修改

/etc/amavis/conf.d/21-Ubuntu_defaults

/etc/amavis/conf.d/20-debian_defaults


主要注意如下內容:


# @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
# @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested

這是對郵件的處理方式。


修改/etc/amavis/conf.d/50-user


裏面的內容因該爲這樣


use strict;
#
# Place your configuration directives here. They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#
$pax='pax';
#------------ Do not modify anything below this line -------------
1; # ensure a defined return



而後,添加 clamav 用戶到 amavis 用戶組,並重啓這兩個服務

sudo freshclam  //先更新病毒庫

adduser clamav amavis

sudo /etc/init.d/amavis restart

sudo /etc/init.d/clamav-daemon restart

sudo /etc/init.d/clamav-freshclam restart


而後,修改 /etc/postfix/main.cf,增長:


#### amavis config #####
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings


修改 /etc/postfix/master.cf,增長:


amavis unix - - - - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_bind_address=127.0.0.1


注意,這些 「-o」前面都有空格,大家記住是空兩格就好了

重啓 Postfix:


1. /etc/init.d/postfix restart

2. postfix check


root@mail:~# netstat -tap

激活Internet鏈接 (服務器和已創建鏈接的)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 mail.extmail.org:10024 *:* LISTEN 20822/amavisd (mast

tcp 0 0 mail.extmail.org:10025 *:* LISTEN 22856/master

tcp 0 0 mail.extmail.org:mysql *:* LISTEN 2277/mysqld

tcp 0 0 *:www *:* LISTEN 15824/apache2

tcp 0 0 *:ssh *:* LISTEN 2176/sshd

tcp 0 0 mail.extmail.org:ipp *:* LISTEN 2938/cupsd

tcp 0 0 mail.extmail.org:8888 *:* LISTEN 6947/dispatch.fcgi

tcp 0 0 *:smtp *:* LISTEN 22856/master

tcp6 0 0 [::]:imaps [::]:* LISTEN 10281/couriertcpd

tcp6 0 0 [::]:pop3s [::]:* LISTEN 10357/couriertcpd

tcp6 0 0 [::]:netbios-ssn [::]:* LISTEN 2611/smbd

tcp6 0 0 [::]:pop3 [::]:* LISTEN 10316/couriertcpd

tcp6 0 0 [::]:imap2 [::]:* LISTEN 10240/couriertcpd

tcp6 0 0 [::]:ssh [::]:* LISTEN 2176/sshd

tcp6 0 0 localhost:ipp [::]:* LISTEN 2938/cupsd

tcp6 0 0 [::]:microsoft-ds [::]:* LISTEN 2611/smbd

root@mail:~#


出現上面 「10024」,「10025」,字樣說明amavis安裝成功接下來咱們來作反垃圾。


===========================================================================

安裝 Razor,Pyzor 和 DCC 並配置 SpamAssassin

Razor,Pyzor 和 DCC 是網絡協做式垃圾郵件過濾器,它們能夠由 SpamAssassin 來調用。先安裝它們


apt-get install l razor  pyzor


由於DCC不在咱們軟件庫中咱們要執行下面的操做


cd /tmp

wget http://launchpadlibrarian.net/11564361/ ... 5_i386.deb

wget http://launchpadlibrarian.net/11564359/ ... 5_i386.deb

dpkg -i dcc-common_1.3.42-5_i386.deb

dpkg -i dcc-server_1.3.42-5_i386.deb

(http://launchpadlibrarian.net/中找安裝包)

而後修改 SpamAssassin 配置文件 /etc/spamassassin/local.cf,以調用它們:


gedit /etc/spamassassin/local.cf


把下列的代碼寫在最後面


#dcc
use_dcc 1
dcc_path /usr/bin/dccproc
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
#whitelist
whitelist_from *@*.edu.cn *@ujn.cn *@ujn.org.cn
# ---------------------------------------------------------------------------
# URL: http://www.anti-spam.org.cn/
#### 最佳推薦之使用CBL- #####
header RCVD_IN_CBLLESS eval:check_rbl('cblless', 'cblless.anti-spam.org.cn.', '127.0.8.5')
describe RCVD_IN_CBLLESS Received via a relay in cblless.anti-spam.org.cn
tflags RCVD_IN_CBLLESS net
score RCVD_IN_CBLLESS 3.5
#### 最佳推薦之使用CML #####
header RCVD_IN_CML eval:check_rbl('cml', 'cml.anti-spam.org.cn.', '127.0.8.1')
describe RCVD_IN_CML Received via a white list relay in cml.anti-spam.org.cn
tflags RCVD_IN_CML net nice
score RCVD_IN_CML -20.0


上面白名單部分,你能夠將你的本地虛擬域或者你認爲安全的域列出來,這樣能夠避免域內郵件被過濾。下面的 rbl 來自 http://www.anti-spam.org.cn/。這樣配置能夠防止在 Postfix 直接配置的狀況下,把來自這些地址的非垃圾郵件直接拒絕。


咱們再來編輯/etc/spamassassin/v310.pre


咱們把 #loadplugin Mail::SpamAssassin:lugin:CC

前的「#」給去掉


而後重置spamassassin 請執行


spamassassin --lint


而後從新啓動 Amavisd-new:


/etc/init.d/amavis restart


注意這裏不是啓動 spamassassin,由於 spamassassin 以及配置爲由 Amavisd-new 來調用了。


再更新咱們的SpamAssassin


sa-update --no-gpg


爲了讓它之後可以自動更新,咱們要作這樣兩步

執行下面的建一個腳本


crontab -e


把下面的代碼複製


10 4 * * * /usr/bin/sa-update --no-gpg &> /dev/null


按ctrl+o 來保存,按ctrl+x來退出

這樣天天早上 4 點 10 分,就會自動下載更新。

spamassassin 默認有不少規則,在/usr/share/spamassassin裏面。


安裝 Spam Locker 反垃圾郵件


在 Ubuntu 上安裝 Spam Locker 比較簡單了,大部分 perl 包在上面已經安裝了。


咱們從www.extmail.org下載最新的 slockd-0.99.tar.gz 咱們將它解壓,並放到/usr/local下面


tar zxvf slockd-0.99.tar.gz

mv slockd /usr/local/slockd


而後編輯 /usr/local/slockd/config/main.cf,將


setsid 1

log_file /var/log/slockd.log


兩行前面的註釋去掉。


將 /usr/local/slockd/slockd-init 複製到 /etc/init.d 目錄下,而後創建啓動關閉服務的連接文件:


cp /usr/local/slockd/slockd-init /etc/init.d/slockd

update-rc.d slockd start 19 2 3 4 5 . stop 21 0 1 6 .


建立 /etc/logrotate.d/slockd


/var/log/slockd.log {

daily

notifempty

missingok

rotate 5

compress

create 644 root root

sharedscripts

}


而後,編輯 /usr/local/slockd/config/whitelist,加入你的白名單列表。以後啓動 slockd 服務。


/etc/init.d/slockd start


編輯 /etc/postfix/main.cf,將

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unknown_sender_domain,reject_non_fqdn_hostname, reject_non_fqdn_sender,reject_non_fqdn_recipient, reject_unknown_recipient_domain,reject_unauth_destination, reject_unauth_pipelining,reject_invalid_hostname, check_recipient_maps


中的

check_recipient_maps


替換爲


check_policy_service inet:127.0.0.1:10030


便可。而後從新啓動 Postfix。


/etc/init.d/postfix reload



啓動/測試 slockd


在/usr/local/slockd目錄下,執行


./slockd


此時slockd將啓動,並進入監聽模式,接受來自10030端口的請求,要注意的是,若是剛纔配置了log_file路徑,則調試信息必須經過以下命令得到:


tail -f /var/log/slockd.log


打開另外一個ssh/終端窗口,進入/usr/local/slockd/tools 目錄,輸入:


perl policy_sig -h localhost -p 10030 --helo FOOBAR \

--ip 192.168.0.1 --from test@foo.com --to test@bar.com


此時,程序應該返回以下錯誤信息:


action=504 <FOOBAR>: rejected, see http://bl.extmail.org/cgi/why?fqdn


這表示slockd初步的正常工做了。


ps 先看一下 spam lock 的進程還有沒有


ps aux |grep slockd


會有以下顯示


root 20821 1.9 5.1 48736 19708 ? S 13:19 0:08 gedit /usr/local/slockd/config/whitelist

root 21005 0.0 1.1 7592 4344 ? SNs 13:20 0:00 slockd (master)

root 21007 0.0 1.8 11636 7084 ? SN 13:20 0:00 slockd (idle)

root 21014 0.0 1.8 11612 7068 ? SN 13:20 0:00 slockd (idle)

root 21047 0.0 0.2 3560 820 pts/1 S+ 13:26 0:00 grep slockd


又出現問題發現spamassassin 重啓不了


SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin


如上錯誤,


咱們定位到 /etc/default/spamassassin 打開它


# Change to one to enable spamd

ENABLED=0


改成1 重啓-


本篇文章來源於 Linux公社網站(www.linuxidc.com)  原文連接:http://www.linuxidc.com/Linux/2009-11/22514p11.htm



pamAssassin的工做原理

SpamAssassin能夠經過許多方法來檢驗一封電子郵件究竟是不是垃圾郵件:

一、檢查電子郵件的首部信息是否符合各類Internet標準(例如:數據的格式是否正確?)

二、檢查電子郵件的首部和內容部分的信息是否包含一些垃圾郵件中常見的、用各類語言寫成的短語或是句子(例如:「快速致富」或是退定該郵件的一些方法描述)。

三、將首部和內容部分的「校驗和」與多個垃圾郵件信息在線數據庫中的「校驗和」做比較來確認垃圾郵件。

四、檢查郵件發送者的IP地址是否在一些在線的站點列表中(這是一些已經被垃圾郵件發送者利用,或是懷疑被垃圾郵件發送者利用的站點)。

五、自定義地址、主機名和域名的白名單(白名單中的郵件不會做爲垃圾郵件)和黑名單(上了黑名單的郵件會被看成垃圾郵件)。SpamAssassin能夠根據用戶郵件的歷史記錄自動構建白名單。

六、使用人爲指定的一些垃圾郵件(一般成爲spam)和非垃圾郵件(一般成爲ham)的例子來訓練SpamAssassin識別用戶收到的各類不一樣的垃圾郵件。

七、使用SPF協議(Sender Policy Framework)比較郵件發送系統的IP地址和郵件發送人的域名,來肯定該郵件發送系統是否容許該域名下的用戶發送郵件。這是SpamAssassin 3.0中增長的新特性。

八、SpamAssassin會優先排除那些願意使用Hashcash形式的郵件發送者(使用Hashcash形式會做一些附加計算,消耗一些時間)。由於垃圾郵件發送者若是支持這些附加計算,就不能迅速發送大量垃圾郵件了。這是SpamAssassin 3.0中增長的新特性。

九、SpamAssassin將信息格式驗證、內容過濾和參考網絡黑名單這三種方式相結合。基於過濾的系統要求用戶參與,並且會引發郵件收發時的系統延遲。還有其餘一些反垃圾郵件的方法,這些方法都各有利弊,,其中一些能夠還能夠用來替代SpamAssassin。

十、在一個挑戰/應答系統中,系統會暫存一個陌生髮送者發送的全部信息,並返回一個特定代碼或是一組指令做爲一個挑戰。陌生髮送者必須以某種方式做出應答,以驗證其郵件地址,並證明(一般使用交談的方式)發送者是一我的而不是一個自動垃圾郵件發送程序。若是發送者應答成功,系統就會真正接受該信息。

十一、在灰名單系統中,當郵件服務器遇到陌生的郵件發送人或是陌生的郵件發送系統時,它先返回一個臨時的SMTP失敗代碼。若是上述的郵件發送系統在通過一個合理的時間間隔後,試圖從新發送郵件,郵件服務器會正常接收該郵件,及隨後來自於該郵件發送系統的其餘郵件(譯註:郵件服務器認爲這不是一個發送垃圾郵件的郵件發送系統,所以贊成接收郵件)。由於當垃圾郵件發送者遇到上面的臨時SMTP錯誤時,一般會把它看成永久性錯誤,或是試圖在灰名單規定的時間間隔內連續屢次發送該郵件,因而郵件服務器就會拒絕接收來自這個郵件發送系統的郵件(譯註:郵件服務器認爲這就是一個發送垃圾郵件的郵件發送系統,所以拒絕接收郵件)。

十二、在限時地址系統中,一個電子郵件地址能夠衍生出多個惟一性變體地址,用戶能夠在不一樣的web表格、電子郵件或是新聞組等須要電子郵件地址的地方分別填寫不一樣的變體地址。能夠限定這些變體地址的有效時間,也能夠經過「激活」方式來激活某個原來無效變體地址。在這些系統中,若是用戶的某一個變體地址收到了垃圾郵件,那麼他(或她)就能輕易的找到發送垃圾郵件的公司(或是那些把你的郵件地址買給垃圾郵件發送者的公司),用戶只須要取消這個變體地址就能夠阻止垃圾郵件了。

1三、在小額付費系統中,郵件發送者每次發送郵件都必須付費(金額很小),這樣一來發送大量的垃圾郵件就會致使高額的開銷。在一些相似的系統中,若是收件人確認其收到的不是垃圾郵件,則小額付費會返還給郵件發送者。(SpamAssassin 3.0中經過Hashcash的方式來支持小額付費的一個變體,在這個變體中小額付費演變爲Hashcash中處理時間的消耗而不是真的付錢。)

slockd 垃圾郵件攔截

網上記錄,不記得來源,目前在EMOS1.5中正常使用

對於slockd,主要編輯黑白名單,及RBL

若是修改後不起做用,能夠重啓slockd,重啓方式:

/usr/local/slockd/slockd-init stop

/usr/local/slockd/slockd-init start

1、黑白名單

blacklist  黑名單,這項裏只能寫域名

whitelist    白名單,這項裏只能寫域名

sender_blackist 黑名單,這項裏便可寫域名也能夠對某域裏某一用戶。

sender_whitelist 白名單,同上。

recip_whitelist

recip blacklist

黑白名單配置文件路徑 /usr/local/slockd/config/

黑白名單的編輯方法能夠用正值表達式。編輯時格式:/正值表達式/

如裏直接寫就是普通表達式

2、RBL

vi /usr/local/slockd/config/plugin.cf

少數RBL可能攔截過於敏感,建議只使用如下的RBL

zen.spamhaus.org

bl.spamcop.net

3、關於啓動slockd的命令,EMOS1.4集成的slockd能夠不重啓,修改即時生效。

/usr/local/slockd/slockd-init start

白名單是先於黑名單起做用的,因此測試時必定要細心。還有上面提到的黑白名單不一樣的效果,你們千萬不要在blacklist文件裏去編輯形如[email=emos@extmail.org]emos@extmail.org[/email]的表達式,它只支持域的形式extmail.org,如果要編輯[email=emos@extmail.org]emos@extmail.org[/email]那隻能在sender_blacklist文件裏去設置,還有全部的正值表達式都是用/表達式/的形式,不用/把內容括起來就被認爲普通表達式。




控制發送和接受附件的類型---支持發送exe文件:

Vim  /etc/amavis/conf.d/ 20-debian_defaults

一、

 qr'^\.(exe-ms)$', //阻擋zip,rar中的exe文件//加#,

二、

[ qr'^\.(exe|zip|rar|arc|arj|zoo)$'=> 0 ], # 在這裏加支持的文件類型,並去掉原來的#號allow any within such archives


三、

刪除掉兩處配置中的exe

     qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,

=====================================

gitec@mail:/etc/apache2$ sudo  /etc/init.d/clamav-daemon start

* Clamav signatures not found in /var/lib/clamav

* Please retrieve them using freshclam

* Then run '/etc/init.d/clamav-daemon start'

出現這種錯誤應先更新病毒庫。

sudo freshclam

sudo  /etc/init.d/clamav-daemon start

相關文章
相關標籤/搜索