![]() | ![]() |
|
1. IntroductionQmail, VMailMgr and Courier-IMAP are a very powerful and easy to use solution, but they are not what I would consider easy to setup. I hope this document helps with that. 1.1. What is Qmail and why should I use it?Here is the authors (Dan Bernstein) blurb: Qmail is a secure, reliable, efficient, simple message transfer agent. It is meant as a replacement for the entire sendmail-binmail system on typical Internet-connected UNIX hosts. It offers POP3, and IMAP (with the help of Courier-IMAP) so that you can use any mail client you prefer. Secure: Security isn't just a goal, but an absolute requirement. Mail delivery is critical for users; it cannot be turned off, so it must be completely secure. (This is why I started writing qmail: I was sick of the security holes in sendmail and other MTAs.) Reliable: qmail's straight-paper-path philosophy guarantees that a message, once accepted into the system, will never be lost. qmail also supports maildir, a new, super-reliable user mailbox format. Maildirs, unlike mbox files and mh folders, won't be corrupted if the system crashes during delivery. Even better, not only can a user safely read his mail over NFS, but any number of NFS clients can deliver mail to him at the same time. Efficient: On a Pentium under BSD/OS, qmail can easily sustain 200000 local messages per day---that's separate messages injected and delivered to mailboxes in a real test! Although remote deliveries are inherently limited by the slowness of DNS and SMTP, qmail overlaps 20 simultaneous deliveries by default, so it zooms quickly through mailing lists. (This is why I finished qmail: I had to get a big mailing list set up.) Simple: qmail is vastly smaller than any other Internet MTA. Some reasons why: (1) Other MTAs have separate forwarding, aliasing, and mailing list mechanisms. qmail has one simple forwarding mechanism that lets users handle their own mailing lists. (2) Other MTAs offer a spectrum of delivery modes, from fast+unsafe to slow+queued. qmail- send is instantly triggered by new items in the queue, so the qmail system has just one delivery mode: fast+queued. (3) Other MTAs include, in effect, a specialized version of inetd that watches the load average. qmail's design inherently limits the machine load, so qmail-smtpd can safely run from your system's inetd. Replacement for sendmail: qmail supports host and user masquerading, full host hiding, virtual domains, null clients, list-owner rewriting, relay control, double-bounce recording, arbitrary RFC 822 address lists, cross-host mailing list loop detection, per-recipient checkpointing, downed host backoffs, independent message retry schedules, etc. In short, it's up to speed on modern MTA features. qmail also includes a drop-in ``sendmail'' wrapper so that it will be used transparently by your current UAs. 1.2. What is VMailMgr and why should I use it?VMailMgr is: A password checking interface between qmail-popup and qmail-pop3d which replaces the usual checkpassword, as well as an authentication module for Courier IMAP, that provide access to the virtual mailboxes by one of three methods:
You should use it if: You prefer to have the users manage their own domains email accounts, and store their email in their own home dir. (This makes setting up disk space quotas much easier) 1.3. What is Courier-imap and why should I use it?Courier-IMAP is: A server that provides IMAP access to Maildir mailboxes. This IMAP server does NOT handle traditional mailbox files (/var/spool/mail, and derivatives), it was written for the specific purpose of providing IMAP access to Maildirs. You should use it because: By default Qmail uses the newer more efficient Maildir format for storing email, and Courier-imap is the only imap server I am aware of that supports Maildir. So in short, if you use Qmail, and want imap support, you have to use it. 1.4. Description of the componentsThe email system you hopefully will get after having read this HOWTO is composed of several parts, the patched Qmail rpms are key to using this document. I recommend using the software versions I tried, they will probably compile without many problems and result in a fairly stable daemon. If you are courageous, you can try to compile all the latest-stuff-with-tons-of-new-features, but don't blame me if something fails ;-). However, you may report other working configurations to be included in future versions of this document. All of the steps were tested on a RedHat Linux 7.2 box, so the HOWTO is somewhat specific, but you should be able to use it for other linux distributions as well. You do not necessarily have to install in all components. I tried to structure this HOWTO so that you can skip the parts you are not interested in. The document is neither a user manual to Qmail, VMailMgr nor Courier-imap. Its prime intention is to save email admins some headaches when installing their server and to do my little contribution to the linux community. 1.5. Working configurationsThough this document is only able to cover a snapshot in time on a limited number of setups, I am pretty confident that it can help you get your email system up and running. Combinations that work for me are:
1.6. HistoryThis document was started on April 18, 2000 by Dan Kuykendall after several installs of Qmail and VMailMgr. Then even more setups when Courier-imap support was ready. 1.7. New versionsThe newest version of this can be found on my homepage http://www.clearrivertech.com/linux/HOWTO as SGML source, as HTML and as TEXT. Other versions may be found in different formats at the LDP homepage http://www.linuxdoc.org/. 1.8. CommentsComments on this HOWTO may be directed to the author Dan Kuykendall (dan@kuykendall.org). 1.9. Version Historyv0.1 (April 18, 2000)
v1.0 (April 18, 2000)
v1.1 (April 19, 2000)
v1.2 (April 19, 2000)
v1.3 (April 19, 2000)
v1.4 (April 23, 2000)
v1.5 (March 11, 2002)
1.10. Copyrights and TrademarksCopyright (c) Dan Kuykendall. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation A copy of the license is available at GNU Free Documentation License. 1.11. Acknowledgements and ThanksThanks to everyone that gave comments as I was writing this. This includes Bruce Guenter and other members of the vmailmgr-discuss list. 2. Component installation2.1. PreparationsYou have two options
2.1.1. Get source rpmsYou will need:
2.1.2. Get binary rpmsQmail does not come in binary form. Such packages are explicitly disallowed by the author of Qmail, and frustrating as it may be, I understand his reasoning. Courier-imap does not come in binary form, unless you want to use the one I built. If you want mine, visit http://www.clearrivertech.com/linux/HOWTO/supportfiles/. VMailMgr does not come in binary form that supports Courier-imap, unless you want to use the one I built. If you want mine, email me, and I will send it.
2.1.3. Get deb packagesThere are multiple locations for qmail and vmailmgr deb packages. Courier-imap is part of the normal debian applications. You can get them in the following locations:
You will need:
2.1.4. Get tarred sources (for non-RPM users)If your system does not have, or you do not use RPMS, you can install from source.
2.2. Install support packages2.2.1. Install with RPMS2.2.1.1. Compiling SRC.RPM'sSimply run the following command for each package rpm --rebuild <package.src.rpm> -Example-
2.2.1.2. Installing RPM'sIf you compiled the source rpms, the binaries will be located in /usr/src/redhat/RPMS/i386/ or something similar. Simply run the following command for each package rpm -ivh <location>/<package.i386.rpm> -Example-
2.2.2. Install with debsRun the following commands for each package (as root) dpkg -i <package.deb> -Example-
2.2.3. Install with sourceRun the following commands for each package (As non-root user) tar zxf <package.tar.gz> cd <newly created dir> ./configure make (As root) make setup check (for ucspi-tcp and daemontools) or make install (for ucspi-unix and supervise-scripts) -Example-
2.3. Install Qmail2.3.1. Install with RPMS2.3.1.1. Compiling SRC.RPM'sAfter installing the support packages, Simply run the following command: rpm --rebuild <package.src.rpm> -Example-
2.3.1.2. Installing RPM'sAfter compiling the source rpms, the binaries will be located in /usr/src/redhat/RPMS/i386/ or something similar. Simply run the following command for the qmail package rpm -ivh <location>/<package.i386.rpm> -Example-
* note start * - Remove sendmail and any dependant applications prior to installing Qmail - by running the following command for each package - rpm -e <packagename>* - - On my system I had to remove sendmail, so I typed - rpm -e sendmail * note end * 2.3.2. Install with debsRun the following commands for each package (as root) dpkg -i <package.deb> -Example-
2.3.3. Install with sourceRun the following command (As non-root user) tar zxf <package.tar.gz> cd <newly created dir> (Now read the INSTALL file and follow the steps to install Qmail) -Example-
2.4. Install Courier-imap2.4.1. Install with RPMS2.4.1.1. Compiling SRC.RPM'sBuild the courier-imap rpms from the tar file rpm -ta courier-imap-1.4.3.tar.gz * note start * - This errors out if you compile as root, but if your not root you - wont have permissions to /usr/src/redhat. You will want to build as a - non-root user, so create a ".rpmmacros" file (for rpm v3 and later) in - your home directory containing the line "%_topdir /path/to/home/redhat". - Then create your own "redhat" directory containing all the subdirs that - /usr/src/redhat contains. - You should never build RPMs as root unless you have to. * note end * * I will mention again, that I have built the binaries, and you can get them at * * http://www.clearrivertech.com/linux/HOWTO/supportfiles/. * 2.4.1.2. Installing RPM'sAfter compiling the source rpms, the binary will be located in /usr/src/redhat/RPMS/i386/ or something similar. Simply run the following command for each package rpm -ivh <location>/<package.i386.rpm> -Example-
2.4.2. Install with debsRun the following commands for each package (as root) apt-get <package.deb> -Example-
2.4.3. Install with sourceRun the following command (As non-root user) tar zxf <package.tar.gz> cd <newly created dir> ./configure make (As root) make install -Example-
2.5. Install VMailMgr2.5.1. Install with RPMS2.5.1.1. Compiling SRC.RPM'sThere is a problem compliling VMailMGR on RedHat 7.x distros (and maybe other new ones as well). To solve this you must edit the source files These files need to have an #include <string.h> added
Simply run the following command rpm --rebuild <package.src.rpm> -Example-
2.5.1.2. Installing RPM'sIf you compiled the source rpm, the binaries will be located in /usr/src/redhat/RPMS/i386/ or something similar. Simply run the following command for each package rpm -ivh <location>/<package.i386.rpm> -Example-
2.5.2. Install with debsRun the following commands for each package (as root) dpkg -i <package.deb> -Example-
2.5.3. Install with sourceThere is a problem compliling VMailMGR on RedHat 7.x distros (and maybe other new ones as well). To solve this you must edit the source files These files need to have an #include <string.h> added
Run the following commands (As non-root user) tar zxf <package.tar.gz> cd <newly created dir> ./configure make (As root) make install -Example-
3. Putting it all together3.1. Basic Qmail configYou will need to add your domains to the /var/qmail/control/virtualdomains file in the following format as is normal with qmail and VMailMgr. domain1.com:user1 For more detailed setup and config documentation visit the Qmail website http://www.qmail.org and the VMailMgr website http://www.vmailmgr.org 3.2. Tell Qmail to use VMailMgr for authenticationBy default qmail uses checkpassword for authentication, to tell Qmail to use VMailMgr for authentication type the following command:
3.3. Setup Courier-imap for VMailMgrCopy the VMailMgr auth libs to courier's directory. If you installed from RPM, then the vmailmgr-courier-imap RPM will have done this for you. Otherwise use this command:
Edit /usr/lib/courier-imap/etc/imapd and add authvmailmgr as the only entry in AUTHMODULES For more detailed setup and config documentation visit the Courier-imap website http://www.inter7.com/courierimap/ 3.4. Setup virtual domain with VMailMgrWith the user account that will be managing the domain go to their home dir and type:
This will setup the users home dir with the necessary structure to handle incoming email. You will probably want to create a email account by typing
For more detailed setup and config documentation visit the VMailMgr website http://www.vmailmgr.org 3.5. Starting the daemonsStarting the Qmail daemon. Qmail installs itself to autostart by some mysterious (to me) way. If you like init scripts you can get Larry Doolittle's (ldoolitta@ajlab.org) init.d script at http://qmail.area.com/init.d-script If you have the Larry's init.d script just do this.
Start VMailMgr daemon
Start Courier-imap damon
3.6. Some considerations leftQmail and the Maildirs may cause some email apps that run locally to not work. Visit the Qmail website http://www.qmail.org for details on email apps that have been patched to work with Maildirs. Courier-imap is not as widely used as Cyrus or UWash imap servers. As such, you may suffer from minor incompatibilities. Courier-imap is extremely well written, and tries to comply with the imap definition even if it means some imap clients wont work well. For details visit the Courier-imap website http://www.inter7.com/courierimap/. 3.7. Mail clientsWith the solution you should now have setup you will need to know that user accounts will be user@domain.com Netscape does not like this, so for netscape use user:domain.com I would like to suggest that you also checkout phpGroupWare at http://www.phpgroupware.org. I have built in support for vmailmgr into it already and it can give you an end result of a full Groupware solution to fend of MS Exchange/Outlook or Lotus Domino. If you decide to use a web based mail client, you will probably want to adjust courier-imaps MAXPERIP setting. By default it is 4, which is a bit low. Bump it up to something more sensible, like 10 - 50. Otherwise our webmail users will have problems connecting. This setting is in /usr/lib/courier-imap/etc/imapd. 3.9. The final wordIm tired, and wonder if anyone will ever use this, but I'm happy its done. I'm sure if you have read this far your tired too. Well, all I can hope is that you have Qmail, VMailMgr and Courier-imap working. If so, Enjoy! If not, bummer! O.K. readers, you're done for today. Feel free to send me your feedback, eternal gratitude, flowers, ecash, cars, oil sources etc. |