Your requirements:
 -IPv6 capable system (no need to have IPv6, but libc must know inet_pton and friends)
 -support for openat()
 -ucspi-tcp including IPv6 patches (get them at http://www.fefe.de/ucspi/)
 -libowfat (>=0.28, get from http://www.fefe.de/libowfat/)
 -qmail (netqmail is fine)
 -OpenSSL
 -vpopmail (optional)
 -CMake (>= 2.8.6, get it from http://www.cmake.org) to generate the build files

How to install:
 1. Install qmail, apply all the patches you want. Ignore any problems with qmail-smtpd, it will not be needed.
    If you plan to use Qremote you can also ignore problems with qmail-remote
 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. Build libowfat.

    IMPORTANT: If you use dietlibc to build libowfat you must tell CMake to use a compiler that links against dietlibc, too!

 6. Make sure openssl is installed including the header files and can be found by CMake.
 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=On" to CMake command line
 8. Look into trunk/patches/ to see if you might need some of these for some special purposes (like sending mail to
    aol.com). Apply everything you need.

 9. cd trunk; mkdir build && cd build && cmake .. && 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. Make sure Qsmtpd can read the free space in the queue:
    chmod 755 /var/qmail/queue

13. Install IPv6 enabled tcpserver. Normally just build and install ucspi-tcp with the IPv6 patch. 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.

    If you are compiling Qsmtpd with the IPV4ONLY option set you may omit the IPv6 patch. You may still use it and
    everything will work as expected. If you use IPv6 you _must_ use it.
14. Test it.
    echo nobounce > /home/vpopmail/domains/one.of.your.domains/user/filterconf
    telnet yourmachine 25
    EHLO mybox.com
    MAIL FROM:<>
    RCPT TO:<user@one.of.your.domains>
    QUIT

    The reply to the RCPT TO: should tell you that this user does not accept bounce messages.
15. If you want qmail-smtpd to accept IPv6 connections you probably also want to send on IPv6 links.
    First move qmail-remote out of the way, then link Qremote:

    mv /var/qmail/bin/qmail-remote /var/qmail/bin/qmail-remote.orig
    ln -s /var/qmail/bin/Qremote /var/qmail/bin/qmail-remote
