ctm_smail(1)
|
FreeBSD 一般コマンドマニュアル
|
ctm_smail
ctm_smail
ctm-delta mail-alias
ctm_dequeue [-l log] [-n numchunks] queue-dir
ctm_rmail [-Dfuv] [-l log] [-p piecedir] [-d deltadir] [-b basedir]
[file ...]
解説
ctm_smail, ctm_dequeue, ctm_rmail は ctm(1) コマンドと組み合わせて、ソー
スツリーへの変更を電子メールで配布するために使われます。 ctm_smail には圧
縮した ctm のデルタとそれを送るメーリングリストを与えます。するとデルタを
送信できる大きさに切り分けて、メールメッセージとしてエンコードしたものを
メーリングリストに送ります (メールの負荷を分散させるためにキューに入れる
ように選択できます)。各受信者は ctm_rmail を使い (手動または自動で) デル
タのデコードと再組み立てを行い、それをソースツリーに適用するために ctm を
呼び出すようにも指定できます。現在、いくつかのソースツリーが、いくつかの
サイトによって配布されています。その中には freefall.FreeBSD.org が配布し
ている FreeBSD-current のソースと CVS のツリーもあります。
ctm_smail のコマンドラインの引数には以下があります:
-l log stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー
診断と情報メッセージにタイムスタンプを付けた物がファイル log に書
き込まれます。
-m maxmsgsize
ctm_smail が送信できるメールメッセージの最大サイズを制限します。
メールヘッダとその他の細かい物をこの制限に入れていないためおよそ
の値となります。指定されないとデフォルトは、メールの限界と噂され
る 64k に対してヘッダのための 1535 バイトを残した 64000 バイトで
す。
-c maxctmsize
送信されるデルタの最大サイズを制限します。この制限より大きいデル
タは謝罪メールをメーリングリストに送り出します。これは大幅な変更
でユーザのメールボックスを圧迫してしまうのを避けるためです。これ
はエンコードする前のサイズなので注意して下さい。エンコードされる
とメールヘッダを付ける前でサイズは 4/3 倍になります。指定されない
と無制限になります。
-q queue-dir
デルタのかけらをメールする代わりに、後で ctm_dequeue を使ってメー
ルされるように指定されたディレクトリに格納します。この機能によっ
て、巨大なデルタを数時間または数日にも渡って分散させ、ネットワー
クのバンド幅が狭かったりメールのスプール領域が小さい受信者へのイ
ンパクトを押えることが可能です。
ctm-delta は送信されるデルタで、 mail-alias はデルタを送信するメーリング
リストです。メールメッセージは sendmail(8) を使って送信されます。
ctm_dequeue のコマンドラインの引数には以下があります:
-l log stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー
診断と情報メッセージにタイムスタンプを付けた物がファイル log に書
ルファベット順に処理されるので、デルタの作成時刻ではなく、デルタ名に従っ
て 1 つのツリーが他の物より前に処理されて不公平になるからです。
ctm_rmail のコマンドラインの引数には以下があります:
-l log stderr に出力する代わりに、 (コマンドラインのエラー以外の) エラー
診断と情報メッセージにタイムスタンプを付けた物がファイル log に書
き込まれます。
-p piecedir
デルタのかけらをこのディレクトリに集めます。それぞれのかけらは 1
つのメールメッセージに対応します。かけらは完全なデルタが出来上が
ると削除されます。もし このフラグが指定されないと、入力ファイルは
読まれませんが、 -b フラグが指定されていれば完成しているデルタは
ctm を使って適用されるかもしれません。
-d deltadir
このディレクトリ内の完成したデルタを集めます。デルタは、すべての
かけらが揃っている時に 1 つ以上のかけらから組み立てられます。
-b basedir
完成しているデルタを このソースツリーに適用します。このフラグが指
定されていない場合、デルタは格納されますが適用はされません。ユー
ザは手動、または ctm_rmail を -p フラグ無しで使ってデルタを適用で
きます。もしデルタが basedir の .ctm_status ファイルとマッチしな
い場合 (もしくは .ctm_status が存在しない場合) には、デルタは適用
されません。
-D ctm による適用が成功した後でデルタを削除します。 ctm はデルタのフ
ルセットからファイルの小グループを回復する機能を持つので、このフ
ラグを避けて (そしてすべてのデルタを取って) おくのが良いでしょ
う。
-f fork して ctm でのデルタの適用をバックグラウンドで実行します。こ
れは sendmail から ctm_rmail を自動的に呼び出す場合に有効です。な
ぜなら ctm は終了までに、とても長い時間を要し、それによって他の人
のメールを遅らせる原因になり、理論的にはリモート側の sendmail の
タイムアウトによるメールの不要な再送信や、 MH の slocal のような
メールフィルタによる ctm_rmail の強制終了を引き起こす可能性がある
からです。膨大な数のバックグラウンドの ctm プロセスでマシンに負荷
がかかる心配はありません。同時に 2 つ以上の ctm が起動されないよ
うにロックが行われているからです。
-u 完成したデルタを適用する時に -u フラグを ctm コマンドに渡します。
これによって作成、変更されたファイルの変更時刻が CTM デルタの作成
時刻にセットされます。
-v 完成したデルタを適用する時に -v フラグを ctm コマンドに渡します。
これによってより多くの情報出力が得られます。すべての ctm からの出
力は ctm_rmail のログファイルに記録されます。
引数のファイル (もし無ければ 標準入力 ) がデルタのかけらとしてスキャンさ
CTM_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.gz
src-cur.0999.gz is 792843 bytes. The limit is 300000 bytes.
このデルタは ftpmail か、または大学の仲良しから得られます。
これでもうあなたのものです!
使用例
src-cur の 32 番目のデルタを src-guys として sendmail に登録されている素
晴らしいコードハッカーのグループに、メールのサイズをおよそ 60000 バイトに
制限して送るためには以下のように出来ます:
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 行目は、失敗した場合にそれを通常のメールボックスか、またはどこか好きな
所へ転送するためにあります。
以下のシェルスクリプト ~/bin/ctm_incoming と一緒に使います:
#! /bin/sh
PATH="$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
export PATH
cd $HOME/ctm && ctm_rmail -f -p pieces -d deltas -l log -b /ctm
これは全部の ctm デルタを ~/ctm/deltas に置き、それらを /ctm 内のツリーに
適用し、失敗したものは、すべてあなたの通常のメールボックスに落します。
ctm_incoming での PATH の操作は、このサンプルを取って来た ( FreeBSD でな
い) マシンで ctm_rmail から ctm の実行を可能にするためのものです。
セキュリティ
CTM 自身、安全ではないプロトコルです - ソースコードへ加えられた修正が信頼
できるところから送られたことを認証しませんので、通常の電子メール等の信頼
できない媒体から CTM デルタを得た場合には注意が必要です。 CTM デルタを偽
造して、正当なものを交換または上書きし、悪意あるコードをあなたのソースツ
リーに挿入することは、攻撃者にとって比較的簡単です。正当なデルタの到着が
なんらかの方法で妨げられた場合、これを感知できるのは、後のデルタが同じ
ファイルを触ろうとする時点です。この時点で、MD チェックサムが失敗します。
これを回避して安全なものにするために、 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 を使用して署名を確認することを勧めます。
環境変数
デルタを適用するのならば ctm(1) と gunzip(1) が PATH に含まれていなければ
なりません。
関連ファイル
QUEUEDIR/*
メールメッセージとしてエンコードされて、メーリングリストに送信さ
れるのを待っているデルタのかけら。
PIECEDIR/*
残りのかけらの到着を待っているデルタのかけら。
DELTADIR/*
完成したデルタ。
BASEDIR/.ctm_status
このソースツリーに次に適用されるべきデルタの名前と番号を含むファ
イル。
または、キューに入れたなら、
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 からのメッ
セージも同様にここに現れます。エラーメッセージは それ自身が説明的であるべ
きです。
関連項目
ctm(1), ctm(5)
作者
Stephen McKay <mckay@FreeBSD.org>
日本語訳
野首 寛高 (h-nokubi@nmit.mt.nec.co.jp): FreeBSD 用に翻訳
FreeBSD 4.4 January 24, 1995 FreeBSD 4.4