LinuxMagic - OpenSource - "magic-smtpd"

LinuxMagic's "magic-smtpd" Daemon

This is the Homepage for the Opensource Version of the "magic-smtpd" daemon.

MAGIC-SMTPD is a drop in replacement for Dan Bernsteins qmail-smtpd, and was originally designed to be part of the LinuxMagic Magic Mail Server. This OpenSource version has been released to allow others to benefit from it's anti-spam components, and valid user checking to reduce server loads and spam volumes. It is designed to support stock qmail installations, qmail/vpopmail installations, as well as having database support. Designed for ISP service, this will work for all mail servers large and small. Comments are welcome. Support for other mailers is expected in the future. Complete support packages are also available.

NOTE! Jan 10, 2006 - Version 0.8.4-2 is released. This has many improvements including special case rules for users who successfully AUTH. Enhanced spam rules, and many other features should make this a 'must have' upgrade if you are using previous versions. This is still however classified as a beta release until further testing is done, but many of the commercial MagicMail features have now been added. Please read the manual and change logs for full details. Also, we have included a 'dynamic regular expression list' that really seems to help block spam from infected home PCs on DSL networks that act as a mail server. If you wish to help out, feel free to submit new regexes that we can include in future releases.

The magic-smtpd's main philosophies are:

  • To protect against spam and other unwanted activity at the SMTPD level before burdening the mailer processes
  • Pro-Active protection against spammers by returning a 'USER DOES NOT EXIST' to the offender, hopefully to remove the address from bulk mailer lists
  • To refuse to accept mail for users that do not exist, why burden the mailer with the requirement to process bounces
  • To remain RFC compliant
  • To be able to provide this same ability to other users of Qmail and Qmail/VPOPMAIL, as Dan Bernsteins code has helped so many others
  • To provide it in a form which can be redistributed by others
  • To make it as efficient as possible, as we deal with a lot of high volume mail servers
  • Ability to handle scanning at the SMTPD level rather than handling them as bounces
  • Make the anti-spam and virus protection easy to configure and maintain
  • Still keep the code in sync with our commercial version where possible
  • Queueing a message twice always takes more resources than stopping it dead if we don't want it


This page will be updated as features are added, but for now, make sure you look at the ChangeLog for the latest enhancements. The 'magic-smtpd' daemon comes complete with the following features.

  • Drop in replacement for qmail-smtpd
  • Support for stock Qmail installations, Qmail/VPOPMAIL installations, and database installations
  • Valid user checking
  • Anti-spam and virus checks can be enabled at the user or email level, which a lot of ISPs really like to be able to do as it allows them to charge extra for the service
  • Ability to set various Tarpitting Rate Limits on SMTPD connections which stops those spammers who try to send to a million addresses on your server
  • Simple rule based system which is designed to work with any system and provide simple integration into web based, user-defined rule systems, so that users can set their own policies
  • Support for global rule sets as well
  • Ability to set sane defaults easily
  • Support for the Blacklist Mastering System (BMS)
  • Support for TLS, SMTPD AUTH, valid user checking, SMTPD spam protection
  • Some low level rule checks you can set are:
    • By reverse name lookups
    • By double DNS verification
    • By forcing MAILFROM
    • By validating MAILFROM
    • By validating connection IP
    • By blacklists
    • By whitelists
    • By domain extension requirements
    • By country of Connecting IP
    • By country of MAILFROM
    • By syntax
    • By checking HELO signatures
    • By language

All this is done at the same time as the USER DOES NOT EXIST function is returned to sender, and before having to actually the message is even parsed. In addition, many other rules can be applied to check the content of the message, while still allowing us to drop the message and not have to burden our mail server with processing.


The code provided here is a work in progress and we will continue to make it more and more flexible. We strive to reduce the overall work load of the servers and, at the same time, thwart spam where ever we can. Feel free to download the source code, and if you have any suggestions to make, if you find any problems, or even if you just want to send in your comments - join the mailing list at If you have the commercial version of the MagicMail Mail Server, you should already have the commercial support numbers, but if you have lost them contact

NOTE! Regarding Licensing: this product is released under the LinuxMagic FreeSource License. This means it is available for free and is completely OpenSource. Feel free to redistribute it as much as you want, in binary or source form, as long as the license remains intact. Modify it for your own use, but if you want to change it, don't redistribute the changed version. Submit all changes to us (the license holder) and we will consider including it in the next release. If you need custom versions, talk to us and we can arrange a special version. Please read the license for full details. All suggestions, comments and inquiries are welcome.


To whom it may concern,

Thanks for making Magic SMTP available. I've had a bad problem with invalid users for a long time.

Magic SMTP was easy to install and configure and worked the first time! The manual was clear and complete. In the first 90 minutes, my server has rejected > 9K messages with invalid users. Now my virus and spam scanners can take a break.

Thanks again.