/* 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 では /components)に従い、 送信先アドレスやサブジェクトなどの入力を要求します。 ※ /components などを参照して下さい。 ※ 尚、 は 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 では /replcomps)を用いて、 メッセージへの返信を作成します。テンプレートメカニズムでは、 返信を書こうとしているメッセージの内容に基づいて、形式を色々と 「プログラム」することが出来ます。 ※ /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 では /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 や メッセージ本体の冒頭一部をも含んで、表示することが出来ます。 設定方法については、/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 */