Skip to content

qmail queue clients.7

Manvendra Bhangui edited this page Feb 25, 2024 · 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 qmail-queue(8) to place messages into the outgoing queue. Messages placed into the outgoing 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. Error message if any is written to 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 into the outgoing queue. This opens the possibility to act on the mail message before it reaches the outgoing queue. indimail-mta provides 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 into the outgoing queue. NULLQUEUE variable takes precedence over QMAILQUEUE.

The following programs are used in .qmail and use qmail-queue(8) to place messages into the outgoing 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 place messages into the outgoing 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 into the outgoing queue. The rrt(1) program is used by qmail-remote(8).

The maildirserial(1) program uses qmail-queue(8) to queue bounces into the outgoing 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 place messages into the outgoing 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 into the outgoing 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-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 read by qmail-queue(8) and 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 writes nothing to descriptor 2, then the following error message will be 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. In this case qmail-queue(8) will not read anything written on descriptor 2 by the qmail-queue frontends. Also an exit value of 88 will result in the following error message returned to the client.

Zqq temporary problem (#4.3.0)

Exit value of 88 is typically used by a qmail-queue frontend for reporting a non-standard error message not handled by qmail-queue(8) currently.

SEE ALSO

qmail-queue(8)

Clone this wiki locally