aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/ctm/ctm_rmail/ctm_rmail.1
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ctm/ctm_rmail/ctm_rmail.1')
-rw-r--r--usr.sbin/ctm/ctm_rmail/ctm_rmail.1510
1 files changed, 0 insertions, 510 deletions
diff --git a/usr.sbin/ctm/ctm_rmail/ctm_rmail.1 b/usr.sbin/ctm/ctm_rmail/ctm_rmail.1
deleted file mode 100644
index 232f646529f8..000000000000
--- a/usr.sbin/ctm/ctm_rmail/ctm_rmail.1
+++ /dev/null
@@ -1,510 +0,0 @@
-.\" NOTICE: This is free documentation. I hope you get some use from these
-.\" words. In return you should think about all the nice people who sweat
-.\" blood to document their free software. Maybe you should write some
-.\" documentation and give it away. Maybe with a free program attached!
-.\"
-.\" Author: Stephen McKay
-.\"
-.\" $FreeBSD$
-.\"
-.Dd January 24, 1995
-.Dt CTM_MAIL 1
-.Os
-.Sh NAME
-.Nm ctm_smail ,
-.Nm ctm_dequeue ,
-.Nm ctm_rmail
-.Nd send and receive
-.Xr ctm 1
-deltas via mail
-.Sh SYNOPSIS
-.Nm ctm_smail
-.Op Fl l Ar log
-.Op Fl m Ar maxmsgsize
-.Op Fl c Ar maxctmsize
-.Op Fl q Ar queue-dir
-.Ar ctm-delta
-.Ar mail-alias
-.Nm ctm_dequeue
-.Op Fl l Ar log
-.Op Fl n Ar numchunks
-.Ar queue-dir
-.Nm ctm_rmail
-.Op Fl Dfuv
-.Op Fl l Ar log
-.Op Fl p Ar piecedir
-.Op Fl d Ar deltadir
-.Op Fl b Ar basedir
-.Op Ar
-.Sh DESCRIPTION
-In conjunction with the
-.Xr ctm 1
-command,
-.Nm ctm_smail ,
-.Nm ctm_dequeue
-and
-.Nm ctm_rmail
-are used to distribute changes to a source tree via email.
-The
-.Nm ctm_smail
-utility is given a compressed
-.Xr ctm
-delta, and a mailing list to send it to.
-It splits the delta into manageable
-pieces, encodes them as mail messages and sends them to the mailing list
-(optionally queued to spread the mail load).
-Each recipient uses
-.Nm ctm_rmail
-(either manually or automatically) to decode and reassemble the delta, and
-optionally call
-.Xr ctm
-to apply it to the source tree.
-At the moment,
-several source trees are distributed, and by several sites.
-These include
-the
-.Fx Ns -current
-source and CVS trees, distributed by
-.Li freefall.FreeBSD.org .
-.Pp
-Command line arguments for
-.Nm ctm_smail :
-.Bl -tag -width indent
-.It Fl l Ar log
-Instead of appearing on
-.Em stderr ,
-error diagnostics and informational messages (other than command line errors)
-are time stamped and written to the file
-.Em log .
-.It Fl m Ar maxmsgsize
-Limit the maximum size mail message that
-.Nm ctm_smail
-is allowed to send.
-It is approximate since mail headers and other niceties
-are not counted in this limit.
-If not specified, it will default to 64000
-bytes, leaving room for 1535 bytes of headers before the rumoured 64k mail
-limit.
-.It Fl c Ar maxctmsize
-Limit the maximum size delta that will be sent.
-Deltas bigger that this
-limit will cause an apology mail message to be sent to the mailing list.
-This is to prevent massive changes overwhelming users' mail boxes.
-Note that
-this is the size before encoding.
-Encoding causes a 4/3 size increase before
-mail headers are added.
-If not specified, there is no limit.
-.It Fl q Ar queue-dir
-Instead of mailing the delta pieces now, store them in the given directory
-to be mailed later using
-.Nm ctm_dequeue .
-This feature allows the mailing of large deltas to be spread out over
-hours or even days to limit the impact on recipients with limited network
-bandwidth or small mail spool areas.
-.El
-.Pp
-.Ar ctm-delta
-is the delta to be sent, and
-.Ar mail-alias
-is the mailing list to send the delta to.
-The mail messages are sent using
-.Xr sendmail 8 .
-.Pp
-Command line arguments for
-.Nm ctm_dequeue :
-.Bl -tag -width indent
-.It Fl l Ar log
-Instead of appearing on
-.Em stderr ,
-error diagnostics and informational messages (other than command line errors)
-are time stamped and written to the file
-.Em log .
-.It Fl n Ar numchunks
-Limit the number of mail messages that
-.Nm ctm_dequeue
-will send per run.
-By default,
-.Nm ctm_dequeue
-will send one mail message per run.
-.El
-.Pp
-.Ar queuedir
-is the directory containing the mail messages stored by
-.Nm ctm_smail .
-Up to
-.Ar numchunks
-mail messages will be sent in each run.
-The recipient mailing list is already
-encoded in the queued files.
-.Pp
-It is safe to run
-.Nm ctm_dequeue
-while
-.Nm ctm_smail
-is adding entries to the queue, or even to run
-.Nm ctm_smail
-multiple times concurrently, but a separate queue directory should be used
-for each tree being distributed.
-This is because entries are served in
-alphabetical order, and one tree will be unfairly serviced before any others,
-based on the delta names, not delta creation times.
-.Pp
-Command line arguments for
-.Nm ctm_rmail :
-.Bl -tag -width indent
-.It Fl l Ar log
-Instead of appearing on
-.Em stderr ,
-error diagnostics and informational messages (other than command line errors)
-are time stamped and written to the file
-.Em log .
-.It Fl p Ar piecedir
-Collect pieces of deltas in this directory.
-Each piece corresponds to a
-single mail message.
-Pieces are removed when complete deltas are built.
-If this flag is not given, no input files will be read, but completed
-deltas may still be applied with
-.Xr ctm
-if the
-.Fl b
-flag is given.
-.It Fl d Ar deltadir
-Collect completed deltas in this directory.
-Deltas are built from one or
-more pieces when all pieces are present.
-.It Fl b Ar basedir
-Apply any completed deltas to this source tree.
-If this flag is not given,
-deltas will be stored, but not applied.
-The user may then apply the deltas
-manually, or by using
-.Nm ctm_rmail
-without the
-.Fl p
-flag.
-Deltas will not be applied if they do not match the
-.Li .ctm_status
-file in
-.Ar basedir
-(or if
-.Li .ctm_status
-does not exist).
-.It Fl D
-Delete deltas after successful application by
-.Xr ctm .
-It is probably a good idea to avoid this flag (and keep all the deltas) as
-.Xr ctm
-has the ability to recover small groups of files from a full set of deltas.
-.It Fl f
-Fork and execute in the background while applying deltas with
-.Xr ctm .
-This is useful when automatically invoking
-.Nm ctm_rmail
-from
-.Xr sendmail
-because
-.Xr ctm
-can take a very long time to complete, causing other people's mail to
-be delayed, and can in theory cause spurious
-mail retransmission due to the remote
-.Xr sendmail
-timing out, or even termination of
-.Nm ctm_rmail
-by mail filters such as
-.Xr "MH's"
-.Xr slocal .
-Do not worry about zillions of background
-.Xr ctm
-processes loading your machine, since locking is used to prevent more than one
-.Xr ctm
-invocation at a time.
-.It Fl u
-Pass the
-.Fl u
-flag to the
-.Xr ctm
-command when applying the complete deltas, causing it to set the modification
-time of created and modified files to the CTM delta creation time.
-.It Fl v
-Pass the
-.Fl v
-flag to the
-.Xr ctm
-command when applying the complete deltas, causing a more informative
-output.
-All
-.Xr ctm
-output appears in the
-.Nm ctm_rmail
-log file.
-.El
-.Pp
-The file arguments (or
-.Em stdin ,
-if there are none) are scanned for delta pieces.
-Multiple delta pieces
-can be read from a single file, so an entire maildrop can be scanned
-and processed with a single command.
-.Pp
-It is safe to invoke
-.Nm ctm_rmail
-multiple times concurrently (with different input files),
-as might happen when
-.Xr sendmail
-is delivering mail asynchronously.
-This is because locking is used to
-keep things orderly.
-.Sh FILE FORMAT
-Following are the important parts of an actual (very small) delta piece:
-.Bd -literal
-From: owner-src-cur
-To: src-cur
-Subject: ctm-mail src-cur.0003.gz 1/4
-
-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
-.Ed
-.Pp
-The subject of the message always begins with
-.Dq ctm-mail
-followed by the name of the delta, which piece this is, and how many total
-pieces there are.
-The data are bracketed by
-.Dq CTM_MAIL BEGIN
-and
-.Dq CTM_MAIL END
-lines, duplicating the information in the subject line, plus a simple checksum.
-.Pp
-If the delta exceeds
-.Ar maxctmsize ,
-then a message like this will be received instead:
-.Bd -literal
-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.
-
-You can retrieve this delta via ftp.
-.Ed
-.Pp
-You are then on your own!
-.Sh ENVIRONMENT
-If deltas are to be applied then
-.Xr ctm 1
-and
-.Xr gunzip 1
-must be in your
-.Ev PATH .
-.Sh FILES
-.Bl -tag -width indent
-.It Pa QUEUEDIR/*
-Pieces of deltas encoded as mail messages waiting to be sent to the
-mailing list.
-.It Pa PIECEDIR/*
-Pieces of deltas waiting for the rest to arrive.
-.It Pa DELTADIR/*
-Completed deltas.
-.It Pa BASEDIR/.ctm_status
-File containing the name and number of the next delta to be applied to this
-source tree.
-.El
-.Sh EXIT STATUS
-The
-.Nm ctm_smail ,
-.Nm ctm_dequeue
-and
-.Nm ctm_rmail
-utilities return exit status 0 for success, and 1 for various failures.
-The
-.Nm ctm_rmail
-utility is expected to be called from a mail transfer program, and thus signals
-failure only when the input mail message should be bounced (preferably into
-your regular maildrop, not back to the sender).
-In short, failure to
-apply a completed delta with
-.Xr ctm
-is not considered an error important enough to bounce the mail, and
-.Nm ctm_rmail
-returns an exit status of 0.
-.Sh EXAMPLES
-To send delta 32 of
-.Em src-cur
-to a group of wonderful code hackers known to
-.Xr sendmail
-as
-.Em src-guys ,
-limiting the mail size to roughly 60000 bytes, you could use:
-.Bd -literal -offset indent
-ctm_smail -m 60000 /wherever/it/is/src-cur.0032.gz src-guys
-.Ed
-.Pp
-To decode every
-.Nm ctm-mail
-message in your mailbox, assemble them into complete deltas, then apply
-any deltas built or lying around, you could use:
-.Bd -literal -offset indent
-ctm_rmail -p ~/pieces -d ~/deltas -b /usr/ctm-src-cur $MAIL
-.Ed
-.Pp
-(Note that no messages are deleted by
-.Nm ctm_rmail .
-Any mail reader could be used for that purpose.)
-.Pp
-To create a mail alias called
-.Em receiver-dude
-that will automatically decode and assemble deltas, but not apply them,
-you could put the following lines in your
-.Pa /etc/mail/aliases
-file (assuming the
-.Pa /ctm/tmp
-and
-.Pa /ctm/deltas
-directories and
-.Pa /ctm/log
-file are writable by user
-.Em daemon
-or group
-.Em wheel ) :
-.Bd -literal -offset indent
-receiver-dude: "|ctm_rmail -p /ctm/tmp -d /ctm/deltas -l /ctm/log"
-owner-receiver-dude: real_dude@wherever.you.like
-.Ed
-.Pp
-The second line will catch failures and drop them into your regular mailbox,
-or wherever else you like.
-.Pp
-To apply all the deltas collected, and delete those applied, you could use:
-.Bd -literal -offset indent
-ctm_rmail -D -d /ctm/deltas -b /ctm/src-cur -l /ctm/apply.log
-.Ed
-.Pp
-For maximum flexibility, consider this excerpt from a
-.Xr procmail
-script:
-.Bd -literal -offset indent
-PATH=$HOME/bin:$PATH
-
-:0 w
-* ^Subject: ctm-mail cvs-cur
-| ctm_incoming
-.Ed
-.Pp
-together with the
-shell script
-.Pa ~/bin/ctm_incoming :
-.Bd -literal -offset indent
-#! /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
-.Ed
-.Pp
-which will deposit all
-.Xr ctm
-deltas in
-.Pa ~/ctm/deltas ,
-apply them to the tree in
-.Pa /ctm ,
-and drop any failures into your regular mail box.
-Note the
-.Ev PATH
-manipulation in
-.Pa ctm_incoming
-which allows
-.Nm ctm_rmail
-to execute
-.Xr ctm 1
-on the
-.Pq non- Ns Fx
-machine that this example was taken from.
-.Sh SECURITY
-On its own, CTM is an insecure protocol
-- there is no authentication performed that the
-changes applied to the source code were sent by a
-trusted party, and so care should be taken if the
-CTM deltas are obtained via an unauthenticated
-medium such as regular email.
-It is a relatively simple matter for an attacker
-to forge a CTM delta to replace or precede the
-legitimate one and insert malicious code into your
-source tree.
-If the legitimate delta is somehow prevented from
-arriving, this will go unnoticed until a later
-delta attempts to touch the same file, at which
-point the MD5 checksum will fail.
-.Pp
-To remedy this insecurity, CTM delta pieces generated by
-FreeBSD.org are cryptographically signed in a
-format compatible with the GNU Privacy Guard
-utility, available in /usr/ports/security/gpg, and
-the Pretty Good Privacy v5 utility,
-/usr/ports/security/pgp5.
-The relevant public key can be obtained by
-fingering ctm@FreeBSD.org.
-.Pp
-CTM deltas which are thus signed cannot be
-undetectably altered by an attacker.
-Therefore it is recommended that you make use of
-GPG or PGP5 to verify the signatures if you
-receive your CTM deltas via email.
-.Sh DIAGNOSTICS
-In normal operation,
-.Nm ctm_smail
-will report messages like:
-.Bd -literal -offset indent
-ctm_smail: src-cur.0250.gz 1/2 sent to src-guys
-.Ed
-.Pp
-or, if queueing,
-.Bd -literal -offset indent
-ctm_smail: src-cur.0250.gz 1/2 queued for src-guys
-.Ed
-.Pp
-The
-.Nm ctm_dequeue
-utility will report messages like:
-.Bd -literal -offset indent
-ctm_dequeue: src-cur.0250.gz 1/2 sent
-.Ed
-.Pp
-The
-.Nm ctm_rmail
-utility will report messages like:
-.Bd -literal -offset indent
-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
-.Ed
-.Pp
-If any of the input files do not contain a valid delta piece,
-.Nm ctm_rmail
-will report:
-.Bd -literal -offset indent
-ctm_rmail: message contains no delta
-.Ed
-.Pp
-and return an exit status of 1.
-You can use this to redirect wayward messages
-back into your real mailbox if your mail filter goes wonky.
-.Pp
-These messages go to
-.Em stderr
-or to the log file.
-Messages from
-.Xr ctm 1
-turn up here too.
-Error messages should be self explanatory.
-.Sh SEE ALSO
-.Xr ctm 1 ,
-.Xr ctm 5
-.\" .Sh HISTORY
-.Sh AUTHORS
-.An Stephen McKay Aq Mt mckay@FreeBSD.org