
        S R I A L P O P -- POP over serial lines
        (sccs info README 2.4 96/10/09)

        Author: Rudi van Houten <R.vanHouten@cc.ruu.nl>
                Ac.Comp.Centr.Utrecht (Netherlands)
        With thanks to:
                Steve Dorner <sdorner@qualcomm.com>
                Scott Hannahs <sth@slipknot.mit.edu>
                Mogen Trab Damsgaard <trab@kubism.ku.dk>

========================== COPYRIGHT NOTICE =============================
This package srialpop is written by and copyright Rudi van Houten
<R.vanHouten@cc.ruu.nl>, it is tested and used now at ACCU (Ac.Comp.
Centr.Utrecht, the Netherlands) for several years.

The package consists of four files:
    srialpop.c  the C source of the program
    Makefile    to build and eventually install the package
    README      an old documentation describing the package
    INSTALL     a newer document with concise installation instructions

I grant everybody the right to use the package and eventually
adapt it to local requirements. Please document your changes in the
program source with comments explicitely stating that a modification
to the original package has been made. I don't want to be blamed for
your errors nor get the praise for your inventions.

Also everybody has the right to bundle this package with other software
(e.g. a POP client) on distribution media, but THEN THE UNCHANGED VERSION
MUST BE DISTRIBUTED, and no extra fee may be charged for the presence
of srialpop in the bundle. If there is a need to modify srialpop for
special purposes these modification should be made available as a separate
file (e.g. a diff file to be applied with Larry Wall's patch program).

I present this package as is, feeling it can be of use. But no
guarantees are given about its proper working or behaviour. It has
been used at ACCU for some years now without troubles, so I think it may
be bug free. But I cannot be held responsible for any damage or other
misery resulting from using srialpop.
===========================================================================

    The Macintosh POPmail client Eudora offers a possibility
    to perform the POP and SMTP conversations over a serial
    (dialup) connection. Therefore is needed a 'psuedo-account'
    on a machine where Eudora can login. That account must have
    permission to execute senndmail and popper, not only local
    but also remote (via rsh) on all machines where a popserver
    or smtpserver must be contacted. Eudora is secretive with
    the password while showing its progress (if properly
    configured), but nobody can prevent a curious Macontosh
    owner from looking with ResEdit (or alike's). It can be a
    security leak.
    The same considerations apply to the IBM-PC client NUPop
    that also can use serial tty-lines to acquire mail.
    
    This program srialpop is written to take care of these
    trade off's. It must be used as the pseudo-account's
    loginshell. The commands which are recognized by the
    program are 'logout' and 'exit' (to finish the session
    of course) and 'telnet <host> <port> ...' which performs
    a TCP/IP connection with the indicated host/port. The
    supplied portnumber is checked against a list of valid
    portnumbers (now only POP, SMTP, PH and PASSWD).
    All other commands cause an exit with errormessage.
    
    So the pseudo-account doesn't need permissions to run
    popper and sendmail, neither needed are permissions to
    run rsh to another machine or let another machine rsh
    in. And a diligent POPmail user who tries to login on
    the psuedo-account will discover that there is no fun.
    Since nobody can be prevented to learn srialpop's
    password it is mandatory that the home directory for
    pseudo-user srialpop is unwritable for srialpop.
    
    The program is straightforward and rather simple, and
    it is free. Yet I claim a copyright, with which I mean
    that anybody who feels a need to change (parts of) this
    program is under the obligation to document the changes
    and the need thereof in the program distribution files.
    Neither may this program be selled (as if anybody would
    buy this gadget), or distributed for a fee that extends
    a reasonable retribution for the 8k it occupies on disk
    or other media (I don't ask money, why should you).
    I have tested the program for some time now and found no
    bugs/problems. That doeesn't mean of course there are not.
    I offer this program free for everyone to use because I
    think it can be useful and is less dangerous then the
    shellscript originally suggested by Steve Dorner. But if
    you stumble over an error I am in no way responsible for
    the damage that can cause, however I don't expect disasters.
    I should welcome (by email) any notification of changes,
    corrections and enhancements in the form of the new program
    source or a diff.

    At A.C.C.U. we rent POP mailboxes to users as a special cheap
    service. The users who obtain that service can only use email
    via the POP/SMTP mechanism. The owner of a POPmail account
    can not do any work on the UNIX machine, only change his/her
    password (their login shell is a script that consists of a
    call to /bin/passwd), and they don't need a home directory.
    Hence the service can be cheap.

    The passwd entry for pseudo-user srialpop is:
    (splitted for layout reasons)
    srialpop:passwd:uid:gid:POP dialup dummy account:\
                        /home/srialpop:/home/srialpop/srialpop

    The passwd entry for a POPmail account:
    popuser:passwd:uid:gid:POPmailuser:/home/srialpop:/usr/local/etc/chpw

    And the script /usr/local/etc/chpw used as their loginshell:
    #!/bin/sh
    exec /bin/passwd

    (Or place /bin/passwd as "loginshell" in /etc/passwd)
    
    Rudi van Houten  <rudi@cc.ruu.nl>
    Ac.Comp.Centr.Utrecht
    Budapestlaan 6
    3584 CD Utrecht Netherlands

    ********************
    Known bugs:

    **NOTE for NUPop users **
    If srialpop is used the end-of-line indicator must be set
    to "^M^J" in the "Options -> Serial" menu of NUPop.
    ****

    There are some quirks with end-of-line definitions.
    TCP/IP requires CR-LF (according to the RFC's), but I
    never encountered a TCP/IP connection that was not satisfied
    with only LF.
    Someone reported that his system produced and accepted an
    end-of-line consisting of LF-CR, I didn't save the mails and
    forgot the details.
    When using public datanet systems (as X.25 in Europe) there
    can be a problem that X.25 considers CR as end-of-packet and
    the LF that is sent thereafter by the UNIX-system or POP-client
    is then considered as the start of a new packet, that never is
    closed. When I will have some time to spare I will look at that,
    but perhaps someone else will find a solution earlier (I expect
    it can be solved by setting appropriate LF-CR translations in
    srialpop and defining a single CR as end-of-line in Eudora/NUPop).


    Program history:
    9 dec 91   original version, only installed at ACCU
               The distribution contains one file 'srialpop.c'
    11 dec 91  some changes in IO-handling after Steve Dorner
               viewed the program and made some sugeestions
    - V1.0-
    18 aug 92  added port 105 for PH service
    20 Oct 92  changes for conditional compilation on Silicon
               Graphics sent in by Scott Hannahs
               <sth@slipknot.mit.edu>
    - V1.1-
    22 Nov 92  added a wait time before exit to satisfy the
               Macintosh CTB Hayes Modem Tool.
               added port 106 for password service
               Introduce the use of a make to enable simple
               definitions of symbols.
    14 dec 92  added exclusion of tab expansion
               (Mogen Trab Damsgaard <trab@kubism.ku.dk>)
    - V1.2-
    8 June 93  now change the terminal settings for the whole
               life of the program. Read the commands in blocks
               of one character and do the echo from the program.
    - V1.3-
    15 June 93 V1.2 did send the second character of CR-LF (or 
               LF-CR) line-end from the telnet command to the
               connected server via the socket. This character
               is now catched and thrown away. Some popservers
               couldn't handle this, but I didn't see this
               since popper did not have troubles.
    - V1.4-
    12 July 93 Add logging capabilities.
               If the logging on file is used be sure to create
               a file srialpop.log in srialpop's home directory
               that is writable by srialpop since srialpop is
               unable to create a file there.
    - V1.5-
    sep 93     Add some remarks concerning ULTRIX in the README

This version of srialpop has been successfully tested on:
Convex OS 10.1
DEC (Philips) P9070 ATT SYS V/68 R3V6

Continue the story:
    - V2.0
    aug 95      In the Makefile the values for logging and
                flow control can be defined. Also code is
                added to detect which include files (strings.h,
                unistd.h, sgtty.h, termio.h, termios.h) must
                be used.

    - V2.1      interim release
    - V-2.2 
    apr '96		add NO_SMTP and file INSTALL (never released).
    			If NO_SMTP is defined in the Makefile srialpop
    			will not allow connection the the SMTP port (25).
    			The POP clients must use the POP server to send mail.
    - V2.3
    oct '96		documentation changes, copyright notice.

I have tried to install srialpop on the systems in the list below.
The systems marked with an asterisk (*) it is only compiled and tried
out via a telnet login but NOT actually tested on a tty port.

Convex OS 9
Motorola SYSTEM V/68 Release R3V6
ULTRIX 4.3 (*)
SGI IRIX 5.4 (*)
SunOS 4.1.3
Solaris 2.4 (Sun Sparc only) (*)
IBM AIX 3.21 and 4.1
DEC Alpha OSF/1 3.0 (*)

Some friends of mine have tried the Makefile and compilation on Linux.
Without problems, but they didn't test the results.
