1e82ae1bc7
1. the known users of async don't upgrade 2. async becomes a win when concurrent connections exceed a few hundred simultaneous 3. anyone that needs async should be looking at Haraka instead 4. the perl async dependencies aren't maintained
200 lines
5.7 KiB
Plaintext
200 lines
5.7 KiB
Plaintext
#
|
|
# this file is best read with `perldoc README`
|
|
#
|
|
|
|
=head1 NAME
|
|
|
|
Qpsmtpd - qmail perl simple mail transfer protocol daemon
|
|
|
|
web:
|
|
http://smtpd.github.io/qpsmtpd/
|
|
|
|
mailinglist:
|
|
qpsmtpd-subscribe@perl.org
|
|
|
|
FAQ:
|
|
https://github.com/smtpd/qpsmtpd/wiki/faq
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
What is Qpsmtpd?
|
|
|
|
Qpsmtpd is an extensible SMTP engine written in Perl. No, make that
|
|
easily extensible! See plugins/quit_fortune for a very useful, er,
|
|
cute example.
|
|
|
|
=head2 License
|
|
|
|
Qpsmtpd is licensed under the MIT License; see the LICENSE file for
|
|
more information.
|
|
|
|
=head2 What's new in this release?
|
|
|
|
See the Changes file! :-)
|
|
|
|
|
|
=head1 Installation
|
|
|
|
=head2 Required Perl Modules
|
|
|
|
The following Perl modules are required:
|
|
Net::DNS
|
|
MIME::Base64
|
|
Mail::Header (part of the MailTools distribution)
|
|
|
|
If you use a version of Perl older than 5.8.0 you will also need
|
|
Data::Dumper
|
|
File::Temp
|
|
Time::HiRes
|
|
|
|
The easiest way to install modules from CPAN is with the CPAN shell.
|
|
Run it with
|
|
|
|
perl -MCPAN -e shell
|
|
|
|
=head2 qpsmtpd installation
|
|
|
|
Make a new user and a directory where you'll install qpsmtpd. I
|
|
usually use "smtpd" for the user and /home/smtpd/qpsmtpd/ for the
|
|
directory.
|
|
|
|
Put the files there. If you install from git you can just do
|
|
run the following command in the /home/smtpd/ directory.
|
|
|
|
git clone git://github.com/smtpd/qpsmtpd.git
|
|
|
|
Beware that the master branch might be unstable and unsuitable for anything
|
|
but development, so you might want to get a specific release, for
|
|
example (after running git clone):
|
|
|
|
git checkout -b local_branch v0.93
|
|
|
|
chmod o+t ~smtpd/qpsmtpd/ (or whatever directory you installed qpsmtpd
|
|
in) to make supervise start the log process.
|
|
|
|
Edit the file config/IP and put the ip address you want to use for
|
|
qpsmtpd on the first line (or use 0 to bind to all interfaces).
|
|
|
|
If you use the supervise tools, then you are practically done!
|
|
Just symlink /home/smtpd/qpsmtpd into your /services (or /var/services
|
|
or /var/svscan or whatever) directory. Remember to shutdown
|
|
qmail-smtpd if you are replacing it with qpsmtpd.
|
|
|
|
If you don't use supervise, then you need to run the ./run script in
|
|
some other way.
|
|
|
|
The smtpd user needs write access to ~smtpd/qpsmtpd/tmp/ but should
|
|
not need to write anywhere else. This directory can be configured
|
|
with the "spool_dir" configuration and permissions can be set with
|
|
"spool_perms".
|
|
|
|
As per version 0.25 the distributed ./run script runs tcpserver with
|
|
the -R flag to disable identd lookups. Remove the -R flag if that's
|
|
not what you want.
|
|
|
|
|
|
=head2 Configuration
|
|
|
|
Configuration files can go into either /var/qmail/control or into the
|
|
config subdirectory of the qpsmtpd installation. Configuration should
|
|
be compatible with qmail-smtpd making qpsmtpd a drop-in replacement.
|
|
|
|
If qmail is installed in a nonstandard location you should set the
|
|
$QMAIL environment variable to that location in your "./run" file.
|
|
|
|
If there is anything missing, then please send a patch (or just
|
|
information about what's missing) to the mailinglist or a PR to github.
|
|
|
|
|
|
=head1 Better Performance
|
|
|
|
For better performance we recommend using "qpsmtpd-forkserver" or
|
|
running qpsmtpd under Apache 2.x. If you need extremely high
|
|
concurrency use http://haraka.github.io/
|
|
|
|
=head1 Plugins
|
|
|
|
The qpsmtpd core only implements the SMTP protocol. No useful
|
|
function can be done by qpsmtpd without loading plugins.
|
|
|
|
Plugins are loaded on startup where each of them register their
|
|
interest in various "hooks" provided by the qpsmtpd core engine.
|
|
|
|
At least one plugin MUST allow or deny the RCPT command to enable
|
|
receiving mail. The "rcpt_ok" is one basic plugin that does
|
|
this. Other plugins provide extra functionality related to this; for
|
|
example the resolvable_fromhost plugin described above.
|
|
|
|
|
|
=head1 Configuration files
|
|
|
|
All the files used by qmail-smtpd should be supported; so see the man
|
|
page for qmail-smtpd. Extra files used by qpsmtpd include:
|
|
|
|
=over 4
|
|
|
|
=item plugins
|
|
|
|
List of plugins, one per line, to be loaded in the order they
|
|
appear in the file. Plugins are in the plugins directory (or in
|
|
a subdirectory of there).
|
|
|
|
|
|
=item rhsbl_zones
|
|
|
|
Right hand side blocking lists, one per line. For example:
|
|
|
|
dsn.rfc-ignorant.org does not accept bounces - http://www.rfc-ignorant.org/
|
|
|
|
See http://www.rfc-ignorant.org/ for more examples.
|
|
|
|
|
|
=item dnsbl_zones
|
|
|
|
Normal ip based DNS blocking lists ("RBLs"). For example:
|
|
|
|
relays.ordb.org
|
|
spamsources.fabel.dk
|
|
|
|
|
|
=item spool_dir
|
|
|
|
If this file contains a directory, it will be the spool directory
|
|
smtpd uses during the data transactions. If this file doesn't exist, it
|
|
will default to use $ENV{HOME}/tmp/. This directory should be set with
|
|
a mode of 700 and owned by the smtpd user.
|
|
|
|
=item spool_perms
|
|
|
|
The default spool permissions are 0700. If you need some other value,
|
|
chmod the directory and set it's octal value in config/spool_perms.
|
|
|
|
=item tls_before_auth
|
|
|
|
If this file contains anything except a 0 on the first noncomment line, then
|
|
AUTH will not be offered unless TLS/SSL are in place, either with STARTTLS,
|
|
or SMTP-SSL on port 465.
|
|
|
|
=item everything (?) that qmail-smtpd supports.
|
|
|
|
In my test qpsmtpd installation I have a "config/me" file containing
|
|
the hostname I use for testing qpsmtpd (so it doesn't introduce itself
|
|
with the normal name of the server).
|
|
|
|
=back
|
|
|
|
|
|
=head1 Problems
|
|
|
|
In case of problems, always check the logfile first.
|
|
|
|
By default, qpsmtpd logs to log/main/current. Qpsmtpd can log a lot of
|
|
debug information. You can get more or less by adjusting the number in
|
|
config/loglevel. Between 1 and 3 should give you a little. Setting it
|
|
to 10 or higher will get lots of information in the logs.
|
|
|
|
If the logfile doesn't give away the problem, then post to the
|
|
mailinglist (subscription instructions above). If possible, put
|
|
the logfile on a webserver and include a reference to it in the mail.
|
|
|