popper(8) MachTen Programmer’s Manual popper(8)

NAME
popper - pop 3 server

SYNOPSIS
/usr/libexec/popper [ -d ] [ -s ] [ -t trace-file] [ -T
timeout] [ -b bulldir]

DESCRIPTION
Popper is an implementation of the Post Office Protocol
server that runs on a variety of Unix computers to manage
electronic mail for Macintosh and MS-DOS computers. The
server was developed at the University of California at
Berkeley and conforms fully to the specifications in RFC
1081 and RFC 1082.

The -d flag sets the socket to debugging and turns on
debugging. All debugging information is saved using sys-
log(8). The -t trace-file flag turns on debugging and
saves the trace information in trace-file using
fprintf(3V).

The -s flag turns on statistics logging using syslog(8).
At the end of each popper session, the following informa-
tion is logged: username, number of messages deleted, num-
ber of bytes deleted, number of message left on server,
number of bytes left on server.

The -T timeout option changes the default compiled value
POP_TIMEOUT for terminating a session with a pop client.
When the server is waiting for a command to arrive from
the client, it times out after the specified number of
seconds and terminates the session. This avoids having
popper processes hang forever waiting for command input
from clients which have terminated abnormally. A small
value is ok for small to medium nets where the network
delay is within a few seconds. In this case 15-30 seconds
is not unreasonable. Networks with large delays in send-
ing packets (e.g., SLIP links) may require a larger value.
In this case 300 seconds (5 minutes) is not unreasonable.

The -b bulldir option turns on the bulletin feature and
specifies the bulletin directory path.

BULLETINS
The bulletin feature gives system administrators a way to
send important announcements to all POP users without hav-
ing to do mass mailings.

The bulletin directory contains one file per bulletin.
Each file contains a single mail message with header and
body in mailbox format. The first line of each such bul-
letin must be a "From " line. The easiest way for sysad-
mins to create such bulletins is to mail themselves a copy
of the bulletin using the account to which they want
replies to be sent, then use their mail program to save
the message to a file in the bulletin directory in mailbox
format. The bulletin directory must be world readable.

The name of each bulletin file begins with the bulletin
number, and may optionally continue with any other
characters. E.g., the file name of bulletin number 23
might be "23.pophost_down_sunday".

Popper creates a file named .popbull in the home directory
of each user. This file contains a single line recording
the highest numbered bulletin received by the user.

Each time a POP client connects to the server, any new
bulletins which the user has not received previously are
automatically appended to the user’s mail.

When a bulletin is copied, the "To" header line is
replaced by "To: username@thishost", and any "Status:"
header lines are deleted. Otherwise, the bulletin is
copied as is.

When a new user checks for mail the first time, popper
creates the .popbull file in the user’s home directory and
seeds it with the current maximum bulletin number. Thus
new users do not get old bulletins.

THE POP TRANSACTION CYCLE
The Berkeley POP server is a single program (called pop-
per) that is launched by inetd when it gets a service
request on the POP TCP port. (The official port number
specified in RFC 1081 for POP version 3 is port 110. How-
ever, some POP3 clients attempt to contact the server at
port 109, the POP version 2 port. Unless you are running
both POP2 and POP3 servers, you can simply define both
ports for use by the POP3 server. This is explained in
the installation instructions later on.) The popper pro-
gram initializes and verifies that the peer IP address is
registered in the local domain, logging a warning message
when a connection is made to a client whose IP address
does not have a canonical name. For systems using BSD 4.3
bind, it also checks to see if a cannonical name lookup
for the client returns the same peer IP address, logging a
warning message if it does not. The the server enters the
authorization state, during which the client must cor-
rectly identify itself by providing a valid Unix userid
and password on the server’s host machine. No other
exchanges are allowed during this state (other than a
request to quit.) If authentication fails, a warning mes-
sage is logged and the session ends. Once the user is
identified, popper changes its user and group ids to match
that of the user and enters the transaction state. The
server makes a temporary copy of the user’s maildrop which
is used for all subsequent transactions. These include
the bulk of POP commands to retrieve mail, delete mail,
undelete mail, and so forth. When the client quits, the
server enters the final update state during which the net-
work connection is terminated and the user’s maildrop is
updated with the (possibly) modified temporary maildrop.

LOGGING
The POP server uses syslog to keep a record of its activi-
ties. On systems with BSD 4.3 syslogging, the server logs
(by default) to the "local0" facility at priority "notice"
for all messages except debugging which is logged at pri-
ority "debug". The default log file is
/usr/spool/mqueue/POPlog. These can be changed, if
desired. On systems with 4.2 syslogging all messages are
logged to the local log file, usually
/usr/spool/mqueue/syslog.

DEBUGGING
The popper program will log debugging information when the
-d parameter is specified after its invocation in the
inetd.conf file. Care should be exercised in using this
option since it generates considerable output in the sys-
log file. Alternatively, the "-t <file-name>" option will
place debugging information into file "<file-name>" using
fprintf instead of syslog.

For SunOS version 3.5, the popper program is launched by
inetd from /etc/servers. This file does not allow you to
specify command line arguments. Therefore, if you want to
enable debugging, you can specify a shell script in
/etc/servers to be launched instead of popper and in this
script call popper with the desired arguments.

You can confirm that the POP server is running on Unix by
telneting to port 110 (or 109 if you set it up that way).
For example:

%telnet myhost 110
Trying...
Connected to myhost.berkeley.edu.
Escape character is ’^]’.
+OK UCB Pop server (version 1.6) at myhost starting.
quit
Connection closed by foreign host.

EXTENSIONS
The server implements two extended commands.

XTND XMIT: Sends a mail message using /usr/lib/sendmail.

XTND XLIST header [num]: Extracts and returns the speci-
fied header line for the specified message number. If the
"num" parameter is missing, returns the header line for
all the messages which are not currently marked for dele-
tion.

FILES
/usr/spool/mail mail files
/etc/inetd.conf pop program invocation
/etc/syslog.conf logging specifications
~/.popbull largest bulletin number seen by user

SEE ALSO
inetd(8), RFC1081, RFC1082

AUTHORS
Bob Campbell, Edward Moy, Austin Shelton, Marshall T Rose,
and cast of thousands at Rand, UDel, UCI, and elsewhere

MachTen August 1990 3