mpopd -- A POP3 stand-alone forking daemon or inetd server
mpopd complies with: RFC 1939 but one or two recommendations can be overridden in the configuration file: mpopd allows rejection of bogus UIDs as a configurable option. mpopd allows a timeout of n seconds as a configuration item. mpopd supports UIDL and TOP but not APOP. The documentation is minimal at present. There are pod docs in the mpopd, mpodctl and mpopd_test scripts.
Either, a local MDA that understands <username>.lock file locking (e.g. procmail), or a local MDA that uses the Qmail-style maildir message store.
mpopd has been tested on Linux 2.0.35 with Perl 5.005_3 and on several later versions up to 2.2.18 / 5.6.0
The following module may be required for some systems when using crypt-MD5-hashed passwords:
Crypt::PasswdMD5
You will need the following module if you wish to use PAM authentication:
Authen::PAM
The PAM authentication has only been tested on Linux 2.2.18, Perl 5.6.0, Linux-PAM-0.74 and Authen-PAM-0.11
You will need the following module if you wish to use the mpopd_test script:
Time::HiRes
mpopdctl [-f] [-p port] start | stop | restart | refresh | [-e] config | -h
or
mpopd [port] &
Place a line like the following in inetd.conf:
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/bin/mpop
The /etc/services file must have an entry similar to this:
pop3 110/tcp
Either:
Use the mpopdctl script (recommended) or if the mpopd wrapper script is in your path path just type: mpopd & and mpopd should detach itself.
You can also override the config value for the port mpopd should use by giving it as a single command line argument:
mpopd 8110 &
or:
mpopdctl start
mpopdctl is a script to make starting, stopping and sending signals to mpopd a bit more convenient:
[-f] [-p port] start
Start the mpopd server daemon.
The optional -f flag removes any pid file left over after an mpopd or system crash.
The optional -p flag allows a port number to be specified, which overrides the config file setting. This allows other instances to be run in parrallel to the standard port 110 for testing.
Example:
mpopdctl -p 8110 -f start
Would remove a stale pid file and start mpopd in daemon mode on port 8110
Stop the mpopd server daemon.
Stops the mpopd server daemon and imediately restarts it.
mpopd will send a signal to all currently executing child servers to close. They will interrupt what they were doing and restore the user's mailbox, ignoring any commands to delete messages. mpopd will close its server socket, reopen it and bind to the port set in $self->{CONFIG}->{port} in the mpopd config file.
[-e] config
Call a running mpopd server and ask it to re-read the mpopd configuration file. All subsequent child servers inherit the new config values, with the exception of the port number which can only be changed using the 'refresh' flag.
The optional -e flag will open the mpopd config file in an editor of your choice first. After the editor is closed mpopd will ask you if it should re-read the modified config file.
-h
Display a help screen.
As a daemon mpopd understands three signals:
Signals mpopd to close all child servers before removing its own pid file and exiting.
Signals all child servers to close, hopefully without losing any mail. The server socket is closed and some cleanup is done. The config file is re-read and then the socket is rebuilt and the port is bound to. This also facilitates changing the port number.
Just re-read the config file. Any changes will only take effect for subsequent child server processes.
The distribution of Mail::POP3 includes a sample config, access control file samples and a couple of tool/helper scripts. You can find it on CPAN.
First read and then edit mpopd.conf to suit your system. mpopd.conf is also the best documentation there is for now. Next, edit the 'CONFIG' values near the top of the mpopd script itself to reflect the location of mpopd.conf
Requires either qmail-style 'maildir' or single-file Berkeley-style mbox mailboxes.
For mbox mail files mpopd can use an arbitrary start-of-message and end-of-message identifier for each message. These default to 'From ' and a blank line.
mpopd can be used in one of three modes:
1. Disk-based mailbox handling, the entire mailbox is parsed and each message is written to a root-owned mpopd spool 2. Fully RAM-based mailbox handling, the entire mailbox is parsed and each message is read into an array 3. Qmail-style maildir mailboxes. No parsing required.
mpopd accommodates virtual-users and hostname-based authentication.
Uses <username>.lock semaphore file checking for Berkeley mbox style mailbox locking and a lock file for the per-user dirs where the temp message files are created.
Configurable via the mpopd.conf text/perl config file.
Variable logging levels, including on/off activation of logging on a per user basis.
1. Standard /etc/passwd or shadow file and system mailboxes. 2. as 1. plus a fallback to hostname lookup. 3. as 2. plus remote access via full email address as UID. 4. hostname lookup and custom user-list authentication only. 5. as 4. plus remote access via full email address as UID. 6. Only the user-list and a cental mailspool are used. 7. A basic form of user-defined plugin. Plus: Per-user configurable authentication based on 1-7. See the 'User authentication' section in mpopd.conf if you want to set-up hostname-based mailspool dirs and/or virtual users.
Copyright (c) Mark Tiramani 1998-2001 - up to version 2.21. Copyright (c) Ed J 2001+ - version 3+. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Artistic License for more details.
To install Mail::POP3, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mail::POP3
CPAN shell
perl -MCPAN -e shell install Mail::POP3
For more information on module installation, please visit the detailed CPAN module installation guide.