トップページ»2.マイプロダクト»mail-entry.cgi標準入力対応パッチ

2.マイプロダクト



mail-entry.cgi標準入力対応パッチ

本家Moblie-bozuさんの方でこのページで紹介した標準入力パッチを取り込んだバージョンがリリースされています。 まだ暫定版との事ですが、今後はこちらからダウンロードされることをお勧めします。

Mobile-bozuさんのmail-entry.cgiを使わせていただくようになって早数ヶ月。 使ってみると携帯でエントリーできるというのは本当に便利この上ないですね。

しかし利用開始当初から気になっている点として、エントリにpopを使用していること。 これによって

  • cron等で回す場合エントリーがリアルタイムにならない
  • cronのログが増えてちょっと気になる

個人的になんですが、携帯からポストしたらすぐにエントリーして欲しいというのと、ポストしてもいないのに毎回popチェックするのがどうも気になってしまっていたのです。

というわけでmail-entry.cgiを標準入力に対応してみました。 これによりメールサーバーがメールを受信するとすぐにエントリ作業に移ります。 メール受信時だけ実行するため無駄なタスクも発生しません。

多分自宅サーバー等、自分でサーバー運用している人向けになると思いますが、パッチを作ったので同じ事を考えているチャレンジャーな方は試してみて下さい。




必要環境

以下の条件を満たす事が必要です。

  • オリジナルのmail-entry.cgiが動作する環境であること
  • .forwardとか.qmailが使える事
  • sudo可能な事

.forwardはsendmailで転送などする時に使うものですが、これをトリガとしてmail-entry.cgiを実行します。 .qmailはそれのqmail版です。

当初sudoを使う事はせずパーミッションで対応させようと思ったのですが、面倒なのでやめました。(^^;) やる気になればsudo使わなくても出来るかもしれません。

インストール

全体の流れは以下の通りです。

  • オリジナルmail-entry.cgiのインストール、動作検証
  • パッチ(mail-entry-stdin.patch)適用
  • sudo設定
  • .forwardや.qmailの設定
  • 動作確認

まずとりあえずmail-entry.cgiダウンロード後、普通にインストールして、動作確認しておいて下さい。 この部分で動かない場合は多分無理です。 動作することを確認したら念のためcronは止めておいて下さい。

パッチが当てられるmail-entry.cgiのバージョンは0.5.3(2004/12/4リリース)です。
それではパッチの適用を行います。 下のパッチをダウンロードして下さい。

mail-entry-stdin.patch
http://akionweb.com/myobjects/mail-entry-stdin.patch

パッチをmail-entry.cgiと同じフォルダに入れてパッチを当てます。

patch < mail-entry-stdin.patch

05/1/4追記
パッチを当てるときエラーが出る場合があるとの報告を頂きました。 その場合は以下のファイルをダウンロードして下さい。 これはmail-entry.cgiのバージョン0.5.3に標準入力対応パッチを当てたものです。

http://akionweb.com/myobjects/mail-entry-stdin-patched.tar.gz

続いてsudoの設定をします。 rootになってvisudoを実行します。

su -
visudo

エディタが起動したら以下の文を一番最後にでも入れて下さい。

%MTA_USER% ALL=(%MT_USER%) NOPASSWD: /%ME_DIR%/mail-entry.cgi

%で囲まれている部分は自分の環境に置き換えて下さい。

%MTA_USER%はメールサーバーを実行しているユーザー名です。 具体的に言うと.forwardとか.qmailとかする時に用いられるユーザーです。

%MT_USER%はMovable Typeを実行しているユーザーです。 例えばapacheの場合だとapacheとかhttpdとかかな? suExec環境の場合は運用ユーザーになります。

%ME_DIR%はmail-entry.cgiの入ったフォルダです。

さて、最後にトリガとなる.forwardや.qmailの設定です。 既にmail-entry.cgiを最初に入れた時点でpopアカウントの準備はできているはずですので、そのアカウントのフォルダにファイルを入れるだけです。 ファイルの中身は

.forward(sendmail)の場合

"| sudo -u %MT_USER% /%ME_DIR%/mail-entry.cgi"

よく知りませんが、postfixも上のでOKなんじゃないかと… 次にqmailの場合は、

.qmail(qmail)の場合

| sudo -u %MT_USER% /%ME_DIR%/mail-entry.cgi

って感じになります。 %内の値は前述したとおりです。 この書き方だとエントリー後受信したメールは破棄されます。 必要な場合は自分のメールボックスに落ちるようにしてください。

これでインストールは終わりです。

動作テスト

普通にmoblog用メールアドレスにメールしてみて下さい。 少し時間をおいてサイトを確認してちゃんと反映していれば完成です。 少し時間がかかるのはMTのエントリ時に時間がかかるのと同じ理由です。

うまくいかない場合はmaillog等に出たエラーメッセージを頼りに原因を特定して下さい。

途中でこけたりするとmail-entry.cgiのテンポラリーフォルダにゴミが残ったりします。 これが残ったまま続けてテストするとうまく動作しないみたいなので、あったら随時削除してみて下さい。

mail-entry.cgiの仕様?で同じタイトルのエントリは受け付けないようになっているみたいなので、連続テストする場合はタイトルを変えるか、不要なエントリを都度削除してみて下さい。

その他

パッチを当てた状態でpopに戻したい場合は、mail-entry.cgiの49行目を編集して下さい。

my $stdin=0;

$stdin=0の場合はpopモードに戻ります。(多分。未検証。) ちなみにmail-entry-config.cgiの方は今のところ一切無視なので、ON/OFFはここで行って下さい。(^^;) 動作が変だったらオリジナルのmail-entry.cgiに戻した方が無難です。

あ、それからmail-entry-config.cgiは一切未着手です。(^^;) 本当ならブラウザで設定できれば良いのでしょうが、まずは動けばいいやということで…

標準入力のON/OFF以外の設定は普通通りmail-entry-config.cgiで行えます。

とりあえず自分用にやったので他の人の環境のことはあまり考えていません。 とりあえず試してみてどうかといった所なので、試す人はある程度覚悟して下さい。(^^;) いつもの如く完全無保証。 何しろ適当にぱぱっとやったものです。 動作検証してくれる方、アドバイスくれる方希望です。

今のところはこんな所でしょうか。 何かありましたらコメントどうぞ。


投稿日 : 2004年12月21日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/101

このリストは、次のエントリーを参照しています: mail-entry.cgi標準入力対応パッチ:

» mail-entry標準入力対応化パッチ出現 from Mobile-bozu
AKI ON WEBさんにて、mail-entryを標準入力に対応させるパッチが... [続きを読む]

トラックバック時刻: 2004年12月22日 15:39

» 自前サーバでMoblogする方法 from よっくのITブログ「yokku::blog」
大分前から書こうと思ってたんだけど書けないでいた。 自前のモブログというとmail-entry.cgi http://www.mobile-bozu.co... [続きを読む]

トラックバック時刻: 2005年9月13日 12:27

» 自前サーバでMoblogする方法 from yokku::notes
モブログサービスというとmoblog.uva.ne.jpの moblog mai... [続きを読む]

トラックバック時刻: 2005年9月25日 10:48

» mail-entry from shibata(hi) shokudou
MovableTypeにe-mailからエントリする方法を探していたけど、やっぱりあった。 各種実装がある様だけれど、 ・Mobile-bouzu:mail-e... [続きを読む]

トラックバック時刻: 2006年1月 3日 03:02

コメント

はじめまして&あけましておめでとうございます.

パッチについて質問です.
Mobile-bozuさんでmail-entry.cgiをダウンロードし,こちらで紹介されているパッチを適用しようとすると,

patching file mail-entry.cgi
Hunk #1 FAILED at 46.
Hunk #2 FAILED at 158.
Hunk #3 FAILED at 200.
Hunk #4 FAILED at 322.
4 out of 4 hunks FAILED -- saving rejects to file mail-entry.cgi.rej

との結果が帰ってきます.
パッチ一行目のmail-entry.cgiのタイムスタンプが12月21日になっていることから,おそらくmail-entry.cgiにも何か手が加えられているのでは,と思い連絡させて頂きました.

いきなりこんなコメントですみません..

投稿者 general : 2005年1月 1日 23:32

generalさん、はじめましてこんにちは。

おかしいですね。 今私も両ファイルをダウンロードしてきて試してみましたが普通にパッチできました。

原因がよく分からないので、とりあえずパッチ適用後のmail-entry.cgiをアップロードしておきます。 以下のurlからどうぞ。

http://akionweb.com/myobjects/mail-entry-stdin-patched.tar.gz

投稿者 AKI ON WEB : 2005年1月 2日 16:33

こんにちは.
素早い対応ありがとうございます.早速ダウンロードして試させて頂きました.
が,エントリーまでは上手くいくのですが,リビルドが実行されません.

メール送信後,MTを確認すると記事のエントリーが完了していて,その後mail-entry.cgiにアクセスするとエラーを出力しながらもリビルドを完了してくれている状態です.

只今パッチ適用後のcgiを読ませてもらっています.
進展したらまた連絡させて頂きます!

投稿者 general : 2005年1月 3日 13:07

その現象はsudoの設定がうまくいっていない可能性がありますね。

MTAとhttpdを動かしているユーザーは恐らく違うと思います。 MTAを動作させているユーザーにsudoでmail-entry.cgiを動作させる権限を与えているか確認してみて下さい。

投稿者 AKI ON WEB : 2005年1月 3日 23:38

こんばんは.

ご指摘ありがとうございます.
どうやらMT_USERの設定がまずかったようです.うちの場合nobody権限でした.

お世話になりました.
これからモブログ生活を満喫させて頂きます!

投稿者 general : 2005年1月 6日 00:03

そうでしたね。 apacheはnobodyの場合もありましたよね。(^^;) 忘れていました。

解決して良かったですね。 快適ですか?

投稿者 AKI ON WEB : 2005年1月 6日 18:06

おひさしぶりです.
快適に使わせていただいてますよー.
といいつつも更新頻度は上がったり下がったりですけど.w
ありがとうござました!

投稿者 general : 2005年1月16日 22:04

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»2.マイプロダクト»mail-entry.cgi標準入力対応パッチ