Skip to content

qmail queue clients.7

Manvendra Bhangui edited this page Oct 5, 2022 · 6 revisions

NAME

qmail-queue-clients - use qmail-queue / qmail-queue frontend to process messages

SYNOPSIS

qmail-queue-clients [ options ]

DESCRIPTION

qmail-queue-clients use the program qmail-queue(8) to queue messages to the indimail queue. Messages queued to the indimail queue are picked up for delivery to their destination by programs like qmail-send(8), slowq-send(8) and qmta-send(8). qmail-queue(8) reads a mail message from descriptor 0. It then reads envelope information from descriptor 1. It places the message into the outgoing queue for future delivery by qmail-send. Error message if any is read from descriptor 2. By setting the environment variable QMAILQUEUE to full path to a program, these clients can call an alternate program, known as qmail-queue frontend instead of qmail-queue(8). A qmail-queue frontend too read mail message from descriptor 0. It then reads envelope information from descriptor 1. This allow a qmail-queue frontend to intercept mail message before it goes to qmail-queue. This opens the possibility to act on the mail message before it reaches the indimail queue. indimail-mta provides qmail-dk(8), qmail-dkim(8), qmail-spamfilter(8), qmail-multi(8), and qmail-nullqueue(8) as qmail queue frontends.

If the environment variable NULLQUEUE is set, the program /usr/sbin/qmail-nullqueue is used instead of qmail-queue(8), which causes messages to be discarded instead of getting queued to the indimail queue. NULLQUEUE variable takes precedence over QMAILQUEUE.

The following programs are used in .qmail and use qmail-queue(8) to queue messages to the indimail queue.

condredirect(1) - in .qmail: |condredirect newaddress program [arg ...]
filterto(1)     - in .qmail: |filterto address prog [arg ...]
forward(1)      - in .qmail: |forward address ....
qnotify(1)      - in .qmail: |qnotify [-h] [-n]
qreceipt(1)     - in .qmail: |qreceipt youraddress
replier(1)      - in .qmail: |replier dir address program [arg ...]
rrforward(1)    - in .qmail: |rrforward .qmailrr[-extension] address ...
dot-forward(1)  - in ~/.qmail: |dot-forward [-nN] file ...
fastforward(1)  - in .qmail-default: |fastforward [-nNpPdD ] cdb
srsfilter(1)    - in .qmail-srs-default: |srsfilter

The following programs are command line programs that use qmail-queue(8) to queue messages to the indimail queue

qmail-inject(8) - preprocess and send a mail message
new-inject(8)   - preprocess a mail message

The rrt(1) program uses qmail-queue(8) to queue return receipts to the indimail queue. The rrt(1) program is used by qmail-remote(8).

The maildirserial(1) program uses qmail-queue(8) to queue bounces to the indimail queue.

The qmail-local(8) uses qmail-queue(8) to when forwarding messages.

The following programs usually run as daemons and use qmail-queue(8) to queue messages to the indimail queue for messages submitted by it's clients.

qmail-qmqpd(8) - receive mail via QMQP
qmail-qmtpd(8) - receive mail via QMTP
qmail-smtpd(8) - receive mail via SMTP
mini-smtpd(8)  - recieive mail via SMTP
ofmipd(8)      - accept outgoing mail through OFMIP

The following program use qmail-queue(8) to queue bounces to the indimail queue.

qmail-send(8) - deliver mail messages from the queue with rate control
slowq-send(8) - deliver mail messages from the queue with rate control
qmta-send(8)  - standalone mail delivery program

The following programs are qmail-queue frontends and get called by the above programs by setting the QMAILQUEUE environment variable.

qmail-dk(8)         - sign/verify using domainkeys
qmail-dkim(8)       - sign/verify using DKIM
qmail-spamfilter(8) - spam filter
qmail-multi(8)      - queue multiplexor and filter
qmail-nullqueue(8)  - disappear a message

qmail-queue frontends use specific exit codes to return error messages to the client. These clients can report these errors in a human readable format. Following is the list of standard messages that these clients report.

An error message starting with 'D' means that it is a permanent error.
An error message starting with 'Z' means that it is a temporary error.

Exit Code	Error Message
11	Dqq envelope address too long (#5.1.3)
31	Dqq mail server permanently rejected message (#5.3.0)
32	Dqq spam or junk mail threshold exceeded (#5.7.1) /*- qmail-spamfiter */
33	Dqq message contains virus (#5.7.1)
34	Dqq message contains banned attachment (#5.7.1)
35	Dqq private key file does not exist (#5.3.5)
50	Zqq unable to get privilege to run virus scanner (#4.3.0) /*- qhpsi */
51	Zqq out of memory (#4.3.0)
52	Zqq timeout (#4.3.0)
53	Zqq write error or disk full (#4.3.0)
54	Zqq read error (#4.3.0)
55	Zqq unable to read configuration (#4.3.0)
56	Zqq trouble making network connection (#4.3.0)
57	Zqq unable to open shared object/plugin (#4.3.0)
58	Zqq unable to resolve symbol in shared object/plugin (#4.3.0)
59	Zqq unable to close shared object/plugin (#4.3.0)
60	Zqq trouble creating pipes/sockets (#4.3.0)
61	Zqq trouble in home directory (#4.3.0)
62	Zqq unable to access mess file (#4.3.0)
63	Zqq trouble doing cd to root directory (#4.3.0)
64	Zqq trouble syncing message to disk (#4.3.0)
65	Zqq trouble creating files in intd. (#4.3.0)
66	Zqq trouble linking todofn to intdfn (#4.3.0)
67	Zqq trouble linking messfn to pidfn (#4.3.0)
68	Zqq trouble creating temporary files (#4.3.0)
69	Zqq trouble syncing dir to disk (#4.3.0)
70	Zqq trouble with pid file (#4.3.0)
71	Zqq mail server temporarily rejected message (#4.3.0)
72	Zqq connection to mail server timed out (#4.4.1)
73	Zqq connection to mail server rejected (#4.4.1)
74	Zqq communication with mail server failed (#4.4.2)
75	Zqq unable to exec (#4.3.0)
76	Zqq temporary problem with SPAM filter (#4.3.0)
77	Zqq unable to run QHPSI scanner (#4.3.0)
78	Zqq trouble getting uids/gids (#4.3.0)
79	Zqq envelope format error (#4.3.0)
80	Zqq trouble removing intdfn
91,81	Zqq internal bug (#4.3.0)
87	Zqq mail system incorrectly configured. (#4.3.5)
82,120	Zqq unable to exec qq (#4.3.0)
121	Zqq unable to fork (#4.3.0)
122	Zqq waitpid surprise (#4.3.0)
123	Zqq crashed (#4.3.0)

Apart from the above exit codes, if a qmail-queue frontend exits with a value from 11 to 40, the error message Dqq permanent problem (#5.3.0) will be returned to the client. For exit code from 11 to 40, the error message will be returned to the client.

Zqq temporary problem (#4.3.0)

qmail-queue frontends can use custom error message if they exit 88. In this case any string written to descriptor 2 by the qmail-queue frontend will be returned as the error message to the client. e.g. qmail-dkim prints the following message on descriptor 2 to indicate that the private key file couldn't be read.

Zunable to read private key. #(4.3.0)

If a qmail-queue frontend exits 88 but prints nothing on descriptor 2, then the following error message will returned to the client.

Zqq temporary problem (#4.3.0)

The environment variable ERROR_FD can be set to any other open file
descriptor instead of 2. If ERROR_FD is set as -1, custom error
messages gets disabled.

SEE ALSO

qmail-queue(8)

Clone this wiki locally