這篇 [文件] SpamCop (擋廣告信) 是我在 tw.bbs.comp.386bsd 上寫的,使用 GNU Free Documentation License Version 1.2, November 2002 作為授權,修一下讓他符合 Blog 的格式。
THANKS
rafan at infor.org
對於 Sendmail 提供比較好的處理方式。(雖然他也是用 Postfix 的)
SpamCop
先講什麼是 SpamCop…
呃,如果你不知道 SpamCop 的話,你把他當作是一個國外還算有名的 Anti-Spam 組織就可以了…
你把廣告信交給他,他會把廣告信信件標頭 (header) 的 IP,以及廣告信內容所用到的 link 抓出來,然後自動送信給負責的單位。
如果對方一直沒有回信,他就把對方列入黑名單 (black list),而你可以透過 DNSBL 使用這份黑名單。
這篇文章會講的
這篇文章會講的東西包括了:
請先登入成 root,換到 /etc/mail 目錄下:
# cd /etc/mail
在 freebsd.mc 內加上:
FEATURE(`enhdnsbl’, `bl.spamcop.net’, `”Spam blocked see: http://spamcop.net/bl.shtml?”$&{client_addr}’, `t’)dnl
編譯順便重跑 sendmail:
# make
# make restart
在 /usr/local/etc/postfix/main.cf (或是 /etc/postfix/main.cf) 新增這行,或是修改 smtpd_client_restrictions 這行:
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net, reject_rbl_client relays.ordb.org, reject_rbl_client xbl.spamhaus.org
改完後重跑 Postfix:
postfix reload
程式開發者要怎麼使用 SpamCop 的 DNSBL 擋廣告信
你拿到一個 IP address 後,你必須透過 DNS 查詢這個 IP 是否在 SpamCop 的黑名單內。
假設該 IP 是 140.113.27.50,那麼你必須查詢:
50.27.113.140.bl.spamcop.net
(將 IP 的四個數字倒過來後加上 .bl.spamcop.net)
是否有 A record 或 CNAME record,如果有查到,則代表該 IP 在 SpamCop 的黑名單內。
在幫助 SpamCop 前
在幫助 SpamCop 前,建議您到 SpamCop 註冊:http://www.spamcop.net/anonsignup.shtml
填入 “Display name (full name or alias)” 及 “Email address” 即可,其他的如果您有興趣瞭解再填就好了。
填完後他匯寄一封信到信箱,信裡面會給你一組密碼,像這樣:
[…]
username: gslin@ccca.nctu.edu.tw
password: mypassword
[…]
你可以利用這組帳號密碼登入進去,修改你的密碼:
http://www.spamcop.net/mcgi?action=loginform
絕大部分的網路交易都是透過信用卡。
你可以透過贊助加 “Fuel” 到你的 Reporting account:
http://www.spamcop.net/mcgi?action=paymenu (基本上我覺得這個只是加爽的)
或是你可以挑他們 USD$30/year 的 Webmail 服務:(以 Horde 架設的)
http://www.spamcop.net/ces/individuals.shtml (我覺得這個還比較有用)
SpamCop 靠的是收到 Spam 的人 Report,所以會需要利用人判斷是不是 Spam。
當你收到 Spam 後,你連到 http://www.spamcop.net/ 登入,將信件的標頭及內文一起貼到中間的大框框就可以了。
另外,我們提供 mutt 的使用者偷懶的方式,請先安裝 MIME::Lite:
# cd /usr/ports/mail/p5-MIME-Lite
# make install clean
再將下面的 code 放入 /usr/local/bin/SpamCop.pl:
#!/usr/bin/perl
use MIME::Lite;
use strict;
my @mails = <STDIN>;
my $mail = join("", @mails);
my $msg = MIME::Lite->new(From => $ARGV[0],
To => $ARGV[1],
Subject => 'Report',
Type => 'html/text',
Data => $mail);
$msg->send();
然後在 .muttrc 裡面放:
macro index Y “<pipe-entry>SpamCop.pl gslin@ccca.nctu.edu.tw submit.6XXXXXXXXXXXXXXX@spam.spamcop.net\n” “report spam”
macro pager Y “<pipe-entry>SpamCop.pl gslin@ccca.nctu.edu.tw submit.6XXXXXXXXXXXXXXX@spam.spamcop.net\n” “report spam”
其中的 gslin@ccca.nctu.edu.tw 當然要換成自己的 e-mail address,而 submit.6XXXXXXXXXXXXXXX@spam.spamcop.net 要換成你在 login 時所看到的那個 e-mail address。
以後你在 mutt 裡面看到 Spam 就直接按 ‘Y’ 就可以將 Spam 送給 SpamCop 了。
SpamCop 收到後會 mail 一封確認信件給你,你收到後點 url 去處理即可。
危險的工具
我不打算在這邊講解他的用法,因為他屬於危險的工具。不過對於進階使用者來說會相當方便:http://sourceforge.net/projects/spamcup
這隻程式會自動幫你處理 submit 進去的 Spam。