- 2007-10-12 (金) 23:45
- MovableType
いままで、様々な紆余曲折を経て参りましたが、
積年の夢であった、MovableTypeにて、
mail-entry.cgiを利用し、メールポストとほぼ同時にエントリーを自動更新すること
に成功しました。
2005-10-22 (土)にmai-entryにて、
「自動化、できてたみたい。」
と書いてますが、実は、’できてません’でした
では今回、何をどうしたのかというと・・・。
まず、
tank.jpは、さくらのホスティングサービスを利用して運用しています。
この、さくらのホスティングサービスでメール配信を制御するツールが”maildorp”です。
さらの、その”maildrop”の設定ファィルが、”.mailfilter”になります。
“maildrop”は、この”.mailfilter”に記述された内容に基づいて、
メールを振り分けたり、複数箇所に転送したり、受信拒否したり、その他、
あなたがぱっと想像できないくらい様々な要求に応える、高機能なメール配信ツールなのです。
今回利用したのは、メール着信をきっかけに、任意のスクリプトを実行するという機能です。
このことは今までも様々な掲示板やブログなどで記述されてます。
有名なところでは、
さくらのレンタルサーバ非公式FAQで、
メールの着信をトリガーにして自作のプログラムを起動したい
などがあります。
to “| /home/USERNAME/FOLDER/PROGRAMS”
cc “| /home/USERNAME/FOLDER/PROGRAMS”
FreeBSD(自己の忘備録として・・・・)さんのmail-entry.cgi(自動化成功)のエントリーを参考にして、
テキストブラウザを使用してみます。
しかし僕のサーバに”w3m”はインストールされていませんので、かわりに”lynx”を使用しました。
技術的なことは、Web上にて諸兄が展開されているドキュメントを参考にして頂くことにしますが、
ここから先は、僕がさくらのサーバで行ったことを記します。
当然、環境による特殊な設定や、思いこみによる誤った内容も多分にあると思います。
「アフォか、、、」と感じた方、ご指摘よろしくです。
では早速、概要から、
ケータイメールにより、エントリーをポストする。
そのメールの着信をきっかけに、テキストブラウザのLynxを起動して、mail-entry.cgiをたたく。
mail-entry.cgiが、メールの内容をブログにアップし内容を更新する。
いたって単純なしくみです。
っで上記のサイトを参考にしながら、、
“.mailfilter”(chmod 600)に以下を記入して試してみましたが、無惨にも惨敗でした。
cc “| /usr/local/bin/lynx -dump http://[設置したディレクトリのパス]mail-entry.cgi”
この内容では、
“lynx”が起動されるのはメール着信直後で、メール配信はlynxの動作が終了した後のようでした。
したがって、いくらmail-entry.cgiが実行されても、
mail-entry.cgiが必要とするメールが後から配送されますので、
「Error メールはありませんでした。」
となってしまいます。
実際にメールボックスを確認してみると、”mail-entry.cgi”の実行後に配送されメールが残っていました。
連続して、メールをポストすると、lynxがmail-entry.cgiをたたいて、ボックスに残っている前回のメールを
ブログに更新している仕組みになってしまいます。
一応、エントリーの更新は自動にされますが、前回のメールがアップされるのでは全く話しになりません。
そこで考えたのが冗長なのですが、2段階にて処理をする方法です。
まずは、更にもう一つ専用のメールアドレスを用意します。
1)「アドレスA」に、mail-entry.cgi用のメールが着信する
2)「アドレスA」は、その着信をきっかけに「アドレスB」に、受信のお知らせメールを発信
3)「アドレスA」に、1)のメールが配信される
4)「アドレスB」が、2)のお知らせメールを受信
5)「アドレスB」は、その着信をきっかけに、lynxを起動し、mail-entry.cgiをたたく
6)mail-entry.cgiが起動され、「アドレスA」に配信された1)のメールをブログに反映させる
7)ブログの自動更新完了
非常に見苦しいのですがこれで何とか、メール投稿→ブログ更新の自動化が実現できました。
では、具体的な設定ファイルの内容です。
「アドレスA」に設置する”.mailfilter”
`cat ./receive_mail.txt | /usr/sbin/sendmail -t`
to /home/[メールボックスまでのパス]/「アドレスA」
同ディレクトリに設置するreceive_mail.txt(文字コードはJISで)
To: 「アドレスB」
From: 「アドレスA」
Subject: you’ve gat mail !!
メールが着信したよん。
.
「アドレスB」に設置する”.mailfilter”
`lynx -dump http://[設置したディレクトリのパス]/mail-entry.cgi`
以上です。
先日、さくらからtank.jpが利用しているサーバが
10月中にメンテナンスを実施する旨のアナウンスがなされてます。
内容は、
OS、perl、maildrop、SpamAssassinの各々のバージョンアップです。
このメンテナンスにより、メール環境が劇的に変化しそうです。
これをきっかけにもっとスマートな処理ができるようになればいいのですが。
- Newer: ライブロック移設
- Older: DSB水槽立ち上げ2