[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[minion-cvs] Update the README



Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv20363

Modified Files:
	README TODO 
Log Message:
Update the README

Index: README
===================================================================
RCS file: /home/minion/cvsroot/src/minion/README,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- README	5 Jan 2003 06:49:24 -0000	1.6
+++ README	6 Jan 2003 04:59:25 -0000	1.7
@@ -1,44 +1,87 @@
-This is Mixminion version 0.0.1.
+This is Mixminion version 0.0.2, release candidate 1.
+
+CONTENTS:
+        I.    Overview
+        II.   What's new in this version
+        III.  How to upgrade
+        IV.   How to install
+        V.    How to send messages
+        VI.   How to run a server
+        VII.  How to report bugs and suggestions.
+        VIII. How to contribute
+
+I. OVERVIEW
+===========
 
 Mixminion is the standard implementation for the Type-III anonymous Mix
 protocol, which lets you send very anonymous email.  This best-of-breed
-remailer uses conservative design approaches to provide security against
-most known attacks. We chose a simple extensible design so we can provide a
-robust core system, and then go on to experiment with new research features
-such as dummy policies, directory servers, and reputation systems.
+remailer uses conservative design approaches to provide security against most
+known attacks. We chose a simple extensible design so we can provide a robust
+core system, and then go on to experiment with new research features such as
+dummy policies, directory servers, and reputation systems.
 
-This is a testing alpha release.  You will probably only want to use it
-if you are technically inclined, curious, and interested in helping the
+This is a testing alpha release.  You will probably only want to use it if
+you are technically inclined, curious, and interested in helping the
 Mixminion development effort.
 
 WARNING!  Don't use this release if you require strong anonymity.  It has
-known deficiencies, including some that make it possible for an adversary
-to trace your message through the system.
+known deficiencies, including some that make it possible for an adversary to
+trace your message through the system.
 
-IN THIS VERSION:
+II. WHAT'S NEW IN THIS VERSION?
+===============================
+
+NEW IN VERSION 0.0.2:
+   - A real SMTP exit module to relay messages via a local MTA.  Blacklisting
+     is supported by address, by username, by host, by domain, and by regular
+     expression.
+   - Integrated directory support for clients.
+   - Automatic path selection, along with a better user interface to specify
+     paths.
+   - You can now enable Cottrell (DynamicPool) and Binomial Dynamic Pool
+     batching, though they are disabled by default to make the system more
+     testable.
+   - Servers resist certain trivial DOS attacks more strongly.  In
+     particular, you should no longer be able to send zlib bombs or flood a
+     server with open connections.
+   - Clean build process under FreeBSD.
+   - Ability to run server as a daemon.
+   - Slightly better documentation and error messages.
+   - Better resistance to newline corruption of server descriptors.
+   - Other bugfixes and performance improvements too numerous to mention.
+
+NEW IN VERSION 0.0.1:
    - You can run a rudimentary server that can deliver to other Mixminion
      servers, that can use Mixmaster to deliver to any external address,
      or that sends SMTP directly to a preconfigured set of addresses.
    - You can send anonymous email via these servers.
 
-NOT IN THIS VERSION:
+STILL NOT IN THIS VERSION:
    - There is no client interface for sending replies or generating reply
      blocks (the code is written but not exposed).
-   - There are still some ways to DoS the server.
+   - We could use some man pages.
    - IP-based restrictions don't work.
-   - There is no exit module for servers that want to send SMTP directly to
-     unrestricted addresses.
-   - There is no integrated directory support yet.
-   - No automatic key generation.
-   - No automatic path selection.
+   - No automatic key generation or server publication.
+   - No support for distributed directories.
    - MMTP does not exactly follow the specification yet.
-   - Cottrell batching is disabled; instead we use a simple timed mix. The
-     mix interval is set to a ridiculously low 5 minutes for testing.
+   - Other stuff too numerous to mention; see TODO.
 
-HOW TO BUILD, TEST, AND INSTALL MIXMINION: The quick version.
-  <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.1.tar.gz>
+III. HOW TO UPGRADE FROM MIXMINION 0.0.1
+========================================
 
-  % cd Mixminion-0.0.1
+Just follow the installation instructions below. :)
+
+Be aware that the client command line has changed significantly since version
+0.0.1, and there are important new options in the server configuration file.
+
+IV. HOW TO INSTALL MIXMINION
+============================
+
+The quick version.
+------------------
+  <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.2.tar.gz>
+
+  % cd Mixminion-0.0.2
   % make download-openssl
   % make build-openssl
   % make
@@ -50,7 +93,9 @@
  OR:
     % make install PREFIX=~
 
-HOW TO BUILD, TEST, AND INSTALL MIXMINION: The verbose version.
+The verbose version
+-------------------
+
   1) You must have Python version 2.0 or later installed on your system.  The
      binary may be called "python", "python2", "python2.X", or something else.
      If you don't have Python >=v2.0, go install it.  You can find source and
@@ -81,48 +126,133 @@
      executable if no prefix is provided.  To make sure that everything was
      installed correctly, you can run "mixminion unittests".
 
-HOW TO SEND AN EMAIL MESSAGE VIA MIXMINION:
- [First time only. These steps won't be necessary once v0.0.2 is out.]
-   1) Download the latest directory from
-         http://www.mixminion.net/miniondir.tar.gz
-   2) Unpack it into your homedir; it will create the directory
-         "~/.mixminion/servers/".
+V. HOW TO SEND MESSAGES VIA MIXMINION
+=====================================
 
- [All subsequent times. The first two steps won't be necessary once v0.0.2 is
-    out.]
-   1) Check out your list of servers: run 'mixminion list-servers'.
-   2) Decide on a two-part path.  Each part of the path must be a comma-
-      separated list of servers.  The last server in the second part of the
-      path must support smtp.  All intermediate servers must support 'relay'.
-   3) Run (type this as a single line):
-         mixminion client -t <email address>
-              --path1=<first part of your path>
-              --path2=<second part of your path>
-              -i <filename to send, or - to read from stdin>.
+Just run the following command line:
 
-      Example:
-         mixminion client -t nosuchuser@mixminion.net --path1=server1,server9 \
-              --path2=server5,server10 -i /etc/motd
+     mixminion send -t <email address> -i <filename to send, or '-' for stdin>
+
+Mixminion will then take the following steps:
+
+     A) Download and validate the latest server directory.
+        (But only if you haven't done so since midnight GMT.)
+     B) Select a path that ends at a server with SMTP support. 
+        (Currently, this defaults to 4 hops.)            
+     C) Read your message.
+     D) Construct a Type-III Mix packet containing your message. 
+        (For more information, see the links at http://www.mixminion.net/)
+     E) Send the message to the first server in your path.
+
+To see a list of currently known servers, type:
+
+      mixminion list-servers
+
+To force a reload of the server directory, type:
+
+      mixminion send -t <address> -i <file> -D yes
+
+To send a message _without_ reloading the directory, type:
+
+      mixminion send -t <address> -i <file> -D no
+
+To force a path of a given length, type:
+
+      mixminion send -t <address> -i <file> -H <number of hops>
+
+      You can change the default by editing ~/.mixminionrc
+
+To specify a path manually, type:
+
+      mixminion send -t <address> -i <file> -P <path>
+
+      The argument <path> must be a comma separated list of either:
+          (a) Server nicknames as given by 'list-servers'
+          (b) Paths to files containing server descriptors [more info below]
+
+      For example, to send a message through the servers Foo, Bar, Baz, and
+      Quux, you would type "-P Foo,Bar,Baz,Quux."
+
+      If you only care about the servers at the beginning or end of your
+      path, you can include a wildcard, like this:
+
+             -P 'Foo,*'           [Path that starts with Foo]
+             -P '*,Foo'           [Path that ends with Foo]
+             -P 'Foo,Bar,*,Quux'  [Path that starts with Foo and Bar,
+                                   and ands with Quux]
+
+      {ADVANCED} To specify a swap point explicitly, you use a colon in
+      your path, as in:
+             -P 'Foo,Bar:Baz,Quux'    [Swap headers at server Bar]
+             --swap-at=<n>            [Swap headers at the n'th server]
+      If you don't know what a swap point is, don't worry. :)
+
+VI. HOW TO RUN YOUR OWN MIXMINION SERVER:
+=========================================
+
+1) Create your own mixminiond.conf based on "etc/mixminiond.conf" from the
+   mixminion distribution.
+
+2) Edit mixminiond.conf to refer to your own setup.
+
+3) Run your server for the first time:
 
-HOW TO RUN YOUR OWN MIXMINION SERVER:
-   1) Create your own mixminiond.conf based on "etc/mixminiond.conf" from the
-      mixminion distribution.
-   2) Edit mixminiond.conf to refer to your own setup.
-   3) Run your server for the first time:
         "mixminion server -f <path to mixminiond.conf>"
-   4) {This step will change in future version once directories are supported.}
 
-      For clients to use your server, they'll need a copy of your server
-      descriptor, which should be stored in $SERVER_HOME/keys/key_*/ServerDesc.
-      For example, if your mixminiond.conf contains the following line:
+   {If you put mixminiond.conf in /etc, you don't need to specify the path.}
+
+4) To try out your server, clients will need a copy of your server
+   descriptor, which should be stored in $SERVER_HOME/keys/key_*/ServerDesc.
+
+   For example, if your mixminiond.conf contains the following line:
+
            Homedir: /home/mixminion/spool
 
-      Then your first server descriptor will be stored in
-            "/home/mixminion/spool/keys/key_0001/ServerDesc".
+   Then your first server descriptor will be stored in:
 
-      Clients should place a copy of this file, named whatever you like,
-      in their "~/.mixminion/servers" directory.
+           "/home/mixminion/spool/keys/key_0001/ServerDesc".
 
-      Since v0.0.1 is just a working alpha release, we're going to wait
-      until we have directories working before we ask people to give us
-      their server descriptors. Stay tuned.
+   And clients can then import this file by running:
+
+           mixminion import-server <filename>
+
+5) When you're ready to advertise your server, email your server descriptor
+   to <nickm@freehaven.net>.  I'll try out your server for a while, then add
+   it to the directory.
+
+   WARNING: we don't have statistics yet, so the system isn't robust in the
+   presence of unreliable servers in the directory.  Please let me know if
+   you're going to take down a server, and please don't publish a server if
+   you don't think you can keep it up for a good while.
+
+   {This step will be more automated in later versions.}
+
+VII. HOW TO REPORT BUGS AND SUGGEST NEW FEATURES
+================================================
+
+Just email <nickm@freehaven.net>.
+
+For help in debugging, please try to send a copy of:
+        * What command you were running
+        * The complete error you got, including stack trace (if any)
+
+If your error occurred on a running server, please make a copy of your
+log--it might be helpful.
+
+VIII. HOW TO CONTRIBUTE
+=======================
+
+Send patches to <nickm@freehaven.net>.  If you can, please submit unified
+diffs against the latest version of the code in CVS.
+
+Make sure to run 'make test' before you send in any patches, so you can see
+whether your patch broke existing code.  (It's okay if you're not sure how to
+fix the test, but please let me know when you send your patch.)
+
+------------------
+(for emacs)
+  Local Variables:
+  mode:text
+  indent-tabs-mode:nil
+  fill-column:77
+  End:

Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -d -r1.55 -r1.56
--- TODO	6 Jan 2003 03:29:44 -0000	1.55
+++ TODO	6 Jan 2003 04:59:25 -0000	1.56
@@ -10,79 +10,9 @@
 
 NEEDS TO BE WRITTEN
 
-For 0.0.2: [The 'desireable features' release.  This should contain
-    user-visible improvements to address the most glaring defects in 0.0.1.]
-
-	o Real SMTP module
-		o Exit filtering support
-		o Tests for blacklist
-		o Tests for SMTP module
-		o Actually try it out.
-	D Interface for reply blocks
-	o Minimal directory support
-		o Make everything resistant to newline corruption
-		       o Signatures are independent of newline style
-		       o Config files are read independent of newline style.
-		       o Tests for above.
-		       o Directories are independent of nl style
-		       o Tests for above
-		o Test whether serverinfo is really pickleable.
-		o Client-side directory support
-			o Backend
-			o Integrated server list management
-			o Tests for backend
-			o CLI support
-				o 'Import' support
-				D 'Remove' support
-				o Actually invoke 'downloadDirectory'
-			o Tests for new server lists
-			o Tests for CLI support
-			o Test CLI
-		o Server-side directory generation (not automated;
-	          still no automatic rotation.)
-		  	o Backend
-			o CLI
-			o Tests for backend
-			o Test CLI
-		- Retest CLI one last time before shipping
-	o Path selection
-		o Implement
-		o Test backend
-		o Test CLI code
-		o Test CLI
-	o Minimal DOS prevention
-		o SMTP-address blacklisting (for SMTP module)
-		o Prevent bogus nicknames from bombing server.
-		o Prevent zlib bombing: minimal version.
-		        o Implement
-			o Tests for BuildMessage functionality
-			o Tests for ModuleManager functionality
-			o Mention in the spec.
-			o Arg! Make space-bound zlib work under Python <2.2.
-		o Timeout connections.
-			o Implement timeout logic in MMTPServer
-			o Implement in ServerMain
-			o Tests for MMTPServer code: setting lastActivity
-			o Tests for MMTPServer code: timing out.
-			o Test server
-	o Correct README to mention: no 'make build'.
-	o Correct mixminiond.conf to mention that ~ must be mode 0700.
-	o Fix Makefile to work on FreeBSD.
-	o Configurable mix algorithm, defaulting to cottrell-style
-	  mixing with a medium-long interval.
-	  	o Implement
-		o Tests for configuration
-		o Tests for new validation functions.
-		o Add examples to mixminiond.conf
-	o Refactor main loop to be event based
-	o Balance =-signs on "==ANONYMOUS MESSAGE BEGINS"
-	o Acknowledgments
-	o Triage XXXX'S for 002.
-	o Fix all XXXX002's.
-	. Document everything
-	. Clean whitespace
-	o Make __version__ get set automatically, from only one place.
-	- Write a "whatsnew" as a part of the README.
+For 0.0.3:
+	- Client support for reply blocks.
+	- ????
 
 Required for "1.0":
 	 [These features must be in place before we can take the system out