メール自動返信システムの調査
メール自動返信システムを作る方法を調査した。
やりたいことは,以下のとおり。
- gmailから定期的にメールを取得する。
- メールのパターンに応じて,返信用文書を組み立てる。
- 返信メールを送信する。
また,返信用文書を組み立てる処理がある程度複雑になる予定なので,この部分はPythonなどのスクリプト言語で記述したい。できれば外部プログラムとして呼び出すのではなくて,シームレスにツールと結合していることが望ましい。
まず,メールを取得するプログラムとして以下を見つけた。
- fetchmail
- getmail
次に,メールのパターンに応じて処理を行うプログラム(メールフィルタ?)を探したところ,以下が見つかった。
- procmail
- maildrop
- scmail
この種のことをやる場合の定番はfetchmail+procmailと思われるが,procmailの設定ファイルは保守性が悪そうである。定番にこだわらずに検討してみた。
メール取得に関しては,getmailがPythonで記述してあり趣味にも合う。また,設定ファイルの書式もINIファイル形式に近く分かりやすい。ただ,設定ファイルは一度書いてしまえば,変更の頻度は低そうである。迷ったが,この部分で凝る必要はないので,結局fetchmailを使うことにした。
メールフィルタ・プログラムに付いては,Pythonベースのものを探したが見つからなかった。scmailはscheme(Gauche)で記述してあり,フィルタの設定やメールの内容を処理する関数もschemeで記述することができる。Pythonでないことを除けば理想に近いので,scmailを使うことにした。
fetchmailの設定ファイル.fetchmailrcは,最終的に次のようになった。
defaults protocol pop3 no rewrite no mimedecode mda "/usr/local/bin/scmail-deliver" keep poll pop.gmail.com username <ユーザ名> password <パスワード> ssl sslfingerprint "<フィンガープリント>"
最後のsslfingerprint ... は手っ取り早く警告メッセージがでないようにするおまじないで,実際には“fetchmail -v”を実行して表示されるfingerprintの値をコピーする。この記事を参考にさせていただいた。
fetchmailによりダウンロードされたメールのメッセージは,mdaの指示にしたがってscmailに渡される。
scmailに渡されれば,後はschemeの世界なので,如何様にも加工できそうである。