2012-06-22 11:38:01 +02:00
|
|
|
|
2013-04-21 02:12:21 +02:00
|
|
|
Qpsmtpd-dev is a fork of Qpsmtpd. Qpsmtpd is a very good SMTP daemon for
|
|
|
|
developers and hackers (admittedly, its focus). It is difficult to install
|
|
|
|
and administer for the typical sysadmin/user.
|
|
|
|
|
|
|
|
The primary focus of the -dev branch is improving the consistency and
|
|
|
|
behavior of the plugins. After using one plugin, the knowledge gained
|
|
|
|
should carry over to other plugins.
|
|
|
|
|
|
|
|
Secondary goals are reducing code duplication and complexity. Anything
|
|
|
|
covered in Perl Best Practices is also fair game.
|
|
|
|
|
|
|
|
So far, the main changes between the release and dev branches have focused
|
|
|
|
on these goals:
|
|
|
|
|
|
|
|
- plugins emit a single entry summarizing their disposition
|
|
|
|
- plugin logs prefixed with keywords: pass, fail, skip, error
|
|
|
|
- plugins use 'reject' and 'reject_type' settings.
|
|
|
|
- plugins support deferred rejection via 'naughty' plugin
|
|
|
|
- plugins get a resolver via $self->init_resolver
|
|
|
|
|
2012-06-22 11:38:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
Roadmap
|
|
|
|
=======
|
|
|
|
|
2013-04-21 02:12:21 +02:00
|
|
|
- https://github.com/qpsmtpd-dev/qpsmtpd-dev/issues
|
2012-06-22 11:38:01 +02:00
|
|
|
|
|
|
|
- Bugfixes - qpsmtpd is extremely stable (in production since 2001), but
|
|
|
|
there are always more things to fix.
|
|
|
|
|
|
|
|
- Add user configuration plugin infrastructure
|
|
|
|
- Add plugin API for checking if a local email address is valid
|
|
|
|
|
|
|
|
- Add API to reject individual recipients after the RCPT has been
|
|
|
|
accepted and generate individual bounce messages.
|
|
|
|
|
|
|
|
Issues
|
|
|
|
======
|
|
|
|
|
|
|
|
------ The rest of the list here might be outdated. ------
|
|
|
|
------ Patches to remove things are welcome. ------
|
|
|
|
|
|
|
|
plugin support;
|
|
|
|
|
|
|
|
allow plugins to return multiple response lines (does it have to
|
|
|
|
join them to one for SMTP?)
|
|
|
|
|
|
|
|
support plugins for the rest of the commands.
|
|
|
|
|
|
|
|
specify a priority in register_hook. ("LAST", "FIRST", "MIDDLE", or
|
|
|
|
maybe a number)
|
|
|
|
|
|
|
|
plugin access to the data line by line during the DATA phase
|
|
|
|
(instead of just after)
|
|
|
|
|
|
|
|
if qmail-queue can't be loaded we still return 250 ?!
|
|
|
|
|
|
|
|
Make a system for configuring the plugins per user/domain/...
|
|
|
|
|
|
|
|
support databytes per user / domain
|
|
|
|
|
|
|
|
localiphost - support foo@[a.b.c.d] addresses
|
|
|
|
|
|
|
|
Move dispatch() etc from SMTP.pm to Qpsmtpd.pm to allow other similar
|
|
|
|
protocols to use the qpsmtpd framework.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Future Ideas
|
|
|
|
============
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
The data_post hook should be able to put in the notes what addresses
|
|
|
|
should go through, bounce and get rejected respectively, and qpsmtpd
|
|
|
|
should just do the right thing. See also
|
|
|
|
http://nntp.perl.org/group/perl.qpsmtpd/170
|
|
|
|
|
|
|
|
David Carraway has some thoughts for "user filters"
|
|
|
|
http://nntp.perl.org/group/perl.qpsmtpd/2
|
|
|
|
|