# NAME
Mail::POP3 -- a module implementing a full POP3 server
# SYNOPSIS
use Mail::POP3;
my $config_text = Mail::POP3->from_file($config_file);
my $config = Mail::POP3->read_config($config_text);
Mail::POP3->make_sane($config);
while (my $sock = $server_sock->accept) {
my $server = Mail::POP3::Server->new(
$config,
);
$server->start(
$sock,
$sock,
$sock->peerhost,
);
}
# DESCRIPTION
`Mail::POP3` and its associated classes work together as follows:
- [Mail::POP3::Daemon](
https://metacpan.org/pod/Mail::POP3::Daemon) does the socket-accepting.
- [Mail::POP3::Server](
https://metacpan.org/pod/Mail::POP3::Server) does (most of) the network POP3 stuff.
- [Mail::POP3::Security::User](
https://metacpan.org/pod/Mail::POP3::Security::User) and [Mail::POP3::Security::Connection](
https://metacpan.org/pod/Mail::POP3::Security::Connection)
do the checks on users and connections.
- `Mail::POP3::Folder::*` classes handles the mail folders.
This last characteristic means that diverse sources of information
can be served up as though they are a POP3 mailbox by implementing
a `Mail::POP3::Folder` subclass. An example is provided in
[Mail::POP3::Folder::webscrape](
https://metacpan.org/pod/Mail::POP3::Folder::webscrape), and included is a working configuration
file that makes the server connect to Jobserve (as of Jan 2014) and
provide a view of jobs as email messages in accordance with the username
which provides a colon-separated set of terms: keywords (encoding spaces
as `+`), location radius in miles, location (e.g. Berlin). E.g. the
username `perl:5:Berlin` would search for jobs relating to Perl within
5 miles of Berlin.
# OVERVIEW
[Mail::POP3](
https://metacpan.org/pod/Mail::POP3) is a working POP3 server module, with a working `mpopd`
that can either work as a standalone, be called from `inetd`, or be
used in non-forking mode for use on Windows platforms that do not do
forking correctly.
# SCRIPTS
- mpopd
The core. Read this to see how to use modules.
- mpopdctl
Gives command-line control of a running mpopd.
- mpopdstats
Gives command-line statistics from mpopd.
- installscript
Helps install mpopd and create configuration.
- update-conf
Helps you upgrade an older config (the file format changed).
# DESIGN
- Mail::POP3::Daemon does the socket-accepting.
- Mail::POP3::Server does (most of) the network POP3 stuff.
- Mail::POP3::Security::{User,Connection} do the checks on users and connections.
- Mail::POP3::Folder::\* classes handles the mail folders.
This last characteristic means that diverse sources of information can
be served up as though they are a POP3 mailbox by implementing a M::P::F
subclass. An example is provided in M::P::F::webscrape.
# FUTURE
This module will become a [Net::Server](
https://metacpan.org/pod/Net::Server) subclass, such that the Folder
functionality will be folded back into the server, in a class called
(probably) `Net::Server::POP3::webscrape` (etc).
# METHODS
All class methods.
## from\_file
Given a file, returns contentx.
## make\_sane
Mutates given config hashref to have good, default values.
## read\_config
Given config text, evals it then version-checks.
# COPYRIGHT
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.
# DISCLAIMER
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.