Linux.com

Home Learn Linux Linux Documentation Linux How Tos Qmail-VMailMgr-Courier-imap-HOWTO

Qmail-VMailMgr-Courier-imap-HOWTO

1. Introduction

Qmail, 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:

  • IP-based virtual server access (invisible to the POP3 user)

  • username-based access (username-virtualuser)

  • hostname-based access ( This e-mail address is being protected from spambots. You need JavaScript enabled to view it or virtualuser:virtual.host)

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.5. Working configurations

Though 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:

  • RedHat 7.2, Qmail 1.03+patches-18, VMailMgr 0.96.9, Courier-imap 1.4.3

  • RedHat 6.2, Linux 2.2.14, Qmail 1.03+patches-12, VMailMgr 0.96.6, Courier-imap 0.31

  • Mandrake 7.0, Linux 2.2.13, Qmail 1.03+patches-12, VMailMgr 0.96.6, Courier-imap 0.31

  • Debian Potato, Qmail 1.03, VMailMgr 0.96.9, Courier-imap 1.4.3


1.7. New versions

The 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. Comments

Comments on this HOWTO may be directed to the author Dan Kuykendall ( This e-mail address is being protected from spambots. You need JavaScript enabled to view it ).


1.9. Version History

v0.1 (April 18, 2000)

  • Preview version, wasn't in HOWTO format.

v1.0 (April 18, 2000)

  • Minor corrections.

  • Added details and put into HOWTO format.

v1.1 (April 19, 2000)

  • Minor corrections.

  • Restructured RPM install step.

  • Added source compile and install steps.

v1.2 (April 19, 2000)

  • Minor corrections.

  • Fixed source compile locations and install steps.

  • Added source compile and install steps.

v1.3 (April 19, 2000)

  • Minor corrections.

  • Built proper SGML version (using LinuxDoc DTD).

v1.4 (April 23, 2000)

  • Updated the Courier-IMAP setup information for new VMailMgr version.

  • Switched the license to the GNU FDL.

  • Other minor additions and corrections.

v1.5 (March 11, 2002)

  • Updated the Courier-IMAP setup information for new VMailMgr version.

  • Updated links to various websites.

  • Other minor additions and corrections.

  • Switched SGML from LinuxDOC to DocBook.


2. Component installation

2.1. Preparations

You have two options

  • Get and compile source rpms. This has the benefit of being able to review the source before compiling, and compiling for your specific setup.

  • Or simply get the binary rpms. This has the benefit of simplicity, and not having to worry about having the necessary libraries installed.

I recommend using Bruce Guenter's rpm releases, since they are well patched, and its what I used for building my systems.

2.1.1. Get source rpms

You will need:

For Courier-imap you must build the source rpm from the tar file (instructions will follow).

2.1.2. Get binary rpms

Qmail 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.

* For qmail, you must always compile yourself due to the license restrictions. ** For Courier-imap you must build the binary rpm from the tar file (instructions will follow) or email me for my binary rpm.

2.1.3. Get deb packages

There 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:

The packages by Hon are current and even include support for courier-imap, which was a great help for me, so I am going to use a combination of them for my examples. You can of course choose the ones you want for yourself, but your results may vary.

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.

(*) There may be minor differences in these instructions due to the use of the standard
Qmail package. Please review the documentation for Qmail and VMailMgr if any of
the files deviates from my instructions.

2.2. Install support packages

2.2.1. Install with RPMS

2.2.1.1. Compiling SRC.RPM's

Simply run the following command for each package rpm --rebuild <package.src.rpm> -Example-

  rpm --rebuild ucspi-tcp-0.88-1.src.rpm
  rpm --rebuild ucspi-unix-0.34-1.src.rpm  
  rpm --rebuild daemontools-0.70-3.src.rpm  
  rpm --rebuild supervise-scripts-3.3-1.src.rpm  
You may get dependancy errors. If you do then install the package that is being requested using the steps below. This may happen when you compile daemontools before installing ucspi-tcp.

2.2.1.2. Installing RPM's

If 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-

  rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-tcp-0.88-1.i386.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-unix-0.34-1.i386.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/daemontools-0.70-3.i386.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/supervise-scripts-3.3-1.i386.rpm

2.2.2. Install with debs

Run the following commands for each package (as root) dpkg -i <package.deb>

-Example-

  dpkg -i ucspi-tcp_0.88-3_i386.deb
  dpkg -i ucspi-unix_0.34-1_i386.deb
  dpkg -i daemontools_0.70-1_i386.deb
  dpkg -i supervise-scripts_3.3-6_i386.deb

2.3. Install Qmail

2.3.1. Install with RPMS


2.3.1.2. Installing RPM's

After 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-

  rpm -ivh /usr/src/redhat/RPMS/i386/qmail-1.03+patches-18.i386.rpm

* 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.5. Install VMailMgr

2.5.1. Install with RPMS

2.5.1.1. Compiling SRC.RPM's

There 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

lib/misc/exec.cc
lib/misc/keystrlist.cc
lib/misc/strlist.cc
lib/mystring/append.cc
authenticate/authvmailmgr.cc
The following needs to have an #include <stdlib.h>:
authenticate/vauthenticate.cc
authenticate/checkvpw.cc
The copies I have on http://www.clearrivertech.com/linux/HOWTO/supportfiles/rh72/ are already patched.

Simply run the following command rpm --rebuild <package.src.rpm> -Example-

  rpm --rebuild vmailmgr-0.96.9-1.src.rpm  

2.5.1.2. Installing RPM's

If 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-

  rpm -ivh /usr/src/redhat/RPMS/i386/vmailmgr-0.96.9-1.i386.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/VMailMgr-daemon-0.96.6-1.i386.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/vmailmgr-courier-imap-0.96.9-2.i386.rpm

2.5.3. Install with source

There 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

lib/misc/exec.cc
lib/misc/keystrlist.cc
lib/misc/strlist.cc
lib/mystring/append.cc
authenticate/authvmailmgr.cc
The following needs to have an #include <stdlib.h>:
authenticate/vauthenticate.cc
authenticate/checkvpw.cc
The copies I have on http://www.clearrivertech.com/linux/HOWTO/supportfiles/rh72/ are already patched.

Run the following commands (As non-root user) tar zxf <package.tar.gz> cd <newly created dir> ./configure make (As root) make install -Example-

  (As non-root user)
  tar zxf vmailmgr-0.96.9.tar.gz
  cd vmailmgr-0.96.9
  ./configure
  make
  (As root)
  make setup check or  make install
That should do it.

3. Putting it all together


3.3. Setup Courier-imap for VMailMgr

Copy 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:

  cp /usr/bin/authvmailmgr /usr/lib/courier-imap/libexec/authlib/

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 VMailMgr

With the user account that will be managing the domain go to their home dir and type:

  vsetup

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

  vadduser emailuser

For more detailed setup and config documentation visit the VMailMgr website http://www.vmailmgr.org


3.6. Some considerations left

Qmail 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/.

 

Comments

Subscribe to Comments Feed

Upcoming Linux Foundation Courses

  1. LFD312 Developing Applications For Linux
    05 Jan » 09 Jan - Virtual
    Details
  2. LFS220 Linux System Administration
    05 Jan » 08 Jan - Virtual
    Details
  3. LFD331 Developing Linux Device Drivers
    12 Jan » 16 Jan - Virtual
    Details

View All Upcoming Courses

Become an Individual Member
Check out the Friday Funnies

Sign Up For the Linux.com Newsletter


Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board