携帯から(と言うかメールからですな)blogを登録するのを、moblogとか言うらしい。
Moblog とは、モバイル環境から Weblog することです。最近はカメラ付き携帯が普及しいつでもどこでも記録ができます。
ここのサイトが大変参考になったので、そこに書いてあるとおりにやってみた。
  • python 2.2.2以降が必要らしい。うちに入ってたのは2.2だったので、portupgradeで2.3.3にバージョンアップ。
  • python用の日本語コーデックが必要らしいので、/usr/ports/japanese/pycodecをインストール。
  • ここからmail2entryをダウンロード。これを書いてる時点の最新は20030506。
  • アーカイブを好きなところに展開する。気分的に/usr/local/mail2entry
  • MTにmoblog用の新しいユーザを登録する。
  • settings.pyを編集する。
  • 同じディレクトリに、includeを作る。
  • 中のファイルのオーナーをwww:wwwに、permissionを600にする。
  • /etc/aliases に include のためのエントリーを追加する。newaliasする。
これで、aliasesに追加したエントリーにメールしたら、無事にBlogのエントリーが追加されるようになりました。
参考にしたサイトには、日付がGMTで記録されてしまうようなことが書いてありましたが、うちでは特に問題ないみたい。
※ おいらの携帯にはカメラがついてないので、画像のテストができないのが寂しいな・・・。

さて、これでメールからblogが投稿できるようになったわけですが(まあ、絶対書かないだろうけど・・・)、このままだと誰でもメールを出せばうちのblogに書けてしまいます。
と、言うかあらしてくださいと言わんばかりじゃない??
対策としては、
  • procmailなどをかます。
  • ソースをいじる。
などが考えられますね。
で、一応ソースをいじってみることにしました。
変更したのは、parsemsg.pyです。面倒なので、diffを載せます。
*** parsemsg.py.ORIG    Fri Mar 12 16:22:19 2004
--- parsemsg.py Wed Aug  4 19:22:29 2004
***************
*** 4,12 ****
--- 4,14 ----

  from email import *
  from email.Header import *
+ from settings import *
  import types
  import re

+ class IllegalUser(Exception): pass
  class ParseMsgError(Exception): pass
  class ImageTypeNotAllowed(ParseMsgError): pass
  class UnexpectedMimeType(ParseMsgError): pass
***************
*** 22,27 ****
--- 24,30 ----
  class messageContent :
      def __init__ ( this, title ) :
          this.__title = title
+         this.__from = u''
          this.__description = u''
          this.__entry = u''
          this.__images = []
***************
*** 36,46 ****
--- 39,54 ----
          return this.__images
      def addImage(this,image) :
          this.__images.append(image)
+     def setFrom(this,mailfrom) :
+         this.__from = mailfrom
      def getEntry(this) :
          return this.__entry
      def setEntry(this,entry) :
          this.__entry = entry
      def check(this) :
+         if this.__from != allowmailfrom :
+             raise IllegalUser
+
          if not this.__description :
              raise BodyEmpty
          if type(this.__description) is not types.UnicodeType :
***************
*** 59,70 ****
--- 67,80 ----

      msg = message_from_file(fileObject)
      subject = msg['Subject']
+     mailfrom = msg['From']
      results = decode_header(subject)

      title = " ".join([unicodify(decoded_subject, charset) \
                        for decoded_subject, charset in results])

      content = messageContent(title)
+     content.setFrom(mailfrom)
      parseMultiPart(msg,content)

      return content
これで、settings.py に
allowmailfrom = "投稿を許すメールのFrom"
と言う行を追加すれば、Fromが一致しないメールからの投稿ははじくようになります。
これだけだと、From詐称には役に立ちませんが、ないよりはましかしらん・・・。
しっかし、pythonなんて何年も使ってないから忘れるわ~(汗)


2004/8/4追記
カメラ付き携帯を入手したので、試してみたら以前は出なかったエラーが出ました。
原因が良くわからないのですが、parsemsg.pyにimportを追加することで回避はできました。 と、言うわけで上のdiffを修正してあります。

カテゴリ

トラックバック(2)

このブログ記事を参照しているブログ一覧: moblog?

このブログ記事に対するトラックバックURL: http://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/233

» mail2entry(MT 3.x TestSite)~のトラックバック

Moblog とは、モバイル環境から Weblog することです。最近はカメラ付... 続きを読む

» mail2entry(Jay's Room)~のトラックバック

Movable Typeを自宅サーバーに設置してみて、 携帯で更新したいと思って... 続きを読む

コメント(3)

satto11 :

はじめまして。Fromの制限を参考にさせて頂きましたが、

Traceback (most recent call last):
File "/usr/local/src/mail2entry20030506/mail2entry.py", line 35, in main
result = postentry.post(content)
File "/usr/local/src/mail2entry20030506/postentry.py", line 14, in post
content.check()
File "/usr/local/src/mail2entry20030506/parsemsg.py", line 48, in check
if this.__from != allowmailfrom :
NameError: global name 'allowmailfrom' is not defined
--------------------------------------------------------

というエラーが発生してしまいました。何か分かりましたら、教えていただけるとありがたいです。

false :

エラーから見ると、settings.py に allowmailfrom = の行がないのではないでしょうか?
スペルなどを確認してみてください~。

false :

カメラ付き携帯を入手したので、moblogに投稿してみたらsatto11さんと同じエラーが出ました。
ちゃんと動くことを確認したつもりだったのですが・・・(汗)

parsemsg.py の最初の方に、以下を追加することで動くようになりました。

from settings import *

コメントする

このブログ記事について

このページは、falseが2004年3月12日 16:44に書いたブログ記事です。

ひとつ前のブログ記事は「エキサイトブログ」です。

次のブログ記事は「DHTMLに挑戦」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1