	メールを他のプログラムへ渡す

------------------------------------------------------------
1	MAIL to IRC (Internet Relay Chat)
1.1	IRCへのリレー
1.2	変数
1.3	設定例
1.4	stdin2irc.pl

2	Mail2news (メーリングリストからニュースへ)
2.1	Mail2news の組み込み方
2.2	Mail2newsの変数

3	PAGER (ポケベル) を呼ぶための前処理プログラム
3.1	euc2jiskuten.pl 
3.2	FMLと組合せてポケベルを呼ぶ例
------------------------------------------------------------


1	MAIL to IRC (Internet Relay Chat)

何の役に立つのか分からないのがおしゃれ(謎:-)まぁあるとすれば

-----------------------------------------------------
	ML -> mail2irc -> irc server
	ML <- pirc <-----
?
-----------------------------------------------------

1.1	IRCへのリレー

IRCへ入って、書いて、抜けるという一撃離脱の処理をするルーチンがありま
す。

    fml.pl -> 処理
    
    	IRCへ入る。
    	connect -> irc server:6667
    
    	IRC protocol
    
    	&Write2Irc(IRCへ書き込みたい内容)
    
    	IRCから抜ける 	

1.2	変数

# irc server 
$IRC_SERVER  = "irc.server";

# irc port
$IRC_PORT    = 6667;

# irc channel to write
$IRC_CHANNEL = '#test';

# Your Name
$IRC_NAME    = "test";

# Nickname
$IRC_NICK    = "test";

# the last message of the end of irc session
$IRC_SIGNOFF_MSG = "そ、そなの？";

1.3	設定例

config.phに付け加える例:
メーリングリストに来た記事をIRCへリレーする

$IRC_SERVER  = "hikari.sapporo.iij.ad.jp";
$IRC_PORT    = 6667;
$IRC_CHANNEL = '#test';
$IRC_NAME    = "test";
$IRC_NICK    = "test";

$FML_EXIT_HOOK = q!
	local($buf);

	$IRC_SIGNOFF_MSG = "End of Article $ID";
	require 'contrib/irc/libirc.pl';

	$buf .= "From: $Envelope{'h:From:'}\n";
	$buf .= "Subject: $Envelope{'h:Subject:'}\n";
	$buf .= "Article: $ID\n";
	$buf .= "\n";
	$buf .= $Envelope{'Body'};

	&Write2Irc($buf);
!;

1.4	stdin2irc.pl

STDIN からほうり込んだ文字列をIRCへ書き込みます。
前述のものと異なり、この stdin2irc.pl ではIRCには入りっぱなしで、
入力を待つものです。典型的な使い方は

    tail -f 何かのログファイル | perl stdin2irc.pl -f 設定ファイル

のように使います。例えば /var/log/messages をIRCの画面で見張りたいなど
に使います(何だそりゃ:)

2	Mail2news (メーリングリストからニュースへ)

注意: ベータテストですぅ。また Perl 5 でないと使えません。

おまけ機能のメーリングリストからネットニュースへも流す例です:-)
NNTPClient.pm の使い方の例とでもいう方がいいかもしれない。perl 5 での
み使える機能です。また NNTPClient.pm がインストールされていることが必
要です。

なお libnntp.pl は contrib/mail2news に入っています。

2.1	Mail2news の組み込み方

contrib/mail2news/libnntp.pl を perl の include の search path のどこ
かへ入れます。例えば makefml でインストールした場所 ( fml.pl や 
libsmtp.pl の入ってる場所)へ入れます。

2.2	Mail2newsの変数

まずこのライブラリを fml.pl の最後に実行するように組み込みます。

例:

	$FML_EXIT_HOOK .= q#;
		&use('nntp');
		&NntpPost(*Envelope);
	#;

また、必要な変数を設定します (e.g. config.ph に設定する)。

    $NEWS_SERVER

	投稿する先のニュースサーバ。設定しないと自分自身のホスト

    $DEFAULT_NEWS_GROUP

	MLのメールに Newsgroup: ヘッダがない時に投稿すべき Newsgroup:
	設定しない場合で Newsgroup: ヘッダがないメールはエラーにする

    @NEWS_HDR_FIELDS_ORDER

	ニュースに投稿する時に元のメールから内容を採り入れる
	ヘッダ。デフォールトは

	("from", "newsgroups", "subject", "supersedes", "references")

	小文字なのはfmlに入力されたメールのヘッダを使うためです。
	Capital にすればメーリングリストにながれる内容と同じものがなが
	れます。例えばsubject ではなく Subject にすると(そういう設定を
	していれば) Counter つきのが流れるといった具合です。

   %NEWS_FIELD_DEFAULT

	メールにない場合必要な内容をハッシュに入れる。
	Organization とかに使うと思われる？

   %NEWS_FIELD_TO_OVERWRITE

	強制的に書き換える内容をハッシュに入れる。
	Organization とかに使うと思われる？

3	PAGER (ポケベル) を呼ぶための前処理プログラム

これはモデム経由でページャーに表示させるための前処理プログラムです。ペー
ジャーは日本語を理解しないので特定のコードに変換した後ページャーに渡さ
なければなりません。
注意: モデムを呼ぶ部分についてはOSやハード依存なので聞かれても困ります。
またこまかいパラメータは pager に依存です。だから聞かないでね(つぅか聞
かれてもその分野は知らない)。

3.1	euc2jiskuten.pl 

   ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/calling-pager/

pager には #0103 のようなJIS句点コードで電話をかければでます(多分)。
NTT DOCOMO 北海道の付録のテーブルを見る限りこれで出ます。

EUC(できるだけ事前に全角文字に変換しておいてからいれるのが無難で推奨)
で euc2jiskuten.pl に突っ込めば、JIS句点コードに変換します。
この文字列をモデムで pager の電話番号にかければ

	メール → ポケベル

の出来上がりです。モデムで電話を書ける部分は自分で工夫して下さい。

なお、結構うごけばいいや〜っていうことしか考えてないので、すごいマニアッ
クな日本語表示とかちゃんとでるのかどうか試してないので知りません。

3.2	FMLと組合せてポケベルを呼ぶ例

どうすればいいかというと

1 	モデムを呼ぶプログラムを用意する (modem2pager としましょう)

2 	$START_HOOK の設定は

まず、メール本文をEUCにし、

	open(PAGER, "| euc2jiskuten.pl | modem2pager");
	print PAGER $Envelope{'Body'}:
	close(PAGER);
	$DO_NOTHING = 1;

みたいなのを設定。後の問題はこの modem2pager の部分です。この部分は 
spooler, queuing, pagerサービスの制御、待ち時間等に合わせて細かいチュー
ニングをする必要があります。


		INDEX

$DEFAULT_NEWS_GROUP                        ...   2.2 
euc2jiskuten.pl                            ...   3.1 
$IRC_CHANNEL                               ...   1.2 
$IRC_NAME                                  ...   1.2 
$IRC_NICK                                  ...   1.2 
$IRC_PORT                                  ...   1.2 
$IRC_SERVER                                ...   1.2 
$IRC_SIGNOFF_MSG                           ...   1.2 
mail2news (ML -> News)                     ...   2 
mail2news (メーリングリストからニュースへ)   ...   2 
mail2pager                                 ...   3 
%NEWS_FIELD_DEFAULT                        ...   2.2 
%NEWS_FIELD_TO_OVERWRITE                   ...   2.2 
@NEWS_HDR_FIELDS_ORDER                     ...   2.2 
$NEWS_SERVER                               ...   2.2 
pager                                      ...   3 
