/* COMMANDS.JP,v 2.0 1998/04/23 12:30:04 hayashi */
/* COMMANDS.JP,v 2.1 1998/10/26 19:32:10 hayashi */
/* COMMANDS.JP,v 2.2 1999/02/07 17:28:22 hayashi */

/* ********************************************** *
 *  MH のコマンド解説 (暫定版) by MH-plus project *
 * ********************************************** */

  MH を初めて使おうとする方への、MH のコマンドプログラムなどについての
簡単な紹介です。MH-JP のインストールに関しては、MH-plus project による
INSTALL.JP を参照して下さい。

【参考文献】
  ・papers/multifarious/{text|appendixA}.tex,
    papers/beginners/beginners.tex 他
  ・各コマンドの man (conf/doc/*.rf) 他
  ・comp.mail.mh に投稿される、Bill Wohler 氏(wohler@newt.com)による FAQ


MH コマンドプログラムの一覧
***************************

  コマンドプログラムそれぞれの簡単な紹介です。詳しくはそれぞれの man などを
参照して下さい(参考: papers/realwork/appendixA.tex と 各 man)。コマンドプロ
グラムの仕様は、MH-6.8.4 を基にして記載しています。また、make install 時の
MHconfig の設定によって、インストールされない(make されない)ものもあります。

尚、JP-3.x では日本語コマンドマニュアルを用意してますので、これも参照して
下さい。

メール作成
==========

・comp		メッセージ作成
	送信するための新たなメッセージを作成します。

	専用 prompting エディタである "prompter" を内部から起動して、
	テンプレート(default では <mh-etc-dir>/components)に従い、
	送信先アドレスやサブジェクトなどの入力を要求します。
	※ <mh-etc-dir>/components などを参照して下さい。
	※ 尚、<mh-etc-dir> は MHconfig ファイルの etc オプションで指定する
	ディレクトリで、通常は /usr/local/lib/mh などとなっています。

・prompter	MH のプロンプト形式のエディタ
	"comp"/"dist"/"forw"/"repl" コマンドプログラムで、それぞれの
	テンプレートを埋めるために、内部から起動されるプロンプト形式の
	エディタです。通常ユーザーから直接実行されることはありません。

・dist		メッセージを追加アドレスに再配布
	ユーザーが既に受け取っているメッセージを、新規送信先を加え、
	再配布します。メール本体には何ら変更は加えません。
	default なら Resent-To: や Resent-Cc: などがつきます。
	`-annotate' スイッチをつければ、"dist" された元のメッセージの
	ヘッダに「Resent: date」「Resent: addrs」がつきます
	("anno" コマンドプログラムを内部から使用しています)。

・forw		メッセージの転送
	1つ以上のメッセージを新規メッセージドラフトに入れ込み(encapsulate)
	ます。さらに、文頭や末尾にコメントを付け加えることも出来ます。
	`-annotate' スイッチをつければ、"forw" された元のメッセージの
	ヘッダに「Forwarded: date」「Forwarded: addrs」がつきます
	("anno" コマンドプログラムを内部から使用しています)。

・repl		メッセージへの返信
	返信用テンプレート(default では <mh-etc-dir>/replcomps)を用いて、
	メッセージへの返信を作成します。テンプレートメカニズムでは、
	返信を書こうとしているメッセージの内容に基づいて、形式を色々と
	「プログラム」することが出来ます。
	※ <mh-etc-dir>/replcomps などや mh-format(5) 参照して下さい。
	`-annotate' スイッチをつければ、"repl" された元のメッセージの
	ヘッダに「Replied: date」「Replied: addrs」がつきます
	("anno" コマンドプログラムを内部から使用しています)。

・send		メッセージ送信
	"post" コマンドプログラム経由で、メッセージ中の「To:」「Cc:」
	「Bcc:」「Fcc:」行の個々の配送先へ、メッセージファイルを一つずつ
	配送します。
	例えば、-push スイッチをつけた場合、"send" はバックグラウンドで
	メッセージを投函します。post に失敗したら、send はユーザーに失敗
	通知を送り返します。ドラフトの発送が完了していたら、default で
	送られたそのドラフト自身を失敗通知に入れ込んで送り返してきます。
	("burst" コマンドプログラムを使用すれば、元のドラフトを簡単に復元
	出来ます)
	post が成功したら、そのドラフトは既に送られたものと記されます。

・whatnow	send に対するプロンプト形式のフロントエンド
	"comp"/"dist"/"forw"/"repl" の各コマンドプログラムで、メッセージ
	ドラフトを作成し終ったら呼び出されます。「What now?」と。

・whom		メッセージが誰に送られるかを表示
	メールの送信先の確認をします。
	draft のアドレスの確認と、アドレスに含まれるユーザー定義の alias の
	展開を行います。さらに最終的なアドレスが本当に正しいかを確認する
	ために、そのサイトが使用している MTS と通信することもあります。
	(しかし本当に配送が可能である保証はありません。そのアドレスが
	"配送可能であると思われる"確認です)
	"comp" などのコマンドプログラム中から呼び出されます。


メール投函
==========

・ali		メールのエイリアスを表示
	MH の alias 機構へのフロントエンドプログラムです。
	/etc/aliases などとは別個に、MH 自身で alias ファイルを持ちます。
	default では <mh-etc-dir>/MailAliases ファイルを使用します。
	各ユーザーが独自に作成したファイルを利用する場合は、
	% ali -alias /home/hayashi/.mh_aliases
	などとして使用します (mh_profile(5) で設定することも可能です)。
	MH alias ファイルの書き方等については、mh-alias(5) を参照して下さい。

・ap		アドレスを RFC822 形式で解析
	MH がどの様にインターネットアドレスを解析しているかを確かめるのに、
	有効なデバグツールとなるでしょう。

・dp		日付を RFC822 形式で解析
	日付を 822-style で解析します。非標準な形式でもほとんど OK です。

・conflict	MH と MTS の間のインターフェースの整合性のチェック
	MH alias ファイルや maildrops ファイルの整合性や、ユーザー名、
	属するグループなどに関してもチェックします。

・install-mh	MH 環境を初期化
	ユーザーの MH 環境の初期化として、初めて MH のコマンドプログラムを
	実行した時に、一度のみ自動的に実行されます。

・mhmail	メールの送信/読み
	MH を利用する簡単なフロントエンドプログラムです。
	昔の標準の BellMail (1) プログラムの置き換え…らしいです。
	引数なしの場合は、"inc" を呼び出します。
	一人以上のユーザー名が指定された場合は、標準入力からメッセージが読み
	込まれ、temporary ファイルへ貯められ、"post" コマンドプログラムを
	呼び出して、その指定したユーザーへ配送されます。

・post		メッセージの配送
	メッセージを投函するために、ローカルな MTA とやりとりする、
	複雑な MH のバックエンドです。"send" コマンドプログラムから
	呼び出されます(上の "send" コマンドプログラムの説明を参照して
	下さい)。
	
・spost		sendmail へメッセージを"供給"する
	シンプルでより高速で、"post" の代わりとなるプログラムです。
	sendmail を MTS としている時に使うことが出来ます。

・viamail	MIME 形式でファイルを送る
	ファイルを tar や compress した上で MIME 形式で送信します。
	tar, compress したものをパイプで mhn に渡すシェルスクリプトです。
	(support/general/viamail.sh を参照して下さい)


メールを読む
============

・inc		新たなメールの取り込み(INCorporate)
	ユーザーの maildrop からメッセージを取り込むために、
	ローカルの MTA と interact するプログラムです。

・msgchk	maildrop に溜っているメールのチェック
	maildrop に溜っているメールの状況を報告します。

・show		メッセージの出力(表示)
	標準出力(普通はユーザーの端末)にメッセージを表示します。
	他のプログラム中からメッセージ表示のために呼び出されることも
	あります。メッセージの整形に mhl プログラムを使う様にしている
	場合、show から mhl を自動的に呼び出します。
	尚、"next" と "prev" コマンドプログラムは、単にそれぞれ、
	"show next", "show prev" しているだけです。

・mhl		MH メッセージの整形出力(表示)
	テンプレートを用いて、メッセージを整形して出力します。
	不要なヘッダを取り除いたり、他のヘッダを特定の順番に並び換えて
	出力することが出来ます。
	"show" コマンドプログラムから整形表示のために呼ばれるだけでなく、
	フォワードするメッセージの整形に "forw" コマンドプログラムから、
	返信するメッセージを取り込む場合、メッセージ本体の整形に "repl"
	コマンドプログラムから、bcc (blind-carbon-copy) として送る
	メッセージの整形に "post" コマンドプログラムから、それぞれ呼び出
	されます。

・rmm		メッセージの削除
	MH フォルダー中から特定のメッセージの削除をします。
	消去するのでなくて、ユーザー定義のプログラムを走らせる様にすることも
	出来ます(mh-profile(5) の rmmproc 参照)。
	default では、メッセージをあとで復元できる様に "softly に削除"
	(実際には 123 を #123 にするなど、別名に変更する方法)されます。

	※ [JP3] 尚、MH_PLUS には、拡張機能として、ゴミ箱フォルダ機能が
	あります。これは、別名に変更して "削除" するのでなく、任意のゴミ箱
	フォルダに移動することで削除(したように)する機能です。
	options MH_PLUS を指定して make し、プロファイルに Trash-Folder
	コンポーネントを指定することで、この機能を利用することが出来ます。
	詳しくは doc-JP/FEATURES.JP や (ja-)mh-profile(5) を参照して下さい。

・scan		1メッセージごとの scan(走査)一覧を生成
	メッセージの走査一覧を作成します。一覧は、date, source, subject や
	メッセージ本体の冒頭一部をも含んで、表示することが出来ます。
	設定方法については、<mh-etc-dir>/scan.default などや mh-format(5)
	参照して下さい。


フォルダ関連
============

・folder	現フォルダー/メッセージの変更/表示
	現フォルダに関する情報を表示します。また、現フォルダや現メッセージを
	変更したりすることも出来ます。
	また、指定フォルダー中のメッセージの抜け番号を詰めて、1から順に
	リナンバーする事も出来ます。

・folders	全フォルダの表記
	全フォルダの情報を表示します(実際には "folder" コマンドプログラムの
	特殊なケースですが…)。MH フォルダは再帰的であるかも知れませんので、
	-recurse スイッチで folders に全フォルダを再帰的に探すように指示
	できます。

・refile	他のフォルダ(複数も可)のメッセージをリフィルする
	任意のフォルダから一つ以上の目的フォルダへ、メッセージを移動
	(もしくはコピー)します。

・rmf		フォルダの削除
	フォルダ内の全メッセージごと、フォルダを削除します。

・packmbox	MH フォルダーを UUCP-style の mbox に変換する
	指定したフォルダーにあるメッセージ(default では全メッセージ)を、
	UUCP 型の mbox ファイルに変換します。


メッセージ関連
==============

・anno		メッセージヘッダへ注釈を入れる
	MH では、この anno を使用して、メッセージの配送/フォワード/返信の
	後に、元のメッセージに、日付とアドレスを自動的に注釈として入れる
	ことが出来ます。"dist"/"forw"/"repl" 各コマンドプログラムの
	-annotate スイッチの説明を参照して下さい。

・mark		メッセージをマークする/マークを消す
	ユーザー定義 sequences の操作 (メッセージ一覧)。
	「このメールには後で返事を書く」とかの『栞』をはさむようなものです:-)

・pick		メッセージ内容を検索する
	メッセージ一覧を調べて、選定基準にあったものを選び、メッセージ番号を
	返します。このメッセージ番号を他の MH コマンドプログラムに渡して
	使うのが一般的です。
	% scan `pick -from watanabe`
	% scan `pick -after friday`
	などです。

・sortm		メッセージのソート
	指定フォルダの特定のメッセージを、各メッセージの "Date: "行の
	日付順に並べ替えます。-datefield オプションで日付表記を含む
	ヘッダを参照して、その日付順に並び替えることも出来ます。
	また、-textfield オプションで、指定ヘッダの内容をアルファベット
	順に並び替えることも出来ます。尚、この場合、"Subject: "行を
	指定すると、頭の "re:" を取り除いて並び替えます。


rcvmail 関連
============

  送られてきたメッセージ(rcvmail=receive mailらしいです:-))を、hook する
のに用いられるコマンドプログラム群です。通常、これらはユーザーが自分で起動
することはなく、使用している MTA 経由で起動します。

・slocal	メッセージ中の条件に応じて、配送方法をそれぞれ指定する
	そのメッセージ中の色々な"条件"(「○○さんから来たメールの場合」とか)
	に応じて、"どうするか"(フォルダへ振分配送するとか転送するとか)を
	設定することが出来ます。
	通常、slocal はユーザーが自分で起動することはなく、使用している MTA
	経由で起動します。例えば sendmail を使用しているサイトでは、ユーザー
	の~/.forward に、"| /usr/local/lib/mh/slocal -user username" などと
	指定して、sendmail から直接 slocal に標準入力でメッセージが引き渡さ
	れる様にして用います。
	slocal の挙動の設定は、ユーザーの ~/.maildelivery ファイル(default。
	-maildelivery オプションでファイル名などを変更出来ます)に
	「header pattern action result string」の形式
	・header	メールヘッダに関する指定フィールドを指定する
	・pattern	上記フィールドの内容と、この文字列を比較します
	・action	header と pattern がマッチした場合に、どう処理するか
	・result	action の実行に対しての指定
	・string	action の指定に対して、メールを追加するファイル名や
			引渡す Bourne Shell プログラムなどを記述する
	で記述します。詳しくは、man mhook (MH-6.7 まで)、man slocal(1)
	(MH-6.8 以後はこれも)を参照して下さい。

・rcvstore	標準入力から MH フォルダへメッセージを取り込む

・rcvdist	届いたメッセージの再配送

・rcvpack	届いたメッセージを packf 形式(maildrop 形式)にする

・rcvtty	届いたメッセージをユーザーに通知する

############### ~/.maildelivery の一例
#header	pattern		action	result	string
From	postmaster	|	A	"/usr/local/lib/mh/rcvstore +Pm"
Subject	hogehoge	>	A	hogehoge.mail
default	-		|	?	"/usr/local/lib/mh/rcvstore +inbox"
*	-		|	R	"/usr/local/lib/mh/rcvtty"
###############
	・From: 行に「postmaster」文字列があれば、rcvstore を起動し、
	  フォルダ名 Pm に振分配送する。
	・Subject: 行に「hogehoge」文字列があれば、hogehoge.mail ファイルに
	  append する。
	・残りのメッセージは default で フォルダ名 inbox に振分配送する。
	・全てのメッセージに対し、rcvtty を起動する。

	詳しくは、rcvstore については man rcvstore(1) を、残りの3つの
	コマンドプログラムについては、man mhook(1) を参照して下さい。

	※ 尚、1文字書き間違えただけで、メールが「迷子」になったり、
	下手すると「ロスト」したりしてしまう、"危険な"コマンドでもあります:-)
	ので、使用前には、-verbose オプションを指定するなどして、充分に
	~/.maildelivery ファイルをテストしてから、使用して下さい。


PGP 関連
========

  PGP とは "Pretty Good Privacy" のことで、暗号を使用してファイルの
プライバシーを守るプログラムですが、電子メールでは、メール自体の
暗号化/復号化 と 電子署名に用いられます。MH では version 6.8.4 より、
PGP 対応のコマンドプログラムが用意されました。

  PGP についての詳しいことは、"PGP: Pretty Good Privacy" (Simson Garfinkel,
O'Reilly & Associates, Inc. 1995. 和訳「PGP 暗号メールと電子署名」(山本和彦
監訳。オライリージャパン ISBN4-900900-02-8) や RFC などを参照して下さい。

・pgped		PGP 処理(暗号化)
	(ドラフトを) PGP 処理をします。

・pgpshow	PGP 処理(復号化)をして表示する
	PGP を呼び、電子署名の照合や暗号メールの復号を行ない、
	照合・復号後のメールを show します。

	※ [JP3] 尚、MH-6.8.4 では、pgped も pgpshow も実は script
	(support/general/を参照して下さい)ですが、JP-3.00 以降では、
	options MH_PLUS を指定して make install すると、C で書かれた
	バージョン(上位互換…の筈^^;;)をインストールします。
	詳細は doc-JP/FEATURES.JP を参照して下さい。


POP 関連
========

  RFC1939 で規定された、server となるマシンにあるユーザーの maildrop
(メールスプール)を、他のマシン(client)からでも利用可能にする手法です。
USER コマンド(USER name)と PASS コマンド(PASS passwd)を対にして用いて
ユーザー認証を行ないます。

○POP サーバプログラム
・popd		pop server デーモン
	コマンドとは少し異なります:-)が、pop server デーモンが
	support/pop/ に用意されています。
	(MHconfig の "popdir" オプションなども参照して下さい)
	さらに MHconfig に "options MPOP" を指定することにより、非標準
	拡張 pop コマンドである、XTND SCAN をサポートします。
	(MHconfig の "options MPOP" を参照して下さい)

○POP クライアントプログラム
・popi		interactive な POP client プログラム
	起動すると POP サーバに接続し(-host で指定)、interactive に
	コマンドを実行する、POP クライアント用プログラムです。
	MHconfig に "options MPOP" を指定することにより、非標準拡張 pop
	コマンド、XTND SCAN もサポートします。
	(MHconfig の "options MPOP" を参照して下さい)

○POP データベース関連
・popauth	POP 認証データベースの操作 (APOP)
	APOP で使用する、認証データベース(default で /etc/pop.auth)を
	操作します。予め server 側と client 側で共有する secret 文字列
	を POP ユーザーが変更したり、管理者がデータベースの初期化や
	情報表示などを行なうのに使用します。

・popaka	sendmail/MMDF-II alias ファイルの POP エントリ作成
	POP データベースを読み込み、SendMail か MMDF-II alias ファイル
	形式で出力します。

・popwrd	POP 利用者のパスワード設定プログラム
	POP データベースにある POP 利用者のパスワードを変更する
	コマンドプログラムです。(passwd(1) に似てます:-))

	"options DPOP" を指定すると、ログインパスワード(/etc/passwd)とは
	別個に各自 POP 専用のパスワードを用意し、この独自パスワードデータ
	ベースを使用するようになります。このデータベースを操作するコマンド
	プログラムです。"options DPOP" も参照して下さい。

	※もちろん MH附属のもの以外にも、色々な POP サーバ/クライアント
	プログラムは存在しています:-)。


msh 関連
========

・msh		MH シェル (兼 BBoard reader)
	maildrop 形式で一つのファイルにまとめられている
	(各メッセージは「^A^A^A^A」(4つの Ctrl-A)と改行で区切られています)
	メッセージに対して、MH コマンドを実行するのに用いられるプログラム
	です。BBoards も同様の maildrop形式ですので、BBoard reader としても
	使用されます。
	尚、フォルダー名を指定して起動した場合(msh +inbox とか…)は、「MH の
	コマンドだけを使えるシェル」として働きます。

・burst		ダイジェストをメッセージへ分解(展開)
	ARPA Internet ダイジェスト形式を、元々のメッセージへと分解します。
	さらに、forward する(例えば "forw")のにまとめられたメッセージも、
	burst を使うことで分解できます。

・packf		指定したフォルダ内のメッセージを一つのファイルにまとめる
	各メッセージは「^A^A^A^A」(4つの Ctrl-A)と改行で区切られ、一つの
	ファイルにまとめられます(maildrop 形式)。"inc" コマンドプログラムで
	分解出来ます。packf して maildrop 形式にまとめることで、"msh"
	コマンドプログラムが使用できます。


BBoards 関連
============

  BBoards (Bulletin Boards) とは、UCI 学内などで使用されている(いた?)
簡易電子掲示板システム(簡易 BBS みたいなもの)のことです。
詳細は… papers/bboards/ 以下をよく読んで下さい:-)。

・bbc		BBoards をチェックする/読む
	BBoards とは電子掲示板のシステムのことで、bbc はこの電子掲示版を
	MH-like なインターフェースを用いて、チェックしたり読んだりする
	ためのプログラムです。"msh" コマンドプログラムを起動します。


  BBoards 関連は、http://www.ics.uci.edu/%7Emh/book/ などで公開されている
最新のオンライン版の MH book には、残念ながら既に記述がありません。以下は、
BBoards 関連のコマンドですが、詳細は不明です。

・bbl		BBoard マネージャープログラム
	配送リストのローカル archives を手動で処理するプログラムです。
	いわゆる BBS の「SYSOP 削除」などを、MH のコマンド(rmm とか)を
	用いて行なうことが出来るもの…らしいです(^^;;)。

・bbaka		BBoard 用の alias ファイル作成

・bbexp		BBoards 領域の削除

・bbtar		テープへ落すべき BBoards archive の名前を標準出力に出す

・sbboards	BBoard 用の MH style メーラ

・spop		POP 利用者用の MH style メーラ


もろもろ
========

・mhpath	メッセージやフォルダの実際のパスを絶対パスで表示する
	例えば、「mhpath +inbox 23 24」とすると、
	「/home/hayashi/Mail/inbox/23 /home/hayashi/Mail/inbox/24」と
	表示される…などです。通常、バッククオート("`")で取り込んで、
	他のコマンドプログラムなどの引数として用います。

・mhparam	.mh_profile コンポーネントの表示
	~/.mh_profile に指定されている MH の設定情報を表示します。
	例えば、.mh_profile に「Draft-Folder: drafts」と書かれている場合、
	「mhparam draft-folder」の入力に対し、「drafts」と表示されます。
	これもバッククオートで囲んで、ユーザーが作成するスクリプト内から
	呼び出す…などという目的に使用され(ると思い)ます。

・vmh		MH のビジュアルフロントエンド
 	簡単に言うと、msh のビジュアル版みたいなものです:-)。

	※ さらに、この他に MH のビジュアルなフロントエンドとしては
	X Window System の distribution に含まれている xmh や、
	他にも exmh などがあります。

・mhn		マルチメディア MH
	MIME (最新は RFC2045,46,47,48,49)を利用したメッセージの表示などが
	出来ます。詳しくは  man mhn(1) や、Jerry Sweet 氏による MHN Tutorial
	ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhn-tutorial.tex.Z
	などを参照して下さい。

・fmtdump	MH format ファイルのデコード
	MH format ファイルを解析したり、どの様にそのファイルを MH が解釈
	しているかを表示したりするプログラムです。
	MH format 自体は、man mh-format(5) を参照して下さい。


その他〜ちなみに
================

  MH の distribution には含まれていませんが、http://www.ics.uci.edu/%7Emh/
などで、MH コマンドプログラム関連のスクリプトがいくつか公開されています
(公開されている オンライン MH book に含まれています)。例えば、

・drmm		メッセージ削除用日付ヘッダを加える
	これは 内部から "anno" コマンドプログラムを起動し、
	「X-remove-after: 21 Apr 98」などというヘッダを加えます。
	これを後で、cron 等により、検索かつ rmm で消去するようにすればよい、
	という訳です:-)

・rcvsearch	メッセージ中の条件に対し正規表現を使用できるようにする
	MH の distribution には含まれていませんが、
	http://www.ics.uci.edu/%7Emh/ などで公開されているスクリプトです。
	(egrep してるだけなんですが…^^;;)

…などがあります。

/* MH-plus project <mh-plus@ml.chem.eng.himeji-tech.ac.jp> */
