qpopper(8)qpopper(8)NAME
qpopper -- pop 3 server (v3.0)
SYNOPSIS
/usr/local/lib/popper [ -b buildir ] [ -c ] [ -d ] [ -e
login_delay=nn,expire=nn ] [ -k ] [ -K service ] [ -R ] [
-s ] [ -S ] [ -t trace-file ] [ -T timeout ]
DESCRIPTION
Qpopper is a POP3 server to enable POP3 clients to read
and download mail. This server implements the POP protocol
defined in RFC 1939 and the RFC 2449 extensions. This
implementation runs on a variety of Unix platforms.
The server also enables clients to send mail using XTND
XMIT, which is handed over to sendmail(8).
OPTIONS-b bulldir
Turns on the bulletin feature and specifies the
bulletin directory path. The command line over-
rides the compiled value if it is defined. To
enable bulletins by default and specify a default
bulletin directory during compilation, include the
--enable-bulletins=bull-directory flag when running
./configure. The usual bulletin directory is
/var/spool/bulls.
A bulletin database can be used to track the bul-
letins instead of the users' home directory. This
feature is enabled by including the --enable-
bulldb=bull-directory flag when running ./config-
ure. This also requires creating two blank files in
the bulletin directory, called bulldb.pag and
bulldb.dir.
-c Downcases user names. This permits users to con-
figure their clients with user names in UPPER or
MiXeD case, and still login, assuming their actual
user name is all lower case.
-d Turns on debug logging if compiled (pass --enable-
debugging to ./configure). All debugging informa-
tion is saved using syslog(8).
-e x=value,...
Sets POP3 extensions. Sets x to the specified
value. Used to announces a Login Delay and/or
Expire response tags to the CAPA command.
Remember neither Expire nor Login Delay is enforced
by qpopper; Sysadmins have to implement them by
some other means. However, you can enforce EXPIRE
Local April 2000 1
qpopper(8)qpopper(8)
0 (no retention at all) by using the --enable-auto-
delete flag with ./configure. This causes messages
to be automatically deleted after they are down-
loaded.
-R Disables reverse lookups on client IP addresses.
-t trace-file
Turns on debug logging if compiled (pass --enable-
debugging to ./configure) and writes the trace
information in trace-file using fprintf(3V).
-k Enables kerberos authentication when qpopper has
been compiled with the KERBEROS define. You must
already have libraries that support Kerberos.
-K service
The specified Kerberos service will be used instead
of the compiled in default of "rcmd", "pop" is com-
mon.
-s Turns on statistics logging using syslog(8)or
trace-file. At the end of each popper session, the
following information is logged: username, number
of messages deleted, number of bytes deleted, num-
ber of message left on server, number of bytes left
on server.
-S Enables server mode. This mode reduces disk I/O
and disk space usage when popper is used on a sys-
tem that serves POP only users exclusively.
-T timeout
option changes the default compiled value POP_TIME-
OUT 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 termi-
nated abnormally or are hung.
A small value is ok for small to medium networks
where the network delay is within a few seconds.
In this case 15-30 seconds is not unreasonable.
Networks with large delays in sending packets
(e.g., SLIP links) may require a larger value. In
this case 300 seconds (5 minutes) is not unreason-
able.
Processing Options are described below.
Local April 2000 2
qpopper(8)qpopper(8)
Processing Options
Here are some options the values of which are announced
to clients. Syntax of the options is:
opt=value,...
This sets option opt to be value. Multiple options can be
specified at one instance and are comma separated.
The following are the options supported:
login_delay
expire
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 a header and
body in normal mailbox format. The first line of each such
bulletin must be a "From " line. The easiest way for
sysadmins 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 charac-
ters. 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.
Bulletins can be enabled by default, and the bulletin
directory specified, by including the --enable-bul-
letins=bull-directory flag when running ./configure.
Local April 2000 3
qpopper(8)qpopper(8)
To use a database instead of .popbull files in users' home
directories for tracking the highest bulletin seen by a
user, include the --enable-bulldb=bull-directory flag when
running ./configure. You must also create two empty files
in the bulletin directory, called bulldb.pag and
bulldb.dir. When a bulletin database is used, qpopper
checks for and uses any .popbull files in the user's home
directory, to provide continuity.
To specify the maximum number of bulletins sent to new
users, include the --with-new-bulls flag when running
./configure. For example, --with-new-bulls=10 says that
new users get at most ten bulletins.
THE POP TRANSACTION CYCLE
The Qpopper server is a single program (called popper)
that is launched by inetd when it gets a service request
on the POP TCP port. (The official port number specified
in RFC 1939 for POP version 3 is port 110. However, 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 qpopper program initializes and verifies that the peer
IP address is registered in the local domain (unless the
-R command-line option is used), logging a warning message
when a connection is made with 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 server enters the authorization state, during which
the client must correctly identify itself by providing a
valid Unix userid and password on the server's host
machine (or successfully authenticate using APOP or AUTH).
No other exchanges are allowed during this state (other
than a request to quit.) If authentication fails, a warn-
ing message is logged and the session ends.
Once the user is identified, qpopper changes its user and
group ids to match that of the user and enters the trans-
action state. The server makes a temporary copy of the
user's maildrop which is used for all subsequent transac-
tions (unless running in server mode ). 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 network connection is terminated
and the user's maildrop is updated with the (possibly)
modified temporary maildrop.
Local April 2000 4
qpopper(8)qpopper(8)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
Qpopper logs 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 syslog file. Alter-
natively, the "-t <file-name>" option places 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 pop.qualcomm.com 110
Trying...
Connected to pop.qualcomm.com.
Escape character is '^]'.
+OK QPOP (version 3.0) at pop.qualcomm.com starting.
quit
+OK Pop server at pop.qualcomm.com signing off.
Connection closed by foreign host.
EXTENSIONS
The server implements several 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.
XMANGLE: Can be used as a modifier to the TOP, RETR, LIST
commands. The result is to condense MIME messages into a
single part. For example:
Local April 2000 5
qpopper(8)qpopper(8)
RETR 10 XMANGLE(text=html;headers=to:,cc:,from:,date:)
results in transforming message 10 into a single part of
content-type text/html with only those headers which were
requested.
Qpopper also supports the "-no-mime" user name hack. As a
way to enable MIME-mangling with clients that do not sup-
port XMANGLE, add "-no-mime" to the user name. For exam-
ple, if the userid is "mary", enter it in the client as
"mary-no-mime".
FILES
/var/mail mail files
/etc/inetd.conf pop program invocation
/etc/syslog.conf logging specifications
/var/spool/bulls bulletins
~/.popbull largest bulletin number seen by user
SEE ALSOinetd(8), inetd.conf(4), sendmail(8)AUTHORS
Praveen Yaramada, Laurence Lundblade, Randall Gelles, Mark
Erickson, Bob Campbell, Edward Moy, Austin Shelton, Mar-
shall T Rose, and cast of thousands at Rand, UDel, UCI,
QUALCOMM Incorporated and the Internet user community.
Local April 2000 6