[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]