qpsmtpd Wiki


You are here: start


You are currently not logged in! Enter your authentication credentials below to log in. You need to have cookies enabled to log in.


You don't have an account yet? Just get one: Register

Forgotten your password? Get a new one: Set new password

qpsmtpd wiki

This is a documentation Wiki for the qpsmtpd modular SMTP daemon.

About qpsmtpd

The qpsmtpd daemon started as a replacement daemon for the qmail-smtpd SMTP receiver from the qmail mail transport agent (MTA). The qmail-smtpd SMTP receiver has a number of shortcomings, for example being unable to check the validity of a recipient mail address. It is also written in C which makes it burdensome to modify and extend.

The qpsmtpd daemon, on the other hand, is Perl and can be customized easily. It consists of a core that implements a complete SMTP server, and a number of plug-ins that enhance the operations of the server. These plug-ins allow for the checking of recipients and senders, as well as virus scanning, spam checking, blocking lists (DNS and RHS), SMTP AUTH and TLS.

The qpsmpd daemon can not only be integrated with qmail but also with Postfix and Exim. It can also write messages to Maildirs or forward them to a remote host via SMTP.

Put simply: by tweaking the plug-ins, you can adapt qpsmtpd to almost any environment and task.

Help needed

This wiki has only recently been created and is still very incomplete. If you can spare some time and know something about qpsmtpd which is not yet covered, please help and add a page! As this is a wiki, the content can be modified by anybody. To prevent spam, user registration is mandatory. The data entered for user registration will not be used for any other purpose, promise!

See comments for current status of the Wiki re-development process.

Who uses qpsmtpd

You can see a list of who uses qpsmtpd. Please don't hesitate to add yourself and/or your site to the list.

Getting qpsmtpd

The qpsmtpd daemon is available in packages, with the latest stable release being version 0.84. This release is recommended for production use for driving lessons leeds.

If you are able to program in Perl then you might want to checkout a copy of the latest stable version or contribute at Github

If you want to implement the Danga based high performance pollserver version then checkout a copy of the svn trunk.

If you want to install from RPMs then they are also available.

Debian packages are also available

Installing and deploying

The qpsmtpd daemon is quick and easy to install. Installation instructions are also available to assist you.

When installing qpsmtpd there are a variety of deployment models you can select from. These include a forkserver, running via Apache, daemontools, runit, (x)inetd, tcpserver and an experimental pollserver.


The qpsmtpd daemon was originally designed as a drop-in replacement for qmail-smtpd, and uses many of the configuration files used by qmail.

There is also a special section on SMTP AUTH authentication.

Getting help

To get help on qpsmtpd, you can either consult the mailing list and its archive, or ask questions here on the wiki, from where your questions and the community's answers will hopefully be transferred to the FAQ.

You can also log bugs for qpsmtpd using the Google Code Issues Tracker. You might need to sign in using a Google account.

When asking questions on the mailing list, particularily when reporting errors, remember the five golden questions:

  1. Which version of qpsmtpd are you using?
  2. What did you do?
  3. What did you expect to happen?
  4. What happened?
  5. What do the logs say?

Without this information, it is hard to answer questions, and you may not get an answer at all.

Getting plug-ins

Plug-ins are the heart of qpsmtpd, but as of today, there is no good central repository for them. The qpsmtpd home page points to three locations: the SVN trunk, Peter J. Holzer's page and Gavin Carr's page, but none of these are complete. Additional plug-ins are also available at:

You can add your own plug-ins to this wiki by following the instructions contained in the plug-in template. Please add plug-in pages to the wiki in accordance with the documented namespace standard.


Plug-in API

If you can't find a plug-in that meets your requirements you can make use of the Plug-in API to produce your own.

The API interface links into various points of the SMTP transaction using hooks. Incoming connections, the header and data components of email as well as other portions of the SMTP transaction are hooked, processing or evaluation of that portion of the transaction occurs and a plug-in return code is generated. Based on this plug-in return code the qpsmtpd daemon determines how to handle the transaction.


The qpsmtpd daemon is used by several high traffic mailing list domains including apache.org, perl.org, cpan.org and lists.mysql.org. The qpsmtpd daemon processes over 2 million messages per day for apache.org and their load decreased when qpsmtpd was implemented due to high rejection rate for spam.

There are also some statistics (and instructions on how to measure your own qpsmtpd installation) available that show the performance of qpsmtpd.