moblog
やっとちゃんといけるようになりました。
とはいってもやってることは非常に簡単で、
- Subjectにてpyblosxomのカテゴリを指定したメールを送信する
- maildropの.mailfilterファイルにて、条件によるフィルタリング
- mailfilterの設定に関しては、 JCUG-man-ja - maildropfilter(7) 参照
- 英語なので斜め読みしていたら、なかなかスクリプトを実行する方法が見つけられなかったが、下記のようにback-tickで囲ってやるとシェルコマンドを実行してやることができます。これを見つけるのが非常に時間掛かりました。
- `shell command`
- 条件を満たす場合には、下記スクリプトを呼び出す
#!/usr/bin/env python
"script for moblog"
import sys
import re
import time
import os
data_dir = '/your/own/path'
category,contents='',''
mail = sys.stdin.read()
ret = re.search('^Subject: (.*)\n',mail,re.M)
if ret:
category = ret.group(1)
pos = mail.find('\n\n')
if pos != -1:
contents = mail[pos+2:]
# pyfilenamemtime.pyプラグインを使用しているため、
# ファイル名は受信した日時とする
fn = time.strftime('%Y-%m-%d-%H-%M')
filename = data_dir+os.sep+(category and category+os.sep)+fn+'.txt'
f = file(filename,'w')
f.write(contents)
f.close()
ただし、これだとiso-2022-jpを自分のサイトのUTF-8に変換できていないので文字化けしてしまいます。本サーバに使用されているpython2.3にはどうやらJapaneseCodecは対応していないようで、そのせいなのか自分のやり方が悪いのかわかりませんが、ちょっと文字コードを処理しきれませんでした。
そんな時、 setmitsさん にアドバイス頂き、本スクリプトへの標準入力をあらかじめ、 nkf -w にてUTF-8に変換することで対応しました。ありがとうございます。
ということで、結局.mailfilterの中身は、
if ( .......... )
{
`/usr/local/bin/nkf -w | /your/script/path/mail_analyzer.py`
}
こんな感じ。
でも、このモブログのセキュリティっていうのは、受信するメールのフィルタリングルールと、モブログ用メールアドレスだけだよな。ちょっと心もとないような気がするものの通常のサーバへのログインだってアカウントとパスワードだと思えば同じようなセキュリティ強度のような気もしてた。少なくともモブログ用メールアドレスを推測されにくいものにするのは最低限必要かな。
ということで、ランダムアカウント作成用のスクリプトも作ってみた。
#!/usr/bin/env python
import random
random.seed(xxx)
la = ['-','.']
lb = [chr(x) for x in xrange(48,57)] # 0-9
lc = [chr(x) for x in xrange(65,90)] # A-Z
ld = [chr(x) for x in xrange(97,122)] # a-z
l = la + lb + lc + ld
count = random.randint(XXX,YYY) # account lower limit/upper limit
account_name=''
for i in xrange(count):
ret = random.choice(l)
account_name = account_name +ret
print count,': ',account_name
random.seed()に与える値と、random.randint()に与えるアカウント名の文字数の下限と上限は指定してください。
BUSINESS TRIP
明日は朝から出張です。
とはいっても展示会を見に行かせてもらうだけなので、楽チンなものですが。朝早いのが難点です。
自分が絡んでたものもちらっと展示されてるという噂なので、どんな風に展示されてるのかがちょっと楽しみです。
携帯からのテスト
nkf -w を使ってみました。どうかな?

