総合手引 | セクション 1 | English | オプション |
ctm_smail のコマンドラインの引数には以下があります:
| |
stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー診断と情報メッセージ にタイムスタンプを付けた物がファイル log に書き込まれます。 | |
| |
ctm_smail が送信できるメールメッセージの最大サイズを制限します。 メールヘッダとその他の細かい物をこの制限に入れていないため およその値となります。 指定されないとデフォルトは、メールの限界と噂される 64k に対して ヘッダのための 1535 バイトを残した 64000 バイトです。 | |
| |
送信されるデルタの最大サイズを制限します。この制限より大きいデルタは 謝罪メールをメーリングリストに送り出します。 これは大幅な変更でユーザのメールボックスを圧迫してしまうのを 避けるためです。これはエンコードする前のサイズなので注意して下さい。 エンコードされるとメールヘッダを付ける前でサイズは 4/3 倍になります。 指定されないと無制限になります。 | |
| |
デルタのかけらをメールする代わりに、後で ctm_dequeue を使ってメールされるように指定されたディレクトリに格納します。 この機能によって、巨大なデルタを数時間または数日にも渡って分散させ、 ネットワークのバンド幅が狭かったりメールのスプール領域が小さい 受信者へのインパクトを押えることが可能です。 | |
ctm-delta は送信されるデルタで、 mail-alias はデルタを送信するメーリングリストです。 メールメッセージは sendmail(8) を使って送信されます。
ctm_dequeue のコマンドラインの引数には以下があります:
| |
stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー診断と情報メッセージ にタイムスタンプを付けた物がファイル log に書き込まれます。 | |
| |
1 回の ctm_dequeue の実行で送信するメールメッセージの数を制限します。 デフォルトでは、 ctm_dequeue は 1 回の実行で 1 つのメールメッセージを送信します。 | |
queuedir は ctm_smail が格納したメールメッセージのあるディレクトリです。 numchunks 個までのメールメッセージが実行ごとに送信されます。 受信者のメーリングリストは、溜められたファイルに すでにエンコードされています。
ctm_smail がキューにエントリを追加している最中や、複数の ctm_smail を並行に実行している最中でも ctm_dequeue を安全に実行できますが、配布される各ツリーごとに独立した キューのディレクトリを使うべきです。 これはエントリがアルファベット順に処理されるので、デルタの 作成時刻ではなく、デルタ名に従って 1 つのツリーが他の物より 前に処理されて不公平になるからです。
ctm_rmail のコマンドラインの引数には以下があります:
| |
stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー診断と情報メッセージ にタイムスタンプを付けた物がファイル log に書き込まれます。 | |
| |
デルタのかけらをこのディレクトリに集めます。
それぞれのかけらは 1 つのメールメッセージに対応します。
かけらは完全なデルタが出来上がると削除されます。
もし このフラグが指定されないと、入力ファイルは読まれませんが、
| |
| |
このディレクトリ内の完成したデルタを集めます。デルタは、すべてのかけらが 揃っている時に 1 つ以上のかけらから組み立てられます。 | |
| |
完成しているデルタを このソースツリーに適用します。このフラグが
指定されていない場合、デルタは格納されますが適用はされません。
ユーザは手動、または
ctm_rmail
を
| |
| |
ctm による適用が成功した後でデルタを削除します。 ctm はデルタのフルセットからファイルの小グループを回復する機能を 持つので、このフラグを避けて (そしてすべてのデルタを取って) おくのが 良いでしょう。 | |
| |
fork して ctm でのデルタの適用をバックグラウンドで実行します。 これは sendmail から ctm_rmail を自動的に呼び出す場合に有効です。なぜなら ctm は終了までに、とても長い時間を要し、それによって他の人のメールを 遅らせる原因になり、理論的にはリモート側の sendmail のタイムアウトによるメールの不要な再送信や、 MH の slocal のようなメールフィルタによる ctm_rmail の強制終了を引き起こす可能性があるからです。 膨大な数のバックグラウンドの ctm プロセスでマシンに負荷がかかる心配はありません。同時に 2 つ以上の ctm が起動されないようにロックが行われているからです。 | |
| |
完成したデルタを適用する時に
| |
| |
完成したデルタを適用する時に
| |
引数のファイル (もし無ければ 標準入力 ) がデルタのかけらとしてスキャンされます。 1 つのファイルから複数のデルタのかけらを読む事ができるので、 メールドロップ全体を 1 回のコマンドでスキャンして処理できます。
ctm_rmail を並行に (異なる入力ファイルで) 複数回起動しても安全です。 sendmail がメールを非同期に配送した時にこのようなことが起こり得ます。 これは処理を順序通りに保つためにロックが行われているからです。
From: owner-src-cur To: src-cur Subject: ctm-mail src-cur.0003.gz 1/4CTM_MAIL BEGIN src-cur.0003.gz 1 4 H4sIAAAAAAACA3VU72/bNhD9bP0VByQoEiyRSZEUSQP9kKTeYCR2gDTdsGFAwB/HRogtG5K8NCj6 v4+UZSdtUQh6Rz0eee/xaF/dzx8up3/MFlDkBNrGnbttAwyo1pxoRgoiBNX/QJ5d3c9/X8DcPGGo lggkPiXngE4W1gUjKPJCYyk5MZRbIqmNW/ASglIFcdwIzTUxaAqhnCPcBqloKEkJVNDMF0Azk+Bo dDzzk0Ods/+A5gXv9YyJHjMCtJwQNeESNma7hOmXDRxn CTM_MAIL END 61065
メッセージのサブジェクトは常に "ctm-mail" で始まりデルタの名前、いくつ目のかけらか、そして全部でいくつの かけらがあるのかが続きます。データは "CTM_MAIL BEGIN" と "CTM_MAIL END" という行で囲まれており、サブジェクト行の情報の複製、加えて単純な チェックサムが付きます。
デルタが maxctmsize を超えると、代わりに以下のようなメッセージが送られます:
From: owner-src-cur To: src-cur Subject: ctm-notice src-cur.0999.gzsrc-cur.0999.gz is 792843 bytes. The limit is 300000 bytes.
このデルタは ftp から得られます。
これでもうあなたのものです!
ctm_smail -m 60000 /wherever/it/is/src-cur.0032.gz src-guys
メールボックスの各 ctm-mail メッセージをデコードして、それらを完全なデルタに組み立て、そして 出来上がったデルタやそこらに転がっているデルタはどれも、 以下のように適用出来ます:
ctm_rmail -p ~/pieces -d ~/deltas -b /usr/ctm-src-cur $MAIL
( ctm_rmail はメッセージを削除しないので注意して下さい。 削除には どんなメールリーダでも使用できます。)
receiver-dude という名前の自動的にデコードとデルタの組み立てを行うけれども、 それらの適用は行わないようなメールエイリアスは、以下の行を /etc/mail/aliases ファイルに入れる事で作成可能です ( /ctm/tmp と /ctm/deltas ディレクトリ そして /ctm/log ファイルが daemon ユーザか wheel グループで書き込み可能な事を仮定しています) :
receiver-dude: "|ctm_rmail -p /ctm/tmp -d /ctm/deltas -l /ctm/log" owner-receiver-dude: real_dude@wherever.you.like
2 行目は、失敗した場合にそれを通常のメールボックスか、または どこか好きな所へ転送するためにあります。
集められた全デルタを適用して、適用したものを削除するには以下のように します:
ctm_rmail -D -d /ctm/deltas -b /ctm/src-cur -l /ctm/apply.log
柔軟性を最大限生かすためには、この procmail スクリプトからの引用の利用を考えてみて下さい:
PATH=$HOME/bin:$PATH:0 w * ^Subject: ctm-mail cvs-cur | ctm_incoming
以下のシェルスクリプト ~/bin/ctm_incoming と一緒に使います:
#! /bin/sh PATH="$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin" export PATHcd $HOME/ctm && ctm_rmail -f -p pieces -d deltas -l log -b /ctm
これは全部の ctm デルタを ~/ctm/deltas に置き、それらを /ctm 内のツリーに適用し、失敗したものは、すべてあなたの通常の メールボックスに落します。 ctm_incoming での PATH の操作は、このサンプルを取って来た ( FreeBSD でない) マシンで ctm_rmail から ctm(1) の実行を可能にするためのものです。
これを回避して安全なものにするために、 FreeBSD.org が作った CTM 部品には、 GNU Privacy Guard ユーティリティ互換なフォーマットで暗号的に署名しています。 このユーティリティは /usr/ports/security/gpg および Pretty Good Privacy v5 ユーティリティ /usr/ports/security/pgp5 から入手できます。 適切な公開鍵は ctm@FreeBSD.org を finger することで得られます。
このように署名された CTM デルタは、 検知されることなく攻撃者が改変することはできません。 それゆえ、CTM デルタを電子メールで受信する場合には、 GPG または PGP5 を使用して署名を確認することを勧めます。
QUEUEDIR/* | |
メールメッセージとしてエンコードされて、メーリングリストに 送信されるのを待っているデルタのかけら。 | |
PIECEDIR/* | |
残りのかけらの到着を待っているデルタのかけら。 | |
DELTADIR/* | |
完成したデルタ。 | |
BASEDIR/.ctm_status | |
このソースツリーに次に適用されるべきデルタの名前と番号を含むファイル。 | |
通常の操作では、 ctm_smail は以下のようなメッセージで報告します:
ctm_smail: src-cur.0250.gz 1/2 sent to src-guys
または、キューに入れたなら、
ctm_smail: src-cur.0250.gz 1/2 queued for src-guys
ctm_dequeue ユーティリティは以下のようなメッセージで報告します:
ctm_dequeue: src-cur.0250.gz 1/2 sent
ctm_rmail ユーティリティは以下のようなメッセージで報告します:
ctm_rmail: src-cur.0250.gz 1/2 stored ctm_rmail: src-cur.0250.gz 2/2 stored ctm_rmail: src-cur.0250.gz complete
もし入力ファイルのいずれもが正しいデルタのかけらを含んでいないと、 ctm_rmail は以下のように報告します:
ctm_rmail: message contains no delta
そして終了ステータスとして 1 を返します。もしメールフィルタが 当てにならないのなら、これを使って気まぐれなメッセージを リダイレクトして本当のメールボックスに入れる事ができます。
これらのメッセージは stderr かログファイルに出力されます。 ctm(1) からのメッセージも同様にここに現れます。 エラーメッセージは それ自身が説明的であるべきです。
CTM_MAIL (1) | January 24, 1995 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Do you laugh when the waiter drops a tray full of dishes? Unix weenies do. They're the first ones to laugh at hapless users, trying to figure out an error message that doesn't have anything to do with what they just typed. | ” |
— The Unix Haters' handbook |