------------
Contents
------------
Copyright
Authors
History
Synopsis
Files
Notes
Extensions
Making IUPOP3
Configuring IUPOP3
Comments


------------
Copyright
------------

  (C) Copyright 1991 The Trustees of Indiana University

   Permission to use, copy, modify, and distribute this program for
   non-commercial use and without fee is hereby granted, provided that
   this copyright and permission notice appear on all copies and
   supporting documentation, the name of Indiana University not be used
   in advertising or publicity pertaining to distribution of the program
   without specific prior permission, and notice be given in supporting
   documentation that copying and distribution is by permission of
   Indiana University.

   Indiana University makes no representations about the suitability of
   this software for any purpose. It is provided "as is" without express
   or implied warranty.


------------
Authors
------------

Indiana University
University Computing Services
Network Applications Group

Jacob Levanon - Manager, Network Applications
Larry Hughes  - Lead Software Engineer

------------
History
------------

Version         : 1.5
Release Date    : April 2, 1991
Comments        : Initial release to public

Current Version : 1.6
Release Date    : May 16, 1991
Comments        : Support for UCX and Multinet, in addition to WIN/TCP.

Current Version : 1.6a
Release Date    : June 6, 1991
Comments        : Fix client_read_ast() so any IOSB error assumes a
                  client disconnect, especially for UCX.  Added support
                  for an "XTND SHUTDOWN" command.


------------
Synopsis
------------

The IUPOP3 server is a VMS implementation of the Post Office Protocol
Version 3, based on RFC 1081 and somewhat on Berkeley's popper.

There are many differences between IUPOP3 and the popper, partly due to
the differences between VMS and UNIX as operating systems.  Probably the
most notable difference is that IUPOP3 is a static multithreaded server.
The server always listens on the network port for new connections, and
can handle up to 31 simultaneous POP3 client connections.  In this way,
expensive VMS process creation overhead can be avoided.  Note that this
does not mean that IUPOP3 can serve only 31 clients; indeed, at IU
it serves dozens.  The limitation is 31 concurrent connections from
POP3 clients at any given moment in time.

IUPOP3 was developed and tested on VMS 5.3 and 5.4 systems, using the 
VMS callable mail (MAIL$) interface.  The current release is compatible 
with the following TCP/IP network implementations: Wollongong WIN/TCP 
for VMS, DEC's UCX, and TGV's Multinet.


------------
Files
------------

README.TXT        - This file
COPYRIGHT.TXT     - IUPOP3 copyright
RFC1081.TXT       - RFC 1081 describing POP3 protocol
RFC1082.TXT       - RFC 1082 describing POP3 extentions

IUPOP3.COM        - Runs the IUPOP3 server (must be configured!)
START_IUPOP3.COM  - Starts IUPOP3.COM as a detached job (must be configured!)

MAKE.COM          - The required mechanism for building IUPOP3
IUPOP3.MMS        - The MMS makefile invoked by MAKE.COM, if MMS is installed
UCX.MACRO         - An MMS macro for UCX
WINS.MACRO        - An MMS macro for WIN/TCP
MULTINET.MACRO    - An MMS macro for Multinet
SHARE.OPT         - Linker options file

IUPOP3.C          - Main source file
IUPOP3_COMMANDS.C - Routines which process the POP3 server commands
IUPOP3_VMS.C      - MAIL$ and SYS$ routines
IUPOP3_UTILITY.C  - Various utility and support routines
PASSWD_V54.C      - VMS 5.4 password hashing and validation
PASSWD_V53.C      - Pre VMS 5.4 password hashing and validation
CHANGE_CASE.MAR   - A few very fast string routines

IUPOP3_GENERAL.H  - Includes files...
IUPOP3_GLOBAL.H
IUPOP3_VMS.H
DESCR.H
INETIODEF.H
ITMLST.H
VERSION.H
MAILMISCDEF.H
MAILMSGDEF.H

POP_XTND.DAT      - An example authorization file for XTND commands


------------
Notes
------------

IUPOP3 has been tested with two POP3 clients:  Eudora for the
Macintosh, and FTP Software's POP3 for DOS.  It seems to work
well with both.  If you test it with other clients, we would
appreciate knowing the results.

True to the POP3 protocol, IUPOP3 does not perform any mail delivery
functions.  At IU, we rely on UNIX hosts to act as SMTP mail relays
for POP3 clients.

As many VMS sites will appreciate, at IU we have several foreign
mailers that interface with VMS Mail.  These mailers provide mail
transport to (and from) BITNET and the Internet.  Mail arriving into
the VMS system from these networks has "From:" lines of the form
TRANSPORT%"user@node".  This can obviously create problems for POP3
clients that wish to reply to mail delivered by IUPOP3, since most
POP3 clients will attempt to establish a direct SMTP connection to
a relay or the originating host.  To avoid this problem, IUPOP3 has
an IU-specific routine that reformats "From:" lines.  If you wish
to adopt this mechanism for your site, make the necessary changes
to the function "patch_from_line()" in IUPOP3_UTILITY.C, then
define PATCH_FROM_LINE in the IUPOP3.MMS makefile.

Due to a change in the password hashing algorithm in VMS 5.4 (and
the introduction of SYS$HASH_PASSWORD), IUPOP3 includes both VMS 5.4
and pre VMS 5.4 algorithms and password verification routines.  The
MAKE.COM procedure should automatically sense your VMS version and
use the right algorithms when building IUPOP3.

Finally, the current version of IUPOP3 logs just about everything
that it does, with date and time stamps, to SYS$OUTPUT.  We are
careful to avoid logging paswords of course, but most other
activites are logged profusely.  This is partly because we have
a very heterogeneous and complicated electronic mail environment
at IU, and we sometimes need to verify the path of messages that
have been "lost."  Also, this profuse logging has simply helped us
to debug IUPOP3 on several occasions.  For security purposes,
however, you should be as paranoid as we are, and jealously protect
the IUPOP3 log!


------------
Extensions
------------

IUPOP3 implements none of the XTND extensions recommended in
RFC 1082.  However, it does implements two custom extensions for 
our own purposes.  

If a specially validated user issues an "XTND STATS" command to the 
server, a statistical report like this will be returned to the client:

+OK Statistics follow
  Current Time         : 1991-03-29 17:44:11
  Start Time           : 1991-03-28 07:32:53
  CPU Seconds          : 113.80   (1 mins, 53 secs)
  Current Threads      : 2
  Total Threads        : 218
  Max Threads          : 8
  Too Many Threads     : 0
  Retrieved Messages   : 127
  'From' Parse Errors  : 0
  Normal Disconnects   : 215
  Abnormal Disconnects : 2
  Client Timeouts      : 1
  Current Users        :
     0. hughes
     1. levanon
.

If a specially validated user issues an "XTND SHUTDOWN" command
to the server, the server will perform a clean shutdown after all
clients have disconnected.

Administrators of the IUPOP3 server can validate users for this
report by creating a file that looks like this:

      #
      # lines beginning with '#' are comments
      #
      stats    system levanon hughes
      shtudown system levanon hughes

Then, define the logical name "POP_XTND_LIST" for the server,
equivalenced to the file's full file specification.  Note that
this is a generic mechanism for validating other XTND commands
we (or you) might wish to implement.

-------------
Making IUPOP3
-------------

To build IUPOP3, simply type this command in the IUPOP3 distribution
directory:

   $ @MAKE

The MAKE.COM takes two optional paramters:

   $ @MAKE    [UCX | MULTINET | WINS]    [MMS | NOMMS]

Although MAKE.COM should be able to automatically detect your TCP/IP 
implementation and whether or not you have MMS installed, you may 
override the automatic detection by supplying either or both parameters.


------------------
Configuring IUPOP3
------------------

After you execute the MAKE.COM procedure, you'll have to edit
the IUPOP3.COM (which actually runs IUPOP3), and START_IUPOP3.COM
(which runs IUPOP3.COM as a detached process).  

The only changes you'll need to make to these procedures are to 
correct the directory specifications like "SYS$NOWHERE:[NOBODY]".  
These unusual and probably invalid directory references are used 
to encourage you to correctly configure IUPOP3 for your individual site.

You might also wish to change START_IUPOP3.COM to submit IUPOP3.COM
to a batch queue, instead of running it as a detached process.  We
prefer the latter approach.


------------
Comments
------------

IUPOP3 is an unsupported program.  If you decide to use it, do so
only in strict adherence to the copyright/disclaimer shown at the
top of this file, in COPYRIGHT.TXT, and throughout the source code.

You may send comments and bug reports via internet mail to
iupop3@indiana.edu, or bitnet mail to IUPOP3@IUGATE.  We will
respond on a time-available basis.  We do appreciate hearing
from you.