Your requirements: -IPv6 capable system (no need to have IPv6, but libc must know inet_pton and friends) -ucspi-tcp including IPv6 patches (get them at http://www.fefe.de/ucspi/) -libowfat (latest CVS version or >=0.21, get from http://www.fefe.de/libowfat/) -cdb.a (i.e. from vpopmail) -qmail -openssl -vpopmail (optional) How to install: 1. Install qmail, apply all the patches you want. Ignore any problems with qmail-smtpd, it will not be needed 2. Install vpopmail. If you don't want vpopmail you can't use all the nice features like immediately rejecting nonexistent users and per-user filter settings. Before building vpopmail change to vpopmail directory and apply the vpopmail patch: patch -p1 -i ../your/path/to/Qsmtpd/doc/vpopmail.diff This patch will modify vadddomain/vadduser to create the user/domain directories 755 instead of 750 so that Qsmtpd can look into them. The Maildirs will stay 700. 3. Download libowfat 4. Change into libowfat directory and run patch -p1 -i ../your/path/to/Qsmtpd/doc/libowfat.diff This patch adds some dns lookup functions to libowfat. They are the same already in libowfat but use the normal C style parameters instead of DJBs stralloc stuff. 5. Build libowfat. IMPORTANT: If you use dietlibc to build libowfat you must modify CC in Qsmtpd/Makefile to use dietlibc, too! 6. Make sure openssl is installed including the header files and that "-lssl -lcrypto" work. If the openssl libraries are in some special directories change LDFLAGS in Qsmtpd/Makefile to include this path (add -L/path). 7. Now build Qsmtpd. If you are on an IPv4-only node you may want to block all mails coming from domains with only IPv6 MX entries. In this case add "-DIPV4ONLY" to CFLAGS in Qsmtpd/Makefile 8. Edit Qsmtpd/Makefile and change CDBPATH to a directory where cdb.a is (using the one from vpopmail/cdb is ok). 9. cd Qsmtpd; make && make install 10. Change your startup scripts to run Qsmtpd instead of qmail-smtpd, the command line will stay the same 11. Make sure your /home/vpopmail/domains (or whereever you put vpopmail) and the domain/user directories are 755. Make sure every .qmail-default is mode 644. 12. Install IPv6 enabled tcpserver. Normally just build and install ucspi-tcp with the IPv6 diff. You can use Qsmtpd/doc/tcpserver.diff also. When you set the banner with tcpservers -b option it will set BANNER environment variable so that Qsmtpd will not send it's own banner. You can use this if you want a custom banner or if you want to reduce latency, tcpserver will fork Qsmtpd after all his lookups are done, if you have a slow connection this allows the client to send his EHLO/HELO earlier. 13. Test it. echo nobounce > /home/vpopmail/domains/one.of.your.domains/user/filterconf telnet yourmachine 25 EHLO mybox.com MAIL FROM:<> RCPT TO: QUIT The reply to the RCPT TO: should tell you that this user does not accept bounce messages. Don't use the name of the mail server as your helo (you can find the name in /var/qmail/control/me). Qsmtpd will reject all clients with his own name. If you want to send mail from localhost use /var/qmail/bin/sendmail instead or tell the mail program to use another name. If you want to disable this check completely search Qsmtpd/qsmtpd/qsmtpd.c for the string "LIAR" in function helovalid and remove them. Rebuild. 14. If you want qmail-smtpd to accept IPv6 connections you probably also want qmail-remote to send on IPv6 links. A patch can be found here http://pyon.org/fujiwara/ (no guarantee if this works for you).