QmailAdmin
October 22, 2025 by Roberto Puzzanghera 161 comments
qmailAdmin is a free software package that provides a web interface for managing a qmail system with virtual domains. It provides admin for adding/deleting users, Aliases, Forwards, Mailing lists and Autoresponders.
As you can see, for convenience I moved the QmailAdmin sources to my github space. Nonetheless, all information about QmailAdmin will continue to be posted here, and this page remains the place to seek support if needed.
This qmailadmin contains the original Inter7's 1.2.16 version with the following features (updated to 2023.08.27 old patch version) and several modifications in order to compile with latest C compilers:
- qmailadmin-skin, a patch that I created during covid-19 spare time, provides a new responsive skin to the control panel. It modifies everything under the html dir and many .c files in order to adjust the
htmlembedded into the source files. Added a style sheet in the "images" folder and a couple of png files for theqmaillogo. It will be much easier to modify theqmailadmin's skin from now on. - A patch to call
cracklibin order to check for the password strenght. This should avoid unsafe accounts created by domain administrators such as "test 123456". - A nice patch (thanks to Tony, original author unknown) which gets
qmailadminto have authentication failures logged. This makes possible to ban malicious IPs viafail2ban. It is required to create the log file /var/log/qma-auth.log initially and assign write priviledges toapache. - ezmlm-idx 7 compatibility patch (author unknown), which restores the compatibility with
ezmlm-idx-7(thanks to J.D. Trolinger for the advice). - a fix to the catchall account (thanks to Luca Franceschini).
- another fix to autorespond.c to correct the way the
.qmailfiles are modified qmail-autorespondersupport (thanks Nathanaël Semhoun)
Installing ClamAV
October 18, 2025 by Roberto Puzzanghera 24 comments
- Info: http://www.clamav.net
- Latest version: 1.5.1
Clam AntiVirus is an open source (GPL) anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail gateways.
Changelog
- Oct 18, 2025
- clamav upgraded to v 1.5.1 - Oct 11, 2025
- clamav upgraded to v 1.5.0. A recent version of rust is needed (successfully using 1.88 here). Just reinstall as explained below. No particular change is needed in the config files.
Realtime Block List (RBL) - qmail-dnsbl
October 4, 2025 by Roberto Puzzanghera 32 comments
- Oct 3, 2025:
- Added a Data Query Service section, which solves the ban issue fromspamhausfrom public DNS connections.
A Realtime Block List (RBL) is a list of addresses that an RBL list supplier believes are a source of Spam.
- Download qmail-dnsbl patch
- Code and logic from
rblsmtpdandqmail-dnsblpatch by Fabio Busatto - Added support for welcomelists, TXT and A queries, configurable return codes 451 or 553 with custom messages (by Luca Franceschini)
This patch replaces the djb's rblsmtpd program. It incorporates into qmail-smtpd the RBL stuff with the advantage that you can see the envelope in the logs. Registering the envelope as well as the sender ip is important to always know what happened to not received messages.
daemontools
September 30, 2025 by Roberto Puzzanghera 40 comments
- More info here: http://cr.yp.to/daemontools.html
- Original author: D.J. Bernstein
- github
- version: 0.82
daemontoolsis a collection of tools for managingUNIXservices. It monitorsqmailservices and saves error messages to one or more logs.
Changelog
- Sep 30, 2025 (v0.82)
- Fixed crash in multilog caused by invalid buffer access when read() returned -1 ea3abe9 - Sep 8, 2025 (v. 0.81)
- compiles with latest gcc 15.2 - Aug 3, 2025 (v. 0.80)
- multilog prints a readable datetime in milliseconds if used with "m" flag (thanks squidvisa) - Mar 19, 2025 (v. 0.79)
This version does not add new features nor corrects bugs. It's just a reorganizations of the files in the source dir
- daemontools will be installed in /var/qmail/daemontools
- Moved 'package' and 'src' to the top dir
- Version grabbed from 'VERSION' in package/upgrade - Feb 9, 2025 (v0.78.4)
- several adjustments to get clang version 18.1.6 compatibility
- restored !/bin/sh in all scripts - Dec 9, 2023
- moved my patched daemontools to github and named 0.77 the new version
- clear service moved to qmail/supervise/clear
Installing and configuring SpamAssassin
September 10, 2025 by Roberto Puzzanghera 65 comments
- Info: http://spamassassin.apache.org/
- Docs: http://spamassassin.apache.org/full/4.0.x/doc/
- Latest version: 4.0.2
- Download: http://spamassassin.apache.org/downloads.cgi
- Upgrading notes: https://svn.apache.org/repos/asf/spamassassin/trunk/UPGRADE
- github: https://github.com/apache/spamassassin
SpamAssassin is a mature, widely-deployed open source project that serves as a mail filter to identify Spam. SpamAssassin uses a variety of mechanisms including header and text analysis, Bayesian filtering, DNS blocklists, and collaborative filtering databases. SpamAssassin runs on a server, and filters spam before it reaches your mailbox.
Changelog
- Oct 4, 2025
- added a section in theRBLpage, which addresses thespamhausban issue for queries from open resolvers. - Sep 11, 2025
-txrepis working badly in a server where data were not completely deleted. Read the updates below - Sep 10, 2025
- spamassassin upgraded to v 4.0.2
- added a new page "Preparing the SQL database in SpamAssassin" where the old issue about the MySQL/MariaDB driver is addressed. - May 31, 2025
- We are know denying validity, as it is imposing low limits and drastically blocking the queries (tx Shailendra Shukla).
Upgrading qmail
September 8, 2025 by Roberto Puzzanghera 587 comments
- Latest version 2025.09.08 (github)
- Changelog
- Readme
For my convenience I moved the qmail sources to my github space. Nonetheless, all information about qmail and related programs will continue to be posted in this web space, and this pages remain the place to eventually seek support. From now on, instead of releasing a combined patch for qmail, I'll release a package which is the result of the ancient netqmail-1.06 plus my modifications. The original patches that I accomodated in my qmail package are listed below.
Changelog
- Sep 8, 2025
- Fixes in SPP handling and support for [pass] plugins after RCPT accept. Support for RBLRESULT environment variable and RBL ignore ('=') option. (tx Andreas Gerstlauer)
- Added -std=gnu17 to conf-cc, fixed some other issues and now it compiles on gcc-15.2 in #28
- scripts/qmail-pop3d and qmail/pop3sd: ports changed to 110 and 995
- Received: email header now hides the sender's hostname when the sender is RELAYCLIENT or is authenticated. 785e84b - Jul 10, 2025
- Authentication-Results: header support (Andreas Gerstlauer)
-DKIM: addedERROR_FD=2in control/filterargs to send error output ofqmail-dkimin stderr when acting as aqmail-remotefilter (Andreas Gerstlauer)
- improvedqmail-dkimerror reporting when signing outgoing messages (Andreas Gerstlauer)
-helodnscheck.cpp:qmaildir determined dynamically
-qmHandle:Add-xand-Xparameter for remove email by To/Cc/Bcc (by Stetinac) - Jun 09, 2025
- CRLF fix for fastremote-3 patch (thanks Andreas Gerstlauer)
- Bug fix to the greetdelay program (thanks Andreas Gerstlauer): qmail-smtpd crashes if SMTPD_GREETDELAY is defined with no DROP_PRE_GREET defined.
- turned off TLS and helo dns check on qmail-smtpsd/run script (tx Luis) - Apr 30, 2025
,
qmailctlqmHandle,queue_repairand all scripts installed in QMAIL/bin and not in /usr/local/bin byconfig-all.sh - Apr 25, 2025
- added a configuration script config-all, which configure and installs the control files (as per the original config-fast script), aliases, SRS (uses control/me as the srs_domain), log dirs in /var/log/qmail, tcprules (basic, just to make initial tests), supervise scripts,qmailctlscript, DKIM control/filterargs and control/domainkeys dir, SURBL,smtpplugins,helodnscheckspp plugin,svtools,qmHandle,queue-repair, SSL key file (optional).
Consider this feature as "testing" - Feb 11, 2025
- Several adjustments to get freeBSD and netBSD compatibility. More info in the commit history. Hints/comments are welcome.
- freeBSD users have to leave the very 1st line of the file "conf-lib" blank, as libresolv.so is not needed on freeBSD.
- Dropped files install-big.c, idedit.c and BIN.* files.
- Dropped files byte_diff.c, str_cpy.c, str_diff.c, str_diffn.c and str_len.c, which break compilation on clang and can be replaced by the functions shipped by the compiler (tx notqmail).
- Old documentation moved to the "doc" dir. install.c and hier.c modified accordingly
- conf-cc and conf-ld now have -L/usr/local/lib and -I/usr/local/include to look for srs2 library
- conf-cc and conf-ld now have -L/usr/pkg/lib and -I/usr/pkg/include to satisfy netBSD
- vpopmail-dir.sh: minor correction to vpopmail dir existence check
- srs.c: #include <srs2.h> now without path - Dec 01, 2024 (More info here and in the github release notes)
- Added support for EAI (RFC 5336 SMTP Email Address Internationalization) (#13). Thanks to https://github.com/arnt/qmail-smtputf8/tree/smtputf8-tls. libidn2 package (libidn2-dev on debian) is a new dependence.
- chkuser is now smtputf8 compliant. It accepts utf8 characters in sender and recipient addresses provided that the remote server advertises the SMTPUTF8 verb in MAIL FROM, otherwise it allows only ASCII characters plus additional chars from the CHKUSER_ALLOWED_CHARS set.
* dropped variables CHKUSER_ALLOW_SENDER_CHAR_xx CHKUSER_ALLOW_RCPT_CHAR_xx (replaced by CHKUSER_ALLOWED_CHARS)
* dropped variables CHKUSER_ALLOW_SENDER_SRS and CHKUSER_ALLOW_RCPT_SRS, as we are always accepting '+' and '#' characters
* added variables CHKUSER_INVALID_UTF8_CHARS and CHKUSER_ALLOWED_CHARS
Installing and configuring VPopMail
September 1, 2025 by Roberto Puzzanghera 192 comments
VPopMailversion: 5.6.9- github: sagredo-dev/vpopmail
- Download
- Changelog
- README.vdelivermail
- Inter7's original page
Vpopmail provides an easy way to manage virtual email domains and non /etc/passwd email accounts on your mail servers.
Changelog
- Sep 1, 2025 (v. 5.6.9)
- added -std=gnu17 to gain compatibility with gcc-15 (PR #6)
- pw_clear_passwd field enlarged to varchar(128) to create room for long passwords (tx Ricardo Brisighelli) c54688d - Mar 29, 2025 (v5.6.8)
defaultdelivery feature (--enable-defaultdelivery) changes (more info here, commit):vdelivermailis installed by default in .qmail-default of newly created domains with option 'delete' as in the previous version.- if no user's valiases and no .qmail are found, then the message is sent to the control/defaultdelivery file, so that
dovecot-lda(or whatelse) can execute the sieve rules and finally store the message into inbox. - if vdelivermail is found in control/defaultdelivery, then it is ignored to avoid loops. The delivery is done by
vdelivermail - v. 5.6.8 is backward compatible. The users having .qmail from previous versions of the defauldelivery feature are not affected by this change.
- Mar 23, 2025 (v. 5.6.7)
- bug fix in vpopmaild.c: Crypted[64] enlarged to Crypted[128] to make room for SHA-512 passwords. This restores the usability of the RoundCube's 'password' plugin (commit)
- fixed quota calculation in sql procedures for dovecot (tx Hakan Cakiroglu) (commit)
- minor changes to the usage function of vmakedotqmail.c (commit) - Feb 9, 2025 (v. 5.6.5)
- added pwd strength check also for vadduser.c
- removed-std=c99 -D_XOPEN_SOURCE=500arguments fromCFLAGSin configure.ac to makeclanghappy
- several changes to compile onFreeBSD clangv. 18.1.6 - Dec 20, 2024 (v 5.6.4)
- Password strength enforcement (PR #5, grabbed from Matt Brookings' 5.5.0-dev version)
- Dropped min pwd length feature.
- vmysql.h: tables' layout changed in order to have VARCHAR instead of CHAR. Fields containing ip addresses enlarged to VARCHAR(39), to create room for ipv6. Unix timestamps definition changed from BIGINT(20) to INT(11). (commit 44bad58) Have a look to the upgrade notes below. - Oct 14, 2024 (v. 5.6.2)
- fixed a configure break where a trivial C test program exits on error with gcc-14.1 due to missing headers
- vusaged/domain.c: fixed -Wimplicit-function-declaration compilation warning
- vmysql.h: dropped the multicolumn PRIMARY KEY in valias table to allow multiple forwards for a given alias.
In case one already has the valias table defined, this is the sql query for the upgrade:
ALTER TABLE `vpopmail`.`valias` DROP PRIMARY KEY, ADD INDEX (`alias`, `domain`, `valias_type`) USING BTREE;
ALTER TABLE `vpopmail`.`valias` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`);
qmail - basic setup
August 19, 2025 by Roberto Puzzanghera 40 comments
Changelog
- Aug 19, 2025
- netqmail-1.07.1: now compiles with gcc 15.2 - Feb 10, 2025
- the originalnetqmailsources are now compatible with latestgccandclangcompilers
- renamed asnetqmail-1.07the originalnetqmailsources after the update







