D. J. Bernstein
Internet mail
qmail
Frequently asked questions

Efficiency


How do I tell qmail to do more deliveries at once? It's running only 20 parallel qmail-remote processes.

Answer: Decide how many deliveries you want to allow at once. Put that number into /var/qmail/control/concurrencyremote and restart qmail.

Make sure you set the ``descriptors'' or ``openfiles'' resource limit to at least double the concurrency plus 5, and the ``maxproc'' resource limit (if your system has one) to at least the concurrency plus 4. Otherwise qmail will unnecessarily defer deliveries whenever a big burst of mail shows up.

Note that qmail also imposes a compile-time concurrency limit, 120 by default. You can change this in conf-spawn at compile time.


Does qmail scale to extremely large queues?

Answer: Yes. qmail-send stores message retry times in a priority queue (using 8 bytes of RAM per queued message---for example, 0.8MB if you have a gigantic queue of 100000 messages) so that it can rapidly find the next message that needs to be delivered.

qmail's queue directories are split into 23 subdirectories, so the operating system's namei() searching takes negligible time even when there are thousands of queued messages.

The main limit on queue size is disk space. Each message uses one inode under the qmailq user, a few inodes under the qmails user, and several blocks of data depending on the message size. (If you want to limit the queue size, simply put an inode quota on the qmailq user.)


Does qmail back off from dead hosts?

Answer: Yes. qmail has three backoff features: