Todo list for 0.46
==================

Add "if-modified-since" (especially for pubring.pgp) - but how to deal
with clock skew (probably want to save the "Last-modified:"
information in some kind of metafile).

Make sure non-executable "post" causes error message.

Figure out what to do for PathServer.

Maybe strip spaces in Newsgroups line.


Subject: perl warning in premail-0.45
Date: Thu, 19 Dec 1996 17:16:32 +0100
From: Bernd Leibing <bernd.leibing@rz.uni-ulm.de>
Organization: University of Ulm, Germany
To: raph@cs.berkeley.edu


Hi,

al least my perlversion 5.003_10 produces following warnings:

"my" variable $new_body masks earlier declaration in same scope at
./premail line 1275.
"my" variable $new_body masks earlier declaration in same scope at
./premail line 1361.
"my" variable $thataddr masks earlier declaration in same scope at
./premail line 6320.


This Patch stops this:

*** ./premail.orig      Thu Dec 19 17:00:25 1996
--- ./premail   Thu Dec 19 17:01:30 1996
***************
*** 1268,1274 ****
      my ($body, @the_recips) = @_;
      my ($key_type, $key);
      my (@keys);
!     my ($new_body, $err, $line);
      my (@mime_fields, $prefix, $boundary);
      my ($sign_type, $sign);
      my ($invoc, $errfile);
--- 1268,1274 ----
      my ($body, @the_recips) = @_;
      my ($key_type, $key);
      my (@keys);
!     my ($err, $line);
      my (@mime_fields, $prefix, $boundary);
      my ($sign_type, $sign);
      my ($invoc, $errfile);
***************
*** 1354,1360 ****
      my ($body, @the_recips) = @_;
      my ($key_type, $key);
      my (@keys);
!     my ($new_body, $err, $line);
      my (@mime_fields, $prefix);
      my ($sign_type, $sign);
      my ($invoc, $errfile);
--- 1354,1360 ----
      my ($body, @the_recips) = @_;
      my ($key_type, $key);
      my (@keys);
!     my ($err, $line);
      my (@mime_fields, $prefix);
      my ($sign_type, $sign);
      my ($invoc, $errfile);
***************
*** 6315,6321 ****
  # Open a Web connection for the file as file handle WWW.
      my ($url) = @_;
      my ($host, $port, $suf);
!     my ($fqdn, $aliases, $type, $len, $thataddr);
      my ($name, $proto);
      my ($that, $thataddr);
      my ($savesel, $gotsep);
--- 6315,6321 ----
  # Open a Web connection for the file as file handle WWW.
      my ($url) = @_;
      my ($host, $port, $suf);
!     my ($fqdn, $aliases, $type, $len);
      my ($name, $proto);
      my ($that, $thataddr);
      my ($savesel, $gotsep);

-- 
---------------------------------------------------------------------
Bernd 'Bing' Leibing                          Phone: +49 731 502-6241
UDINE-Project,           LOMI, University of Ulm, 89081 Ulm , Germany
E-mail: bernd.leibing@rz.uni-ulm.de                MIME-Mail accepted
PGP Key available                 (finger leibing@bing.rz.uni-ulm.de)
---------------------------------------------------------------------

From: Axel Boldt <boldt@cardinal.math.ucsb.edu>
thanks a lot for premail! I love it. One minor update to the docs: you
can integrate premail also for incoming mail seamlessly with the emacs
mailers vm and rmail. In order to do that, simply set the elisp variables
rmail-movemail-program or vm-movemail-program to the location of your
premail program.

=======================================================================

Premail loose ends:

Maybe change log option so that -l is not required (document in any
case).

Document sendmail options.

Include documentation in the distribution.

Ask for volunteers for mail-to-news gateway list?

Informative error message when run with perl4.

Investigate tty input when empty mailbox. Doesn't seem to be a problem
on alpha. so it might be my hoked-up movemail. However, investigate.

Traverse multipart structure (gross!).

File carbon copy handling in MH mode (?).

Investigate checking of output file existence rather than status codes
in RIPEM - shouldn't lose mail, if possible, especially with
unrecognized encryption algorithm.

Detect write errors more frequently - especially on decode.

Run ripem usage string to determine version.

=======================================================================
From matjaz@hermes.si Tue Sep 24 06:34:31 1996
Received: from hofmann.CS.Berkeley.EDU (hofmann.CS.Berkeley.EDU [128.32.35.123])
 by kiwi.cs.berkeley.edu (8.6.11/8.6.9) with ESMTP id GAA13913 for <raph@kiwi.CS
.Berkeley.EDU>; Tue, 24 Sep 1996 06:34:31 -0700
Received: from relay.hp.com (relay.hp.com [15.255.152.2]) by hofmann.CS.Berkeley
.EDU (8.6.11/8.6.6.Beta11) with ESMTP id GAA09762 for <raph@cs.berkeley.edu>; Tu
e, 24 Sep 1996 06:37:00 -0700
Received: from hpbbn.bbn.hp.com by relay.hp.com with ESMTP
        (1.37.109.16/15.5+ECS 3.3) id AA141632215; Tue, 24 Sep 1996 06:36:57 -07
00
Received: from janx.bbn.hp.com by hpbbn.bbn.hp.com with SMTP
        (1.37.109.16/15.5+ECS 3.3) id AA076632212; Tue, 24 Sep 1996 15:36:52 +02
00
Received: from localhost by janx.bbn.hp.com with SMTP
        (1.38.193.4/15.5+IOS 3.12) id AA21379; Tue, 24 Sep 1996 15:36:49 +0200
Date: Tue, 24 Sep 1996 15:36:35 +0200 (MESZ)
From: Matjaz Rihtar <matjaz@hermes.si>
X-Sender: matjaz@janx.bbn.hp.com
Reply-To: Matjaz Rihtar <matjaz@hermes.si>
To: "Raphael L. Levien" <raph@cs.berkeley.edu>
Subject: premail 0.44 enhancements
Message-Id: <Pine.HPP.3.95.960924144512.21168B-100000@janx.bbn.hp.com>
X-Premail-Auth: decrypted for beef
X-Mozilla-Status: 0001

Hi!
  When trying to automate sending of encrypted mail, I came across
your premail and I must say it's quite good and useful. However, it still
has some bugs (or features ;-), which I found a little annoying. So I took
the liberty and looked into the code. I made the following changes:

- The lifetime for rlist and type2 list was hardcoded with very small
  values, which is probably fine for Berkeley and sites on Tx links, but
  not for others on slower links. I changed this lifetime values to
  variables with (larger) values at the beginning of premail. I guess
  these two can be added to preferences, if necessary.

- The parsing of rlist was not correct - when downloaded as HTML document,
  the '<' sign is written as '&lt;' (the same goes for '>', too).

- I added some &pdv statements, which helped me clarify what's going on.
  I also added routine &phead, which prints out first <n> lines of
  specified file (useful when tracing mixmailer's chaining).

- In routine deliver_chain_mix there was a bug, when non-existing
  mixmailer was specified (non-existing in current type2 list). Now this
  is reported and premail is aborted.

- In pursuing this bug, I found that pgp (2.6.3) must be called with
  +batchmode=on in all instances, otherwise it blocks on input. Of course,
  some fiddling with mixmaster was also required. The routine which reads
  input in mixmaster, was really buggy, but that's already another story.

- Finally I added a major change to login mechanism. I didn't like the
  idea of having the secrets file lying unencrypted on disks, which are
  not under my control (not my machine, other root, etc.). So I added
  a modification to routine load_secrets, which can now load secrets
  directly into memory, without intermediate unencrypted file on disk.
  This is controlled via a variable 'memory-login' in preferences.

  Of course this means, that I must type premail password every time
  I send mail and load_secrets is necessary, but it's *much* more secure.

- I also found annoying, that for every (combination of) user not found in
  secrets file, when signing document, an error was issued. So I added
  an additional routine getpgppass, which asks for PGP signature password,
  when needed. This modification is not so important, though.

- Some other minor cosmetic changes in print statements were needed.

If you think that some of these changes can be useful to final version
of premail, I can send you the patch file for premail 0.44, which was
found on hacktic ftp server.

Bye, Matjaz Rihtar  <matjaz@hermes.si>

=======================================================================
Fixed loose ends:

Decode seems to leave tempfiles hanging around.

Unmangle (())'s inside quote marks, etc. Do research to find out what
Atlas does to them.

a ((b)), ((b)) a -> "(b)" <a>
<a> ((b)), ((b)) <a> -> "((b))" <a>
c <a> ((b)) -> "c ((b))" <a>
((b)) c <a> -> "((b)) c" <a>
Name: c / Email Address: a ((b)) -> c <"a ((b))">
Name: c ((b)) / Email Address: a -> "c ((b))" <a>
<a> (b) -> " (b)" <a>

Decode of body-only.

Need to specify micalg for MOSS signing? Yep.

Compose carets.

Error in decode needs to be more graceful - you _can't_ lose mail in a
movemail operation.

Blow away Content-Length on decode. (Content-MD5 too).

Integrate Web getting of remailer-list & pubkeys.

New file structure - &tilde_expand_mkdir

Migrate from +pgppath to +pubring argument to PGP.

If decode produces a binary MIME object, base64 encode it (need to do
recursively, for fully correct semantics).

Pass flags to sendmail and check error codes - make dead.letter
handling consistent.

More informative X-Premail-Auth messages: PGP decode, nym decode,
cert-only decode (S/MIME). Identify part when decoding individual
parts of a multipart?

Better usage string.

Fix up Web getting of Mixmaster stuff. Eliminate -getkeys altogether.

Caret processing with multi-token caret cmds.

Error message if can't get remailers - especially if no rlist &
numeric chain!

Is split_caret used in computing groups? Yes, strip_caret is called by
key_of, sign_of, etc.

Make RFC 822 parsing more flexible:

* Accept headerless messages

* Accept blank line as headersep in post mode

* Accept "From " as first line

Remove -getkeys.

Fix problem with tabs causing overeager PGP/MIME formatting.

Should error when brackets/quotes not balanced.

Use nested signed (enveloped-only) instead of encrypted (S/MIME)

Investigate lynx failure when net down (Dave Sparks, 13 Aug 1996) (yep!)

Rlist validity period is now a config option (rlist-valid).

Add pgponly option (for winsock remailer).

Detect unknown mixmasters and generate error.

Investigate mime intactness in alpha-send and newnym-send. (works!)
