動作に必要なソフトウェア
rss2imapを使うのに必要なソフトウェアは以下の通りです。
- Perl 5.8.0 以上(必須)
- Perl モジュール
- Mail::IMAPClient
- Encode
- XML::Parser
- XML::RSS
- LWP (LWP::UserAgent, LWP::Simple)
- Jcode
- IO::Socket::SSL(IMAP over SSLを利用するときのみ必要)。
- Digest::HMAC
- IMAP サーバが動いているホスト (dovecot, courier-imap で確認済み)
その他のIMAP サーバ(Binc IMAP等)での動作報告もお待ちしております。:-) - IMAPに対応したメーラ(Mozilla Thunderbird, Outlook Express, Becky!, Sylpheed 等多数)
- HTMLのインライン表示が可能なメーラ(HTMLモードのみ:オプション)
Mozilla Thunderbird, Outlook Express, Becky! 等
rss2imap は,ほとんどの UNIX マシンで動作すると思います。
Windows 対応に関しては現在作業中です。
インストール
- インストールするマシンに、「rss2imapに必要なもの」で述べたPerlモジュールをインストールしておきます。
perl -MCPAN -e shell cpan> install Mail::IMAPClient ....
- 「ダウンロードページ」の指示に従って、rss2imapをダウンロードします。
- ダウンロードしたrss2imapを任意の場所に展開し、展開先のディレクトリに移動します。
tar xvfz rss2imap-xxxx.tar.gz cd rss2imap-xxxx
- conf/rss2imap.confを編集し、IMAP サーバへの接続設定を設定します。設定ファイルの文字コードはUTF-8です(conf/rss2imap-site.confも同様)。ファイルにある説明に従って、適宜設定して下さい。
- 次にconf/rss2imap-site.confを編集し、配送されるメールに関する設定を行います。ファイルにある説明に従って、適宜設定してください。「from」と「to」以外の値は基本的にデフォルトで良いでしょう。
とりあえず動かしてみる
まずは, 同梱されているサンプルの RSS URL リスト (sample.url) について動作させてみましょう。
-o オプションを使いデーモン化を抑制していることに注意して下さい。
./rss2imap -o sample.url
インストール時に「rss2imap.conf」で設定した接続設定が正しいものであれば、これだけで基本的に動作するはずです。
*「Authentication Failure」(認証失敗)や、「imap client initialize failed.」等のエラーが出る場合は、conf/rss2imap.confの設定を見直してみてください。
メーラから IMAP サーバにアクセスしてみてください. RSS から始まるフォルダが作成され, 記事が転送されていると思います.
rss2imap.confや、rss2imap-site.confで設定した設定値の殆どは、コマンドラインオプションで上書きすることができます。 オプションの詳細については、「./rss2imap --help」でご確認下さい。
以下はコマンドラインオプションを使った実行の一例です。
- courier-imap を使っている場合 (prefix を INBOX にする)
./rss2imap -o -s IMAPサーバ -u ユーザ名 -p INBOX sample.url
- dovecot を使っている場合は, prefix は nil でよい (default 動作)
./rss2imap -o -s IMAPサーバ -u ユーザ名 sample.url
- IMAP over SSLを使うときは、-Sオプションを指定します。ポート番号も変更する必要があるでしょう。
./rss2imap -o -s IMAPサーバ -S -P 993 -u ユーザ名 sample.url
- CRAM-MD5 の認証を行う場合は -c オプションを使います.
./rss2imap -c -s IMAPサーバ -u ユーザ名 sample.url
- Debug モード (-D) で起動すると, IMAP サーバとのやりとりが出力されます。
./rss2imap -D -s IMAPサーバ -u ユーザ名 sample.url
RSS サイトリストの編集
「とりあえず動かしてみる」で実行したsample.urlは、RSS サイトリスト(サイトリスト)と呼ばれ、取得するRSS サイトや、配送先のフォルダ名、 メールのフォーマット等が記述されています。rss2imapを実行するには、このファイルがひとつ以上必要です。
以下では、このファイルの編集方法について説明します。
RSS のサイトの情報をファイルに記述します. サイトの性質等によって適当なグループを作ります. グループは固有の設定と RSS の URL リストを持ちます. 各グループの間には1行以上のスペースを入れてください.
# グループ1 の固有設定 設定1: 値1 設定2: 値2 .. http://foo1/foo.rdf http://bar1/bar.rdf # グループ2 の固有設定 設定1: 値1 設定2: 値2 .. http://foo2/foo.rdf http://bar2/bar.rdf
設定項目には以下があります.
設定名 | 値の条件 | 説明 |
folder | フォルダ名 | IMAP のフォルダ名です. このフォルダに配信されます. デフォルトは RSS.%{channel:title} となっており, 後述するマクロを使い 動的に生成されます. |
type | (items|channel) | items: RDF の item 1つづつを 1つのメールとして送信します (デフォルト) channel: 個々の item は無視し, RDF の全体 (channel) を1つのメールとして送信します. サイトの更新のみを知りたい時は channel を用います. サイトのアンテナのような動作が実現できます. |
sync | (yes|no) | yes: フォルダ中のメールとRSS item の同期を取ります. RSS に登録されて
いない item が フォルダに見つかると削除されます. RSS でサイトのランキングが配信されていて, 逐次 item の内容が更新され る場合や, Hatena アンテナのような更新サイトリストのような場合は 同期を取ったほうが便利な場合があります. no: 同期しません (デフォルト) |
expire | 整数 (N) | N日以前の item を削除します. -1 と指定することで expire の動作を抑 制できます (デフォルト) |
expire-unseen | (yes|no) | yes: expire の時に, 未読メールも削除します no: 未読メールは削除しません (デフォルト) |
expire-folder | フォルダ名 | expire の時に, 削除ではなく指定されたフォルダに移動します. デフォルトは
未定義となっており, 削除します.
また, 後述するマクロを使うことができます |
subject | 文字列 | メールの Subject: ヘッダを指定します. 通常はデフォルのままでかまいません.
また, 後述するマクロを使うことができます |
from | 文字列 | メールの From: ヘッダを指定します. 通常はデフォルのままでかまいません.
また, 後述するマクロを使うことができます |
マクロは folder, expire-folder, subject, from の値を
rss の内容から動的に生成する機能です.
具体的には以下があります.マクロがそれぞれの文字列に置換されます.
マクロ | 説明 |
%{host} | ホスト名 |
%{user} | ユーザ名 |
%{rss-link} | RSS の URL |
%{last-modified} | サーバが返す Last-Modifed ヘッダ |
%{item:link} | RSS item の link の内容 |
%{item:title} | RSS item の title の内容 |
%{item:description} | RSS item の description の内容 |
%{item:dc:date} | RSS item の dc:date の内容 (未定義の場合もある) |
%{item:dc:subject} | RSS item の dc:subject の内容 (未定義の場合もある) |
%{item:dc:creator} | RSS item の dc:creator の内容 (未定義の場合もある) |
%{channel:link} | RSS channel の link の内容 |
%{channel:title} | RSS channel の title の内容 |
%{channel:description} | RSS channel の description の内容 |
%{channel:dc:date} | RSS channel の dc:date の内容 (未定義の場合もある) |
ただし, type: channel と指定した場合は, %{item:*} の値と %{channel:*} の 値は同じになります.
デフォルトとして以下のような設定になっています
subject: %{item:title} from: <%{channel:title}>
例えば, 以下のように記述すると channel の title を使ってフォルダを動的に生成します.
folder: RSS.News.%{channel:title}以下が具体例です.
# はてなアンテナ. # アンテナの内容とフォルダ中のメールを同期する. folder: RSS.Anntena expire: 3 sync: yes http://a.hatena.ne.jp/foo/rss # フォルダごとに分けた Blog # Friend folder: RSS.Blog.Friend expire: 5 http://tahoo.org/~taku/diary/cl.rdf http://nais.to/~yto/clog/cl.rdf # IT folder: RSS.Blog.IT expire: 10 http://blog.japan.cnet.com/umeda/index.rdf http://kimuratakeshi.cocolog-nifty.com/blog/index.rdf # Idol folder: RSS.Blog.Idol expire: 15 http://manabekawori.cocolog-nifty.com/blog/index.rdf http://rosa.cocolog-nifty.com/blog/index.rdf # 自分の Wiki の更新日時だけを知りたい # type: channel, 簡易アンテナとして動作 folder: RSS.Wiki type: channel http://tahoo.org/~taku/wiki/wiki.cgi?action=RSS http://cl.naist.jp/index.php?cmd=rss # ニュース配信サイトのタイトルからフォルダ名を自動生成 # 2 日ぶんの記事を残し, 未読でも削除する. folder: RSS.News.%{channel:title} expire: 2 expire-unseen: yes http://www.atmarkit.co.jp/rss/rss2dc.xml http://www3.asahi.com/rss/index.rdf http://japan.cnet.com/rss/index.rdf http://japan.linux.com/japanlinuxcom.rdf http://slashdot.jp/slashdotjp.rss
RSS サイトリストのimport
rss2imapを使用するにはRSS サイトリストがひとつ以上必要でしたが、編集が面倒です。そうした方のために、rss2imapは、 opmlファイルから サイトリスト を自動生成(import)する機能を備えています。他のRSSリーダ等から移行してくる方は、 この機能を使うと便利です。
importを行うためには、以下のコマンドを実行します。-Iオプションを使ってopmlファイルを指定し、-O でサイトリストの出力先を指定します。
./rss2imap -I foo.opml -O output.url
出力されるサイトリスト(上のコマンドではoutput.url)では、conf/rss2imap-site.confのデフォルト値に従って設定値の 出力が行われます。また、フォルダ名のルートは「RSS」となります。
opmlファイルへのexport
rss2imapは、RSS サイトリストをopmlファイルとして出力(export)する機能も備えています。サイトリストを他のRSSリーダでも使える汎用的 な形で出力したい場合は、この機能が便えます。
exportを行うためには、以下のコマンドを実行します。-Eオプションを使ってサイトリストのファイルを指定し、-O でopmlファイルの出力先を指定します。
./rss2imap -E bar.url -O output.opml
text配送モードとHTML配送モード
rss2imapは、2種類のモードでメールを配信させることができます。テキストメールを配送する「text配送モード」、及びHTMLメールを配送する「HTML配送モード」です。
HTML配送モードを使うと、HTMLメールをインライン表示できるメーラでメールを見るときに便利です。かたや、HTMLメールを嫌う方のために、テキストでRSSの中身を表示するために用意されたのがtext配送モードです。配送されるメールのイメージの違いは、「スクリーンショット」のページを参照して下さい。
これらのモードは、conf/rss2imap.confの「delivery-mode」の値を変えることで設定できます。また、以下のように、コマンドラインオプション「-d」を使うことでその設定を上書きすることもできます。(以下はテキスト配送モードの場合)
./rss2imap -d text -o sample.url
現在では、テキスト配送モードは新たに実装された実験的なものであるため、HTML配送モードがデフォルトになっています。
デーモン化
動作確認ができたら, 定期的に動作するようにデーモン化します. -o オプションをはずして起動します.
./rss2imap sample.url
デフォルトで 60分ごとに更新作業を行います. 時間を変更する時は -i オプションを使います. (以下の例は30分ごとに変更)
./rss2imap -i 30 sample.url
RSS のサイトリストは, 配信開始時に毎回読みこまれます.
そのため, rss2imap が動作中にサイトリストを変更しても実用上はほとんど問
題ありません.
特殊フォルダ
rssimap は RSS.last-modified という特殊フォルダを作成します.
各 RSS の最終更新日時(last-modified) を1メールとして保存し,
無駄な更新作業を抑制するために使います.
もし強制的に更新を行いたい時は, 該当メールをメーラから削除してください
フォルダ名を変更する場合は -m オプションを使います.
./rss2imap -m FOO.BAR.RSS.last-modified
reversethis -> {gro} {tod} {umumum} {ta} {umumum}