mail2entry

Joi Ito氏が作成したmail2entryという、メールからweblogに投稿できるスクリプトを設置した。そのインストールログを書いておく。

スクリプト自体は、Pythonでかかれており、実行環境として2.2必要が必要。

構築環境

  • mail2entry(20030506)
  • qmail-1.03 + localtime patch
  • python 2.2 + JapaneseCodecs
  • Redhat 9.0
  • Movable Type 2.64

インストール

  1. アーカイブをダウンロードする http://www.gweep.net/~aron/mail2entry/mail2entry20030506.tar.gz

  2. 展開して、その中にあるsettings.pyを自分の環境に合わせて編集する。設定項目はファイルにコメントとして書いてある。

  3. 設定ファイルが正しいかどうかテストする。アーカイブ中のINSTALLにかかれている実験方法が不親切なので、ちょっと細かく書く。

    1. テストをするメールファイルを用意する。(生のメールデータ) ファイルを用意するのがめんどくさい場合はこちらに用意してあるのを使ってください。(100px X 100px の画像が添付されたメール)
    2. 以下のように、mail2entry.pyのSTDINにメールファイルを流す。 cat < メールファイル> | python mail2entry.py <setting.pyのあるディレクトリ>
    3. 例:cat message | python mail2entry.py .
    4. このコマンドを実行すると、/tmp/log-tracebacks.logに、スクリプトの実行結果が出るのでチェックする。エラーが無ければ成功。このメールファイルがちゃんと登録されると以下のようなエントリーが作成される。

    WS000.JPG

  4. 今回、MTAとしてqmailを用いているので、.qmailファイルに、あるメールアドレスに投げられたメールをmail2entry.pyに流す設定をする。

  5. 宛先となるユーザの.qmailファイルに、以下のような内容を書き込む。
    | /path/to/mail2entry.py /path/to/settings.py

  6. ちょっとつっこんだ話になるが、qmail-commandが実行されるときはumask066で動く。よって、qmailからmail2entry.pyが呼ばれ、新しいファイルが作成されるとotherに対して読み込み権限がつかないので、mail2entry.pyを適宜変更する。

  7. 上記を行って、メールを送信すると、おそらくエラーが発生する。エラーログ(/tmp/log-tracebacks.log)を参照して、適宜ファイル・ディレクトリのパーミッションを変更する。

あるバージョンにおいての文字化け

MovableType2.65においてmail2entryから投稿したメッセージが全てUTF-8になってしまう問題があった。
追記:MovableType 3.15でもこの問題が発生した。

それは、次のようなコードを挿入すれば解決する。

lib/MT/XMLRPCServer.pm

$ diff 元のファイル 新しいファイル
9d8
< use Jcode;
134,140d132
<
< for my $f (qw( title description mt_text_more
< mt_excerpt mt_keywords )) {
< next unless defined $item->{$f};
< $item->{$f} = Jcode->new($item->{$f},"utf8")->euc;
< }
<

134行目あたりには、

my $mt = MT::XMLRPCServer::Util::mt_new();   ## Will die if MT->new fails.

の上あたり。
newPostサブルーチンの中です。

この記事をシェア

Yuki Matsukura

Yuki Matsukura

20年以上のソフトウェア開発経験を持つ技術リーダー。決済サービスやプラットフォーム開発を推進。IRONMAN完走者でもある。

Comments