Category Archives: Software

Software

copyblog.pl

copyblog.pl 是一隻以 GPL 發佈 Perl script,透過 XML::Feed 將 RSS 或 Atom 將某個 blog 的東西擷取下來,再用 WWW::Mechanize 將內容發表到其他的 blog 上。

目前支援的 blog system 有:Blogger無名小站 Blog樂多 Blog

實際已經用在 http://gslin.org/ 送到 http://gslin.blogspot.com/http://www.wretch.cc/blog/darkkillerhttp://blog.roodo.com/gslinn/,每二十分鐘會跑一次這隻程式。

需要裝的 Perl modules 包括:

  • GDBM_File (通常是 compile Perl 的時候要把 GDBM 包進去),如果你不喜歡用 GDBM,可以換用 NDBM 或是其他 tie 有支援的 dbm。
  • WWW::Mechanize
  • XML::Feed

大致講一下內容:

feed 的部分是寫死的,我目前是用 http://gslin.org/wp-atom.php,理論上 XML::Feed 可以接受 RSS 三個版本 (0.91、1.0、2.0) 以及 Atom,不過我沒測過 RSS。

另外你要設定 $pw,記得先把 copyblog.pl 改成 700 再把密碼填進去。如果你不同的 blog 用不同的密碼,那麼乾脆直接寫在 post_blog_blah() 裡面好了…

用法的部分,直接執行不加參數會去 feed 上看看有沒有新的文章,有的話就 post 到其他 blog,通常就是放在 crontab 裡面跑。

參數的部分,-d 表示 debug,-v 表示要看一些 message (想要知道他有沒有在動之類的),-h 則是 show usage。

而 -a 表示 feed all (通常用在第一次要將最新的 n 篇貼上去),而 -i 表示只要 copy 某篇,後面接的參數是 Unique ID,在 WordPress Atom 用的是 URL (反正是 unique),其他家我就不知道了。-u 表示 update only,只更新 local db 紀錄,不會 copy 出去。

有任何問題,您可以寫信問我,或是在這幾個 blog 上留 comment 也可以,理論上這幾個系統都會 mail 給我。(至少 gslin.org 與 roodo 會)

程式寫的亂七八糟,請不要扁我 XD

trackback 後續的問題以及 WordPress 新版的取得

我在 Trackbacks broken in 1.5 回應說用了 patch 還是沒用,後來有人提到需要把 WordPress 裡的某些檔案更新上去,可能會有用。

我之前都是用 nightly build 在裝,不過這幾天 WordPress 似乎正在從 cvs 轉換到 Subversion,nightly build 就沒提供了 XD

我只好從 Subversion Access 抓下來更新了,不過請不要笨笨的用 checkout (svn co http://svn.automattic.com/wordpress/trunk/),用 export (svn export http://svn.automattic.com/wordpress/trunk/),這樣才不會幫你雞婆生 .svn 的目錄,最後再用 lftp 的 mirror -R 把整個傳上去 :p

SpamCop and SpamCup

這篇 [文件] 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 使用這份黑名單。

這篇文章會講的

這篇文章會講的東西包括了:

  • 我是 mail server 的管理員,要怎麼使用 SpamCop 的 DNSBL 幫我擋廣告信。(包括 SendmailPostfix)
  • 我是程式開發者,我的程式要怎麼使用 SpamCop 的 DNSBL 擋廣告信。
  • 我想要在金錢上幫助 SpamCop
  • 我想要在人力上幫助 SpamCop

mail server 使用 SpamCop 擋廣告信 (Sendmail)

請先登入成 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

mail server 使用 SpamCop 擋廣告信 (Postfix)

在 /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

我想要在金錢上幫助 SpamCop

絕大部分的網路交易都是透過信用卡。

你可以透過贊助加 “Fuel” 到你的 Reporting account:
http://www.spamcop.net/mcgi?action=paymenu (基本上我覺得這個只是加爽的)

或是你可以挑他們 USD$30/year 的 Webmail 服務:(以 Horde 架設的)
http://www.spamcop.net/ces/individuals.shtml (我覺得這個還比較有用)

我想要在人力上幫助 SpamCop

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。

喝水喝到一半嗆到

邊喝水邊看文章,看到這篇就突然嗆到了:We’ll ship when the product is ready.,這是引用自 IEBlogIE7 的一段話:

I’ve gotten questions about the ship date. Yes, we have a date in mind. I’ll talk about the date after we get feedback from customers and partners. We’re going to release a beta and listen, then refresh the beta and listen some more. We’ll ship when the product is ready.