亮的MARK库

mark.liangliang.org.cn

十阵图

“双喜临门” 师 兵 连 排 师 旅 连 炸 炸 营 团 旅 军 兵 连 司 兵 营 雷 排 团 排 雷 旗 雷

两头皆师,后续不同,一跟炸旅,一跟旅炸;一做防守,一为猛攻。三将亡而旗不亮,暗令可成拔旗之功。入选阵库,为第一号。

(2)作者: 情人雨*夜风铃(txyj00) 《 【天下一家】:神勇无敌 》

“午夜风铃” 连 旅 司 兵 团 师 炸 军 团 排 连 兵 排 营 营 雷 雷 连 师 炸 雷 旗 旅 排 兵

一炸挂中,兼顾两路;一炸伏角,眈眈虎视。后十子所布之防御,堪称包角雷中的精品。入选阵库,为第二号。

(3)作者:花言

“飞花逐月” 连 司 军 兵 师 师 连 旅 团 弹 弹 团 营 排 营 旅 兵 兵 排 雷 雷 旗 雷 排 连

出真令,护假令,借中军,有三令之相,真真假假,假假真真,杀敌于莫名。双炸挂肋,临阵不慌。兵贵速,更贵奇;出敌料,奏奇功。入选阵库,为第三号。

(4)作者: ★兵★053*飘香剑(kingofourgamer)

“飘香一剑” 师 兵 连 旅 师 团 连 炸 团 营 炸 营 司 兵 连 军 兵 旅 雷 排 排 排 雷 旗 雷

此阵,右上之“旅、师、炸”,属铁三角防御。双炸一侧,可防联手双令。后路杀出,拚令下军,剑出飘香,可以一战。入选阵库,为第四号。

(5)作者: 〖破剑〗(myhell99)

“于无声处” 师 兵 军 排 营 团 兵 旅 师 弹 连 司 弹 排 连 营 雷 连 雷 团 旅 旗 雷 排 兵

此阵,后防布“窝心雷”,外加旗旁一旅,后路一团,全阵有五雷之巨。大子俱前,或战或兑,使敌无力直夺旗旁,后路之忧解于无形,实乃“窝心雷”布局中的上品。入选阵库,为第五号。

(6)作者: ★兵★053*飘香剑(kingofourgamer)

“河东狮吼” 军 兵 兵 排 团 司 连 排 师 排 炸 师 团 连 营 旅 炸 旅 连 雷 兵 雷 营 旗 雷

阵作“狮”状,发力而“吼”,有佛门“狮子吼”之功,迅雷不及掩耳,杀敌于懵懂之间;雷力刚猛,二线一炸,若急雨过后,倚中之象;动若脱兔,静如处子。阵布闪电,不必为闪电用。入选阵库,为第六号。

(7)作者: 〖破剑〗(myhell99)

“乌龙摆尾” 营 兵 团 排 连 师 兵 司 旅 连 军 排 连 兵 团 弹 旅 师 营 雷 弹 排 雷 旗 雷

此阵,副旗边五线六线叠炸,匪夷所思。旗边以令军挡,尽出后路兵力,舍近求远,全阵发动,末梢双弹舞,故名“乌龙摆尾”。入选阵库,为第七号。

(8)作者: 假官!!(lslak2000)

“三节阵” 团 排 军 兵 令 连 兵 团 师 弹 兵 连 排 连 旅 雷 营 师 弹 旅 雷 旗 雷 排 营

此阵,每两行这一节,第一节“令、军”,第二节“师、旅、炸”,第三节“师、旅、炸”,三节平衡,进可以战,退可以守。旗旁叠雷,后路开放,深得布阵之法。入选阵库,为第八号。

(9)作者: ◆阎◇红罗婉笑(hupo0999) 《 温州四国军棋协会:成员 》

“狼来了” 团 兵 旅 师 连 营 兵 军 司 兵 弹 师 排 弹 团 营 旅 连 雷 连 排 排 雷 旗 雷

右路聚大,却无真狼,真狼藏左路弱子堆中。假狼尽,真狼至,瞒天过海,杀敌郁闷。此阵,敌明速,已露晚。敌明我暗,使来别有从容处。入选阵库,为第九号。

(10)作者: ★一⑴雷恩【龙骑士】(slinchi)

“雾山重剑” 连 排 兵 兵 团 师 连 司 团 营 营 师 炸 兵 旅 军 连 旅 雷 炸 雷 旗 雷 排 排

此“雾山重剑”阵,雾在炸旁一雷,团旁一营;剑虽多多,重者只在角上一军。损小明敌,能发能收,确属好阵。入选阵库,为第十号。

[root@MyBookWorld bin]# cat /proc/cpuinfo Processor: ARM926EJ-Sid(wb) rev 5 (v5l) BogoMIPS: 99.73 Features: swp half thumb fastmult edsp java CPU implementer: 0x41 CPU architecture: 5TEJ CPU variant: 0x0 CPU part: 0x926 CPU revision: 5 Cache type: write-back Cache clean: cp15 c7 ops Cache lockdown: format C Cache format: Harvard I size: 32768 I assoc: 4 I line length: 32 I sets: 256 D size: 32768 D assoc: 4 D line length: 32 D sets: 256

Hardware: Oxsemi NAS Revision: 0000 Serial: 0000000000000000 [root@MyBookWorld bin]#

Posted by Admin on April 1st, 2008

If you’re new here, you may want to subscribe to my RSS feed. Thanks for visiting!

We have already discussed how to install mail server with postfix+Devcot+SASL+Squirrel Mail in this article we will see how to add spam filter for postfix mail server.

Apache SpamAssassin is an extensible email filter that is used to identify spam. Once identified, the mail can then be optionally tagged as spam for later filtering. It provides a command line tool to perform filtering, a client-server system to filter large volumes of mail, and Mail::SpamAssassin, a set of Perl modules allowing Apache SpamAssassin to be used in a wide variety of email systems.

Install Spamassassin in Debian

#apt-get install spamassassin spamc

spamassassin package can also be integrated into a Mail Transport Agent such as postfix.

Preparation

By default Spamassassin will run as root users when you install from debian repository and is not started to avoid that, we are going to create a specific user and group for spamassassin.

#groupadd -g 5001 spamd

#useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd

#mkdir /var/lib/spamassassin

#chown spamd:spamd /var/lib/spamassassin

we need to change some settings in /etc/default/spamassassin and make sure you get the following values

ENABLED=1 SAHOME=”/var/lib/spamassassin/” OPTIONS=”–create-prefs –max-children 5 –username spamd –helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log” PIDFILE=”${SAHOME}spamd.pid”

We are going to run spamd daemon as user spamd and make it use its own home dir (/var/lib/spamassassin/) and is going to output its logs in /var/lib/spamassassin/spamd.log

spamassassin Configuration

we need to give spamassassin some rules. The default settings are quite fine, but you might tweak them up a bit. So let’s edit /etc/spamassassin/local.cf and make it looks like that

#vi /etc/spamassassin/local.cf

Modify this file looks like below

rewrite_header Subject [***** SPAM _SCORE_ *****] required_score 2.0 #to be able to use _SCORE_ we need report_safe set to 0 #If this option is set to 0, incoming spam is only modified by adding some “X-Spam-” headers and no changes will be made to the body. report_safe 0

# Enable the Bayes system use_bayes 1 use_bayes_rules 1 # Enable Bayes auto-learning bayes_auto_learn 1

# Enable or disable network checks skip_rbl_checks 0 use_razor2 0 use_dcc 0 use_pyzor 0

we set spamassassin’ spamd default settings to rewrite email subject to [***** SPAM _SCORE_ *****], where _SCORE_ is the score attributed to the email by spamassassin after running different tests, only if the actual score is greater or equal to 2.0. So email with a score lower than 2 won’t be modified.

To be able to use the _SCORE_ in the rewrite_header directive, we need to set report_safe to 0.

In the next section, we tell spamassassin to use bayes classifier and to improve itself by auto-learning from the messages it will analyse.

In the last section, we disable collaborative network such as pyzor, razor2 and dcc. Those collaborative network keep an up-to-date catalogue of know mail checksum to be recognized as spam. Those might be interresting to use, but I’m not going to use them here as I found it took long enough to spamassassin to deal with spams only using it rules.

Restart spamassassin using the following command

#/etc/init.d/spamassassin start

Configuring Postfix call Spamassassin

spamassassin will be invoked only once postfix has finished with the email.

To tell postfix to use spamassassin, we are going to edit /etc/postfix/master.cf

#vi /etc/postfix/master.cf

Change the following line

smtp inet n - - - - smtpd

to

smtp inet n - - - - smtpd -o content_filter=spamassassin

and then, at the end of master.cf file add the following lines

spamassassin unix - n n - - pipe

user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Save and exit the file

That’s it our spam filter is setted up, we need to reload postfix settings and everything should be ready.

#/etc/init.d/postfix reload

我很丑,我也不会温柔. 我没有音乐,也没有啤酒. 我只有平凡的一切和永远的朋友. 想生活的快乐没有忧愁. 用轻轻的快乐带着时间慢慢的走. 喝一杯苦涩的柚子酒 尝试品味苦涩,让习惯的生活有些许的情愁.

SpamAssassin 垃圾信標題加註**SPAM**

由 aliok 發表於 週二 9月 16, 2008 11:17 am 2008/07/09

現在 CentOS 5.2 並沒有提供這兩個rpm檔案。你必須自己建立rpm檔來安裝或者用tarbo的方式安裝,現在蔡神父有提供這二個建立好的rpm 檔來給大家下載使用,如果想要使用的請在 這裡下載。

-——————————————————————————-

我們現在要安裝和設定 SpamAssassin。做這種工作你必須是 root:

su - 到哪兩個檔案的子目錄,然後安裝:

cd /home/username/rpmbuild/RPMS/i686 rpm -Uvh spamassassin-3.2.5-1.i686.rpm perl-Mail-SpamAssassin-3.2.5-1.i686.rpm

我自己比較喜歡用系統安裝,所以我不願意讓一般使用者改變需要的參數:

cd /etc/rc.d/init.d 編輯 spamassassin 檔案更改:

SPAMDOPTIONS=”-d -c -m5 -H” ==> SPAMDOPTIONS=”-d -x -m5 -H”

現在我們設定 SpamAssassin:

cd /etc/mail/spamassassin

編輯 local.cf。我自己使用的設定如下:

trusted_networks xxx.xxx.xxx/24 # 這是你 class c 之 IP lock_method flock # 如果你在使用 NFS,請不要使用這個 required_score 5.0 # 成績超過 5.0 算是 spam report_safe 0 use_auto_whitelist 0 use_bayes 0 use_bayes_rules 0 bayes_auto_learn 0 ok_languages all ok_locales all

編輯 v310.pre。刪除註解符號 #:

#loadplugin Mail::SpamAssassin::Plugin::TextCat ==> loadplugin Mail::SpamAssassin::Plugin::TextCat

當一封 email 已判定是 spam 時你如果想要在主題加 *****SPAM*****,你就在 /etc/mail/spamassassin/local.cf 加:

rewrite_header Subject *****SPAM*****

為了更了解這些設定參數的意義和知道對你自己環境所需要的其它參數,請執行以下指令:

perldoc Mail::SpamAssassin::Conf

現在要檢查設定參數是否正確:

spamassassin -x -D –lint

現在 SpamAssassin 已經設定好了,你如何告訴 Sendmail 要呼叫 SpamAssassin 掃描進來的郵件?你可以使用 Sendmail 的 milter ( spamass-milt) 來做這個工作,但是我自己喜歡用 procmail 來處理。

編輯 /etc/procmailrc ﹝建這個檔案如果不存在﹞,內容如下:

:0fc * < 256000 /usr/bin/spamc

:0 * ^X-Spam-Level: \*\*\*\*\*\*\*\* /dev/null

註:SpamAssassin 只會處理郵件大小小於 256000 bytes。如果 Spam-Level 成績有八個以上的 * ﹝確定這是 spam 郵件﹞就丟掉。

一切準備好了。你必須啟動 SpamAssassin:

chkconfig spamassassin on service spamassassin start

你可以測試 SpamAssassin 會不會抓 spam。執行以下指令:

cd /usr/share/doc/spamassassin-3.2.5 spamc < sample-spam.txt

這樣就好了。每次 Sendmail 收到郵件,SpamAssassin 會過濾這郵件判斷是否 spam。我建議同時使用 milter-greylist 效果非常好。現在你可以輕鬆了,怕你會無聊因為已經沒有可殺的 spam!

之前想做,可是坛子里边没有相应的文章,幸得何老大的指点和互联网上找的文章,东拼西凑做了出来。上星期上线,效果很好,就是灰名单截了不少合法的邮件,但是不知道如何放行。 觉得还是把自己的配置过程贴出来,好让后来者少走弯路,如果里边有错误请指正,因为我对postfix不是太熟悉,谢谢

注:mydomain1.com及mydomain2.com是需要转递邮件的两个域名

1.安装freebsd 6.1 cvsup source 并且 make world cvsup ports 修改/etc/rc.conf,加入: sendmail_enable = “NO” sendmail_submit_enable = “NO” sendmail_outbound_enable = “NO” sendmail_msp_queue_enable = “NO” 修改/etc/periodic.conf daily_clean_hoststat_enable = “NO” daily_status_mail_rejects_enable = “NO” daily_status_include_submit_mailq = “NO” daily_submit_queuerun = “NO”

2.安装postfix cd /usr/ports/mail/postfix make install clean 安装过程当中的选项选择默认选项

3.配置postfix为邮件网关 修改/usr/local/etc/postfix/main.cf以下行: mynetworks = 127.0.0.0/8 10.40.0.0/24 #10.40.0.0/24根据自己的内网ip修改 myorigin = mydomain1.com mydestination = local_recipient_maps = local_transport = error:local mail delivery is disabled virtual_alias_maps = hash:/usr/local/etc/postfix/virtual relay_recipient_maps = hash:/usr/local/etc/postfix/relay_recipients transport_maps = hash:/usr/local/etc/postfix/transport relay_domains = mydomain1.com mydomain2.com parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destiantion #此时不修改此项也行,因为后边安装clam也要修改

修改/usr/local/etc/postfix/virtual,加入: postmaster postmaster@mydomain1.com

新建/usr/local/etc/postfix/relay_recipients,内容为转递的邮件地址: user1@mydomain1.com x user2@mydomain1.com x … user1@mydomain2.com x …

修改/usr/local/etc/postfix/transport,加入: mydomain1.com smtp:[10.40.0.3]:8025 #10.40.0.3为最终MTA的地址,8025是这个MTA的smtp端口,如果MTA的地址是ip,则必须用[]括住 mydomain2.com smtp:[10.40.0.3]:8025

运行/usr/local/sbin/postmap /usr/local/etc/postfix/virtual 运行/usr/local/sbin/postmap /usr/local/etc/postfix/relay_recipients 运行/usr/local/sbin/postmap /usr/local/etc/postfix/transport 这三个文件每次修改都要重新运行对应的命令,已生成.db文件

4.安装amavisd-new(抄自http://www.extmail.org/docs/extmail\_solution\_freebsd/) cd /usr/ports/security/amavisd-new make install clean 确保选择 LDAP MILTER RAR ARJ LHA ARC ZOO UNZOO LZOP FREEZE

修改/usr/local/etc/amavisd.conf $max_servers = 10; $sa_spam_subject_tag = '[SPAM] '; $mydomain = 'mydomain1.com'; $myhostname = 'mail.mydomain1.com'; @local_domains_maps = qw(.); $sa_tag_level_deflt = undef; $sa_tag2_level_deflt = 5.0; $sa_kill_level_deflt = 5.0; $final_virus_destiny = D_DISCARD; $final_banned_destiny = D_DISCARD; $final_spam_destiny = D_DISCARD; $virus_admin = “postmaster\@$mydomain”; $mailfrom_notify_admin = “postmaster\@$mydomain”; $mailfrom_notify_recip = “postmaster\@$mydomain”; $mailfrom_notify_spamadmin = “postmaster\@$mydomain”; @whitelist_sender_maps = read_hash(“$MYHOME/white.lst”); @blacklist_sender_maps = read_hash(“$MYHOME/black.lst”); $spam_quarantine_to = “spam\@$mydomain”; $virus_quarantine_to = “virus\@$mydomain”; $banned_quarantine_to = “spam\@$mydomain”; $hdrfrom_notify_admin = “Content Filter “;

运行 touch /var/amavis/white.txt touch /var/amavis/black.txt chown –R vscan:vscan /var/amavis/

修改/usr/local/etc/postfix/main.cf,增加: smtp-amavis unix - - n - 4 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes

127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -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=

运行 postconf -e 'content_filter = smtp-amavis:[localhost]:10024' postconf -e 'receive_override_options = no_address_mappings'

5.安装clamav(抄自http://www.extmail.org/docs/extmail\_solution\_freebsd/) cd /usr/ports/security/clamav make install clean 修改usr/local/etc/clamd.conf User vscan 修改/usr/local/etc/freshclam.conf DatabaseOwner vscan 修改/usr/local/etc/amavisd.conf,增加 ['ClamAV-clamd', \&ask_daemon, [“CONTSCAN {}\n”, “/var/run/clamav/clamd”], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], 运行 chown –R vscan:vscan /var/run/clamav/ chown –R vscan:vscan /var/log/clamav/ chown –R vscan:vscan /var/db/clamav/

6.配置Spamassassin(抄自http://www.extmail.org/docs/extmail\_solution\_freebsd/) cp /usr/local/etc/mail/spamassassin/local.cf.sample /usr/local/etc/mail/spamassassin/local.cf 修改/usr/local/etc/mail/spamassassin/local.cf report_safe 1 use_bayes 0 auto_learn 0 bayes_auto_expire 1 skip_rbl_checks 1 use_razor2 0 use_dcc 0 use_pyzor 0 dns_available no lock_method flock 新建/var/cron/sa.sh #!/bin/sh cd /tmp/ fetch -q http://www.ccert.edu.cn/spam/sa/Chinese\_rules.cf mv Chinese_rules.cf /usr/local/share/spamassassin/ /usr/local/etc/rc.d/amavisd forcerestart > /dev/null 执行chmod +x /var/cron/sa.sh 修改/etc/crontab,增加 0 0 * * 6 root /var/cron/sa.sh

修改/etc/rc.conf,增加 postfix_enable=”YES” clamav_clamd_enable=”YES” clamav_freshclam_enable=”YES” spamd_enable=”YES” amavisd_enable=”YES”

7.安装slockd 下载slockd.tar.gz tar zxf slockd.tar.gz mv slockd /usr/local/ 修改/usr/local/slockd/config/main.cf 去掉log_file的注释 修改/usr/local/etc/postfix/main.cf smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_policy_service inet:127.0.0.1:10030 修改/etc/rc.conf slockd_enable=”YES”

reboot,搞定

SpamAssassin

出自DebianWiki目錄 1 所需套件 2 簡介 3 設定 SpamAssassin 4 設定 SpamAssassin 和 Postfix 搭配使用 4.1 spamd/spamd 模式(一般作法) 4.2 利用 Amavisd-new 來呼叫 SpamAssassin(建議做法) 5 測試 SpamAssassin 6 其它

[編輯] 所需套件

spamassassin (sa) [編輯] 簡介

SpamAssassin (SA) 是利用 Perl 來進行文字分析以達到過濾垃圾郵件之目的。 它的判斷方式是藉由評分方式 - 若這封郵件符合某種特徵,則加以評分。若總得分高於某項標準,則判定為垃圾郵件。

為了應用於高負載之伺服器上,它也提供了 spamc/spamd 這組以 Client/Server 為架構之程式,如此可以有效降低 SpamAssassin 對系統資源的需求。但 Debian 預設上並不會啟用這個服務。

而我們還可以替而使用 Amavisd-new 來呼叫 SpamAssassin,也就是讓 Amavisd-new 肩負掃毒及過濾垃圾郵件的重責。而在本人的系統中,這個方法比起使用 spamc/spamd 的做法快上了非常多,所以建議採用這種作法。 [編輯] 設定 SpamAssassin

修改 /etc/mail/spamassassin/local.cf 如下,這是 SpamAssassin 的設定檔: (詳細設定請參考 man Mail::SpamAssassin::Conf) (修改 /etc/mail/spamassassin/local.cf 後會即時生效,用不著重新啟動 SpamAssassin。) # This is the right place to customize your installation of SpamAssassin. # # See ‘perldoc Mail::SpamAssassin::Conf’ for details of what can be # tweaked. # ########################################################################### # # rewrite_subject 0 # report_safe 1 # trusted_networks 212.17.35.

# 得分多少以上就會被判定為垃圾郵件 required_hits 5.0

# 絕不會被判定為垃圾郵件之列表 # 請自行加以增刪修改! whitelist_from tetralet@localhost whitelist_from *@virtual.com

# 在垃圾郵件上之標題上加上註記 rewrite_subject 1

# 要如何處理垃圾郵件。因為郵件還會經過防毒程式的處理,所以必須設定為 0。 # 0:將資訊寫入郵件表頭。 # 1:將垃圾郵件轉為附件。 # 2:將垃圾郵件轉為純文字附件。 report_safe 0

# 在處理垃圾郵件時,在郵件檔頭是否不加註詳細原因? use_terse_report 0

# 是否使用 Bayesian use_bayes 1

# Bayesian 之資料庫位置 bayes_path /var/lib/amavis/.spamassassin/bayes

# 是否啟用 Bayesian 自動學習功能? auto_learn 1

# 略過 RBLs 之檢查 skip_rbl_checks 0

# 是否使用 Razor version 2 use_razor2 1

# 是否使用 DCC (Distributed Checksum Clearinghouse) use_dcc 1

# 是否使用 Pyzor use_pyzor 1

# 是否在郵件表頭中加入 DCC 資訊 dcc_add_header 1

# 是否能夠進行 DNS 查詢。直接設定為 yes 將有效加快 amavis 的啟動速度。 # 設定值:(yesnotest) dns_available yes

# 檢查是否為由內部網路所寄出的信件。 # 若是,則永遠不判斷為垃圾郵件。(評分減 50 分) # 其中的 example.net 請替換成您的 Domain Name… header LOCAL_RCVD Received =~ /.*\(\S+\.example\.net\s+\[.*\]\)/ describe LOCAL_RCVD Received from local machine score LOCAL_RCVD -50

# 一些自訂的規則 bodyWINDOWOPEN/window\.open\(/i describeWINDOWOPENJavaScript: Windows.Open scoreWINDOWOPEN3.5

# 垃圾郵件計分規則。 ## Optional Score Increases score DCC_CHECK 4.000 score RAZOR2_CHECK 2.500 score BAYES_99 4.300 score BAYES_90 3.500 score BAYES_80 3.000 [編輯] 設定 SpamAssassin 和 Postfix 搭配使用

Postfix 与外部过滤程序的通讯有两种方式:基于命令的过滤(即以下所说的“一般做法”),以及基于守护进程的过滤(即以下的“建议做法”)。

对于前者,Postfix 每处理一封邮件,过滤命令就被启动一次,并且过滤程序还必须调用一次 Sendmail,将完成过滤的邮件送回 Postfix,所以运算成本比较高。

相对于实时地启动外部过滤程序,基于守护进程的过滤显然在I/O与CPU使用方面比较经济,不必每处理一封邮件就多创建一个新的进程,并且基于守护进程的过滤与 Postfix 之间的交互架构也比较先进,双方使用标准的 SMTP 或 LMTP 协议交换邮件。 [編輯] spamd/spamd 模式(一般作法)

修改 /etc/default/spamassassin,將其中的 ENABLED=0 改為 ENABLED=1,以啟動 spamd: # /etc/default/spamd.conf # Duncan Findlay

# WARNING read README.spamd before using. THERE ARE SECURITY RISKS!

# Change to one to enable spamd ENABLED=1

# Options # See man spamd for possible options. The -d option is automatically added. OPTIONS=”-c -m 10 -a -H”

# Set nice level of spamd #NICE=”–nicelevel 15”

注:也可以在此使用 -u 參數來指定啟用 SpamAssassin Daemon 的帳號, 但由於 SpamAssassin Daemon 會 su 成 Client 帳號來過濾垃圾郵件, 因而並無此必要…

修改 /etc/postfix/master.cf 如下,告知 Postfix 使用 SpamAssassin 來掃瞄郵件內容: (其中的 spamassassin 字串可以自訂) (上略)

# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtpinetn-n–smtpd -v -o content_filter=spamassassin

(下略)

並再修改 /etc/postfix/master.cf,加入以下內容: (在此是設定 spamassassin 的內容。詳細參數請參考 man spamc 及 man sendmail 之說明。) 注意,一般是以 nobody 身份來啟動 SpamAssassin,但在此例中是以 amavis 的身份來呼叫 SpamAssassin 的! spamassassin unix -nn–pipe flags=Rq user=amavis argv=/usr/bin/spamc -d 127.0.0.1 -f -p 783 -t 30 -e /usr/sbin/sendmail -oi -f ${sender} – ${recipient}

因為,若以 nobody 身份來啟動 SpamAssassin 時,往往會因為 nobody 的 Home Directory 不存在,因而在 /var/log/mail.log 中將出現類似以下的錯誤訊息: Oct 30 13:21:47 qemu spamd[788]: info: setuid to nobody succeeded Oct 30 13:21:47 qemu spamd[788]: Creating default_prefs [/nonexistent/.spamassassin/user_prefs] Oct 30 13:21:47 qemu spamd[788]: Cannot write to /nonexistent/.spamassassin/user_prefs: No such file or directory Oct 30 13:21:47 qemu spamd[788]: Couldn’t create readable default_prefs for [/nonexistent/.spamassassin/user_prefs]

所以改由以 amavis 身份來啟動 SpamAssassin。

修改完畢後,使用以下指令來啟動 SpamAssassin 並重新啟動 Postfix: /etc/init.d/spamassassin start

/etc/init.d/postfix restart

在預設上,spamd 會監聽 783 這個 Port。

另外,SpamAssassin 可以使用 sa-learn 指令來學習新的垃圾郵件規則,請參考 AntiSpam with Bayesian Classifier 一章之說明。 [編輯] 利用 Amavisd-new 來呼叫 SpamAssassin(建議做法)

我們可以替而使用 Amavisd-new 來呼叫 SpamAssassin,也就是讓 Amavisd-new 肩負掃毒及過濾垃圾郵件的重責。而在本人的系統中,這個方法比起使用 spamc/spamd 的做法快上了非常多,所以建議採用這種作法。

請修改 /etc/amavis/amavisd.conf 如下: (注:/etc/amavis/amavisd.conf 的內容很大,以下只節錄必須修改的項目) # 在 @bypass_spam_checks_acl = qw( . ); 前加上註解,讓 Amavisd-new 啟動 SpamAssassin # Any setting can be changed with a new assignment, so make sure # you do not unintentionally override these settings further down! # @bypass_spam_checks_acl = qw( . ); # No default dependency on spamassassin

# 不要移去 SpamAssassin 所加入的 Headers,但似乎是沒有作用? #$remove_existing_spam_headers = 0; # leave existing X-Spam* headers alone $remove_existing_spam_headers = 0; # remove existing spam headers if # spam scanning is enabled (default)

# 讓 SpamAssassin 可以和外部連線 # $sa_local_tests_only is passed to Mail::SpamAssassin::new as a value # of the option local_tests_only. See Mail::SpamAssassin man page. # If set to 1, SA tests are restricted to local tests only, i.e. no tests # that require internet access will be performed. # $sa_local_tests_only = 0; # (default: false)

# 啟用自動的 White List $sa_auto_whitelist = 1; # turn on AWL (default: false)

# 設定 White List # 注意:在 /etc/spamassassin/local.cf 所設定的將失去效用! map { $whitelist_sender{lc($_)}=1 } (qw( tetralet@example.net )); # 或指定為某個檔案。注意:這些檔案必須存在,否則 Amavisd-new 將無法啟動! read_hash(\%whitelist_sender, ‘/var/lib/amavis/whitelist’); # 指定黑名單 read_hash(\%blacklist_sender, ‘/var/lib/amavis/blacklist’); # 若收件人名列其中,則不進行垃圾郵件檢測 read_hash(\%spam_lovers, ‘/var/lib/amavis/spam_lovers’);

# 超過某個特定大小的郵件可以不經過 SpamAssassin 的掃瞄 $sa_mail_body_size_limit = 150*1024; # don’t waste time on SA is mail is larger # (less than 1% of spam is > 64k) # default: undef, no limitations

# 設定評分規則。 # default values, can be overridden by more specific lookups, e.g. SQL # 超過這個標準者,就在郵件標頭加入 Spam 資訊 $sa_tag_level_deflt = 4.0; # add spam info headers if at, or above that level # 超過這個標準者,就直接視為垃圾郵件 $sa_tag2_level_deflt = 6.3; # add ‘spam detected’ headers at that level # 超過這個標準者,就直接將信件備份後刪除。 $sa_kill_level_deflt = 10 ; # triggers spam evasive actions # at or above that level: bounce/reject/drop, # quarantine, and adding mail address extension

# 啟用 SpamAssassin 的 Debug。在正式上線時請記得去掉! # Turn on SpamAssassin debugging (output to STDERR, use with ‘amavisd debug’) $sa_debug = 1; # defaults to false

然後重新啟動 Amavisd-new 即可。

若因任何原因而無法啟動 Amavisd-new, 可以使用以下指令來進行 Debug: amavisd-new debug-sa [編輯] 測試 SpamAssassin

在安裝 SpamAssassin 時,也同時會附上測試用的 Spam 範例檔。 您可以用以下指令來測試 SpamAssassin 是否能夠正確運作了: spamassassin -t < /usr/share/doc/spamassassin/examples/sample-spam.txt

寄封測試用的垃圾郵件吧: # telnet 127.0.0.1 25 Connected to 127.0.0.1. Escape character is ‘^]‘. 220 qemu ESMTP Postfix (Debian/GNU) MAIL FROM:tetralet@mail.org 250 Ok RCPT TO: 250 Ok DATA 354 End data with . Subject: Test spam mail (GTUBE)

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X . 250 Ok: queued as 0C3E9C906B quit 221 Bye Connection closed by foreign host.

看看這封郵件是否真的被判定為垃圾郵件了: From tetralet@mail.org Fri Oct 22 16:50:46 2004 Return-Path: tetralet@mail.org X-Original-To: tetralet@virtual.com Delivered-To: tetralet@virtual.com Received: by qemu (Postfix, from userid 65534) id 7ACB8C9073; Fri, 22 Oct 2004 16:50:46 +0800 (CST) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by qemu (Postfix) with SMTP id 9D7C0C9063 for ; Fri, 22 Oct 2004 16:50:18 +0800 (CST) Subject: *****SPAM***** Test spam mail (GTUBE) Message-Id: <20041022085018.9D7C0C9063@qemu> Date: Fri, 22 Oct 2004 16:50:18 +0800 (CST) From: tetralet@mail.org To: undisclosed-recipients: ; X-Spam-DCC: : X-Spam-Flag: YES X-Spam-Checker-Version: SpamAssassin 2.64 (2004-01-11) on qemu X-Spam-Level: ************************************************** X-Spam-Status: Yes, hits=907.6 required=5.0 tests=GTUBE,MSGID_FROM_MTA_SHORT, NO_REAL_NAME,RAZOR2_CF_RANGE_51_100,RAZOR2_CHECK,USER_IN_WHITELIST autolearn=no version=2.64 X-Spam-Report: * 0.3 NO_REAL_NAME From: does not include a real name * 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email * 1.6 RAZOR2_CF_RANGE_51_100 BODY: Razor2 gives confidence between 51 and 100 * [cf: 100] * 2.5 RAZOR2_CHECK Listed in Razor2 (http://razor.sf.net/) * -100 USER_IN_WHITELIST From: address is in the user’s white-list * 3.3 MSGID_FROM_MTA_SHORT Message-Id was added by a relay

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

如果一切沒問題,那就大功告成囉∼∼ [編輯] 其它

另外還有一個名為 Spamstats 的 Perl Script 可以用來分析 /var/log/mail.log 裡的 Spam 資訊。 不妨試用看看!

这样查 第一步: 检查SPAMASSASSIN是否正常 #spamassassin -t mail 第二步: #telnet localhost 25 mail from:postmaster@extmail.org rcpt to:postmaster@extmail.org data XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X . quit #tail -30 /var/log/maillog 查看日志,如果出现类似如下提示,则表明成功 Nov 6 22:10:51 localhost amavis[18263]: (18263-01) Blocked SPAM, LOCAL [127.0.0.1] [127.0.0.1] postmaster@extmail.org -> postmaster@extmail.org, quarantine: spam-JH2LSCT1MLYg.gz, Message-ID: 1451.192.168.1.10.1131286248.squirrel@192.168.1.21, mail_id: JH2LSCT1MLYg, Hits: 1005.902, 3591 ms

0%