Thursday, December 7, 2017

IndiMail Queue Mechanism

Indimail has the ability of configuring multiple local and remote queues. A queue is a location on your hard disk where email are deposited before actual delivery. When you have massive injecting rates, your software may place multiple files in a single directory. This drastically reduces file system performance. IndiMail avoids this by injecting your email in a queue consisting of multiple directories and mails distributed as evenly as possible across these directories.


Balancing of emails across multiple queues is achieved by the program qmail-multi(8), which is actuall just a qmail-queue(8) replacement. Any qmail-queue frontend can use qmail-multi. The list of qmail-queue frontends in IndiMail are
  1. sendmail
  2. qmail-inject
  3. qmail-smtpd
  4. qmail-qmqpd
  5. qmail-qmtpd
  6. qreceipt
  7. condredirect
  8. dotforward
  9. fastforward
  10. forward
  11. maildirserial
  12. new-inject
  13. ofmipd
  14. replier
  15. rrforward



You just need to configure the following environment variables to have the qmail-queue(8) frontends using qmail-multi(8)
1. QUEUE_BASE – Base directory where all queues will be placed
2. QUEUE_COUNT – number of queues
3. QUEUE_START – numeric prefix of the first queue
e.g. If you want IndiMail to use 10 queues, this is what you will do

% su
# for i in qmail-smtpd.25 qmail-smtpd.465 qmail-smtpd.587 qmail-send.25 \
> qmail-qmqpd.628 qmail-qmtpd.209
> do
> echo 10 > /service/$i/variables/QUEUE_COUNT
> echo “/var/indimail/queue” > /service/$i/variables/QUEUE_BASE
> echo “1” > /service/$i/variables/QUEUE_START
> done
#

You also need to make sure that you have ten queues in /var/indimail/queue.

% su
# for i 1 2 3 4 5 6 7 8 9 10
> do
> /usr/bin/queue-fix /var/indimail/queue/queue”$i” > /dev/null
> done
# exit
% ls -ld var/indimail/queue/queue*
drwxr-x---. 12 qmailq qmail 4096 Mar 30 2017 /var/indimail/queue/queue1
drwxr-x---. 12 qmailq qmail 4096 Dec 7 10:45 /var/indimail/queue/queue10
drwxr-x---. 12 qmailq qmail 4096 Mar 30 2017 /var/indimail/queue/queue2
drwxr-x---. 12 qmailq qmail 4096 Mar 30 2017 /var/indimail/queue/queue3
drwxr-x---. 12 qmailq qmail 4096 Mar 30 2017 /var/indimail/queue/queue4
drwxr-x---. 12 qmailq qmail 4096 Mar 30 2017 /var/indimail/queue/queue5
drwxr-x---. 12 qmailq qmail 4096 Dec 7 10:45 /var/indimail/queue/queue6
drwxr-x---. 12 qmailq qmail 4096 Dec 7 10:45 /var/indimail/queue/queue7
drwxr-x---. 12 qmailq qmail 4096 Dec 7 10:45 /var/indimail/queue/queue8
drwxr-x---. 12 qmailq qmail 4096 Dec 7 10:45 /var/indimail/queue/queue9

Now all you need is restart of all services to use the new QUEUE_BASE, QUEUE_COUNT, QUEUE_START environment variables

% sudo svc -d /service/qmail smtpd* /service/qmail-send.25 /service/qmail-qm?pd.*
% sudo svc -u /service/qmail smtpd* /service/qmail send.25 /service/qmail-qm?pd.*

No comments:

IndiMail Queue Mechanism

Indimail has the ability of configuring multiple local and remote queues. A queue is a location on your hard disk where email are deposited ...