[PREVIOUS CHAPTER]
[NEXT CHAPTER]
5 POP による FML の運用
この章はPOPを使ったMLのエミュレーションについて説明します。UNIX上で
これを使うことはまずありません。NTの上ではこれを利用しています。
POP経由でスプールへ、POP3 を使ってMLを実行するlibexec/popfml.pl がそ
れの専用プログラムとして実装されています。想定されているケースは
メールはPOP3で読めるだけ
メールを受けとめてプログラムを呼べないという
OS附属のメールシステム or ポリシー
等の場合のために存在します。理屈としては
pop を使って取り寄せつつパイプで MH の rcvstore へ入力(inc)
pop を使って取り寄せつつパイプで fml へ投げる (ML)
は同じです。実行する下請けプログラムが違うだけです。後はこれを cron で
実行します。サイトに一台POP3を喋れるメールサーバがあれば自分のマシンが
メールを受けられなくてもPOP3経由で自動的にメールをスプールしたりMLを
作ったりできます。このやり方は汎用なのでPOP3でメールが読める場合ならど
んなOSでも原理的にはMLが実行できるということになります。
#でもまああくまで裏技というカテゴリでしょう。
ついでにその後 cron で自動でfolderに入れるプログラムを走らせることもで
きるでしょう。なおMHと同様パスワードは $HOME/.netrc からとられます。ど
こかにパスワードを書いておかないといけないことがこの方法の最大の弱点で
す。
注意: inc_via_pop.pl は昔の名前(今はリンク)で、pop2recv.pl は backward
compatible の目的で popfml.pl にリンクされています。
5.1 elena ML を POP3 MLエミュレーションする
1. 仮想的に popfml MLをつくる。このMLのHOMEに queue ディレクトリを
つくるためです。
% makefml newml popfml
2. POPサーバに
elena
elena-ctl
のアカウントとパスワードを設定して下さい。
3. こういう呪文をためしてください。( \ は次の行につづきます。)
% /usr/local/fml/libexec/popfml.pl /var/spool/ml/popfml /usr/local/fml \
-host POPサーバ名 \
-user elena -pwfile /var/spool/ml/etc/netrc \
-include_file /var/spool/ml/elena/include
% /usr/local/fml/libexec/popfml.pl /var/spool/ml/popfml /usr/local/fml \
-host POPサーバ名 \
-user elena-ctl -pwfile /var/spool/ml/etc/netrc \
-include_file /var/spool/ml/elena/include-ctl
なお、/var/spool/ml/etc/netrc の中は
machine POPサーバ名
login elena
password パスワード
machine POPサーバ名
login elena-ctl
password パスワード
という感じのファイルです。~/.netrc 形式です。意味は ftp のマニュアルな
どをみて(.netrcという項目をサーチして)ください。
5.2 Q: ~/.popfmlrc ってなんですか?
今ではもぉ気にしないで下さい:) それがなくても動きます
確かに最初ある目的があって作った覚えがあるけど、NT version になるとき
に -include で実行する内容を指定するようになったので使っても使わなくて
もよいはずです
5.3 Q: crontab にかくんですか?
../digest 2.17
そうです。そういう呪文をずらずら書くことになります。
*/5 * * * * 呪文(popfml.pl ...ずらずら...)
みたいなのを書きます。
でもきっと crontab をずらずらかくうっとおしいので、適当なファイルをつ
くって(例: /var/spool/ml/etc/popfml/master.sh (適当))、その中に例の呪
文を書いておく方が見やすくていいとおもいます。
*/5 * * * * /var/spool/ml/etc/popfml/master.sh
5.4 Popfml.pl Reference
SYNOPSIS:
popfml.pl [-hd] [-user username] [-host host] [-f config-file]
-user username
-host host(pop server running)
-f config-file
-h this message
-d debug mode
例: ユーザ fukachan が POP Server hikari にアクセスする
popfml.pl -user fukachan -host hikari
設定例: 全部のメールを fml.pl へ突っ込む。~/.popexecrc の中は
$POP_EXEC = "/usr/local/fml/fml.pl /var/spool/ml/Elena";
1;
でいいわけですが、普通はMLと自分宛をわけたりするためにフィルタ
(e.g. fml_local)が必要な場合もあるでしょうが、基本的には同じです。
filter
crontab の書き方はOSによって異なります。4.4BSD では次のような内容の
crontab を書いて、crontab crontab などとします。
* * * * * popfml.pl -user fukachan -host hikari
../digest 2.17
このやりかたを使うことで自分のマシンで sendmail を起こしていてメールを
受け止められなくてはいけないという制約はなくなります。これで理論上は
perl がちゃんと(?)動くOSなら WINDOWS だろうが Macintosh だろうが動くは
ずですが…?(未確認)。NT version の FML は(Metainfo sendmail を使う場合
を除いて)この technique を利用しています。
◯ 変数
$POPFML_PROG
$POP_EXEC
POP3 で読んできたメールをどの program へ渡せばいいのか?
例:
$POP_EXEC = "/usr/local/fml/fml.pl /var/spool/ml/Elena";
$POP_SERVER
POP Server
$POP_USER
ユーザ名(アカウント)はMLのアドレスに相当します。
$POP_PASSWORD
通常 ~/.netrc からとられる。当然 $POP_USER と一組みです。
$POP_TIMEOUT
POP Server がずっこけた場合等に切断する秒数。デフォールトは45秒
$POP_QUEUE_DIR
POP で読んできたメールを一回保存する場所。デフォールトは
$DIR/var/pop.queue
$POP_LOGFILE
POP のサーバとの通信のログ。デフォールトは
$DIR/var/log/_poplog
$POPFML_MAX_CHILDREN
一回(通常1分)にする処理数。あんまりやると OS がひさん
$POP_PORT
110/tcp と違う場合に設定する(普通は設定しなくても大丈夫)。
$POPFML_QUEUE_EXPIRE_LIMIT
expire limit of queue spool.
[PREVIOUS CHAPTER]
[NEXT CHAPTER]