prepare for version 0.10
git-svn-id: https://svn.perl.org/qpsmtpd/branches/v010@56 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
parent
7f5aedffdc
commit
06ee5b636e
109
README
109
README
@ -1,3 +1,5 @@
|
|||||||
|
Qpsmtpd - qmail perl simple mail transfer protocol daemon
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
web:
|
web:
|
||||||
http://develooper.com/code/qpsmtpd/
|
http://develooper.com/code/qpsmtpd/
|
||||||
@ -6,34 +8,87 @@ mailinglist:
|
|||||||
qpsmtpd-subscribe@perl.org
|
qpsmtpd-subscribe@perl.org
|
||||||
|
|
||||||
|
|
||||||
---- this file needs updating for version 0.10 ! ------
|
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,
|
||||||
-- version 0.10 is a new object oriented version of qpsmtpd.
|
cute example.
|
||||||
--
|
|
||||||
-- it is meant to be an easily extensibly smtpd engine.
|
|
||||||
--
|
|
||||||
--
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
|
||||||
|
|
||||||
Problems:
|
|
||||||
First thing to do is to watch the log carefully. If it doesn't
|
|
||||||
help you, or even if it does, please post to the maliinglist
|
|
||||||
(subscription instructions above). qpsmtpd is meant to be a drop-in
|
|
||||||
replacement for qmail-smtpd, so it should be very easy to get going.
|
|
||||||
|
|
||||||
|
|
||||||
Configuration files:
|
|
||||||
All configuration files goes into $DIR/config/ or /var/qmail/control/
|
|
||||||
|
|
||||||
qpsmtpd is supposed to support all the files that qmail-smtpd
|
What's new in version 0.10?
|
||||||
supports and use them in the same way. When you find that it is not
|
---------------------------
|
||||||
the case, feel free to send a patch to the mailinglist or to
|
|
||||||
ask@develooper.com.
|
Version 0.10 is all rearchitected, with an object oriented plugin
|
||||||
|
infrastructure. Weeh, that sounds fancy! Of course it is keeping the
|
||||||
|
well tested core code from version 0.0x which have had more than a
|
||||||
|
years production usage on many sites.
|
||||||
|
|
||||||
|
Noteworthy new features includes a SpamAssassin integration plugin,
|
||||||
|
more documentation and support for arbitrarily large messages without
|
||||||
|
exhausting memory (up to the size of whatever your file system
|
||||||
|
supports).
|
||||||
|
|
||||||
|
|
||||||
|
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 CVS you can just do
|
||||||
|
cvs -d :pserver:anonymous@cvs.perl.org:/cvs/public co qpsmtpd
|
||||||
|
in the /home/smtpd/ dir.
|
||||||
|
|
||||||
|
Now 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 now!
|
||||||
|
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 when you startup.
|
||||||
|
|
||||||
|
|
||||||
|
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 there is anything missing, then please send a patch (or just
|
||||||
|
information about what's missing) to the mailinglist or to
|
||||||
|
ask@develooper.com.
|
||||||
|
|
||||||
|
|
||||||
|
Problems
|
||||||
|
--------
|
||||||
|
|
||||||
|
First, check the logfile. As default it goes into log/main/current.
|
||||||
|
Qpsmtpd can log a lot of debug information. You can get more or less
|
||||||
|
by adjusting $TRACE_LEVEL in lib/Qpsmtpd.pm (sorry, no easy switch for
|
||||||
|
that yet). Something between 1 and 3 should give you just a little
|
||||||
|
bit. If you set it to 10 or higher you 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 possibly then put
|
||||||
|
the logfile on a webserver and include a reference to it in the mail.
|
||||||
|
|
||||||
|
|
||||||
|
Extra files you can use to configure qpsmtpd:
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
Extra files you can use to configure qpsmtpd:
|
|
||||||
|
|
||||||
rhsbl_zones
|
rhsbl_zones
|
||||||
|
|
||||||
@ -58,3 +113,11 @@ Configuration files:
|
|||||||
envelope senders will be checked against DNS. If an A or a MX
|
envelope senders will be checked against DNS. If an A or a MX
|
||||||
record can't be found the mail command will return a soft
|
record can't be found the mail command will return a soft
|
||||||
rejection (450).
|
rejection (450).
|
||||||
|
|
||||||
|
|
||||||
|
... 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).
|
||||||
|
|
17
STATUS
17
STATUS
@ -1,14 +1,10 @@
|
|||||||
|
|
||||||
things to do for v0.10
|
Issues
|
||||||
----------------------
|
======
|
||||||
|
|
||||||
transaction should maybe be a part of the connection object instead
|
transaction should maybe be a part of the connection object instead
|
||||||
of off the main object
|
of off the main object
|
||||||
|
|
||||||
get timeouts to work in "tcpserver" mode (or generally; not sure where
|
|
||||||
it fits best)
|
|
||||||
|
|
||||||
|
|
||||||
plugin support;
|
plugin support;
|
||||||
|
|
||||||
support plugins for the rest of the commands.
|
support plugins for the rest of the commands.
|
||||||
@ -19,14 +15,19 @@ plugin support;
|
|||||||
plugin access to the data line by line during the DATA phase.
|
plugin access to the data line by line during the DATA phase.
|
||||||
|
|
||||||
|
|
||||||
|
TRACE in Constants.pm is not actually being used. Should it be?
|
||||||
TRACE in Constants.pm is not actually being used. Should it?
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Future Ideas
|
Future Ideas
|
||||||
============
|
============
|
||||||
|
|
||||||
|
Make config() better abstracted or configured (to allow configuration
|
||||||
|
from LDAP etc).
|
||||||
|
|
||||||
|
Make queue() better abstracted or configured (to allow LMTP delivery
|
||||||
|
instead of using qmail-queue).
|
||||||
|
|
||||||
Methods to create a bounce message easily; partly so we can accept a
|
Methods to create a bounce message easily; partly so we can accept a
|
||||||
mail for one user but bounce it right away for another RCPT'er.
|
mail for one user but bounce it right away for another RCPT'er.
|
||||||
|
|
||||||
|
@ -17,7 +17,8 @@ BEGIN{$^W=0;}
|
|||||||
use Net::DNS;
|
use Net::DNS;
|
||||||
BEGIN{$^W=1;}
|
BEGIN{$^W=1;}
|
||||||
|
|
||||||
$Qpsmtpd::VERSION = "0.10-dev";
|
$Qpsmtpd::VERSION = "0.10";
|
||||||
|
my $TRACE_LEVEL = 6;
|
||||||
|
|
||||||
# $SIG{ALRM} = sub { respond(421, "Game over pal, game over. You got a timeout; I just can't wait that long..."); exit };
|
# $SIG{ALRM} = sub { respond(421, "Game over pal, game over. You got a timeout; I just can't wait that long..."); exit };
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ sub config {
|
|||||||
sub log {
|
sub log {
|
||||||
my ($self, $trace, @log) = @_;
|
my ($self, $trace, @log) = @_;
|
||||||
warn join(" ", $$, @log), "\n"
|
warn join(" ", $$, @log), "\n"
|
||||||
if $trace <= 10;
|
if $trace <= $TRACE_LEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub dispatch {
|
sub dispatch {
|
||||||
|
Loading…
Reference in New Issue
Block a user