  Safecat
  Len Budney
  February 29, 2000

  1.  Introduction


  safecat is an implementation of D. J. Bernstein's maildir algorithm.
  It can be used to write mail messages to a qmail-style maildir, or to
  write data to a "spool" directory reliably. There are no lockfiles with
  safecat, and nothing is left to chance. If safecat returns a successful
  exit status, then you can be (practically) 100% sure your data is
  safely committed to disk. Further, if data is written to a directory
  using safecat (or other implementations of the maildir algorithm),
  then every file in that directory is guaranteed to be complete. If
  safecat fails to write all of the data, there will be no file at all
  in the destination directory.

  Of course, you know that such a thing cannot be: between UNIX and
  the different hardware options available, a 100% guarantee is not
  possible. However, safecat takes every precaution possible in writing
  your data.

  2.  Getting safecat


  The source code for safecat may be downloaded from
  <http://www.pobox.com/~lbudney/linux/software/safecat.html> or from
  sunsite or one of its mirrors. To build and install safecat, follow
  the instructions in the included INSTALL file. To summarize:

  make
  make setup check



  3.  Copying


  safecat is offered under the terms of the BSD License. The included
  file COPYING is a copy of the license.



  4.  Caveats


  On some systems, handling an email larger than 2GB may cause safecat
  to fail silently. This is an OS bug; the correct behavior, if large
  files are not supported, is to return failure upon writing past the
  supported file size. On those systems that support the O_LARGEFILE
  flag, mainly Linux, you can turn on large file support by editing
  conf-cc. I recommend you look into a different tool, such as rsync,
  for processing files larger than 2GB.



  5.  Credits


  The maildir algorithm implemented in safecat was devised by Professor
  D.  J. Bernstein, and is implemented in his qmail mailer. Other
  (approximate) implementations of the algorithm exist, in procmail,
  mutt, and the Emacs mailreader Mew, but to my knowledge this is the
  only standalone implementation, and the most complete implementation
  outside of qmail itself.


