1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
<html> <head> </head> <body> <pre>
NQMGR(8) NQMGR(8)
<b>NAME</b>
nqmgr - Postfix queue manager
<b>SYNOPSIS</b>
<b>nqmgr</b> [generic Postfix daemon options]
<b>DESCRIPTION</b>
The <b>nqmgr</b> daemon awaits the arrival of incoming mail and
arranges for its delivery via Postfix delivery processes.
The actual mail routing strategy is delegated to the <a href="trivial-rewrite.8.html"><b>triv-</b></a>
<a href="trivial-rewrite.8.html"><b>ial-rewrite</b>(8)</a> daemon. This program expects to be run
from the <a href="master.8.html"><b>master</b>(8)</a> process manager.
Mail addressed to the local <b>double-bounce</b> address is
silently discarded. This stops potential loops caused by
undeliverable bounce notifications.
<b>MAIL</b> <b>QUEUES</b>
The <b>nqmgr</b> daemon maintains the following queues:
<b>incoming</b>
Inbound mail from the network, or mail picked up by
the local <b>pickup</b> agent from the <b>maildrop</b> directory.
<b>active</b> Messages that the queue manager has opened for
delivery. Only a limited number of messages is
allowed to enter the <b>active</b> queue (leaky bucket
strategy, for a fixed delivery rate).
<b>deferred</b>
Mail that could not be delivered upon the first
attempt. The queue manager implements exponential
backoff by doubling the time between delivery
attempts.
<b>corrupt</b>
Unreadable or damaged queue files are moved here
for inspection.
<b>hold</b> Messages that are kept "on hold" are kept here
until someone sets them free.
<b>DELIVERY</b> <b>STATUS</b> <b>REPORTS</b>
The <b>nqmgr</b> daemon keeps an eye on per-message delivery sta-
tus reports in the following directories. Each status
report file has the same name as the corresponding message
file:
<b>bounce</b> Per-recipient status information about why mail is
bounced. These files are maintained by the
<a href="bounce.8.html"><b>bounce</b>(8)</a> daemon.
<b>defer</b> Per-recipient status information about why mail is
delayed. These files are maintained by the
<a href="defer.8.html"><b>defer</b>(8)</a> daemon.
The <b>nqmgr</b> daemon is responsible for asking the <a href="bounce.8.html"><b>bounce</b>(8)</a>
or <a href="defer.8.html"><b>defer</b>(8)</a> daemons to send non-delivery reports.
<b>STRATEGIES</b>
The queue manager implements a variety of strategies for
either opening queue files (input) or for message delivery
(output).
<b>leaky</b> <b>bucket</b>
This strategy limits the number of messages in the
<b>active</b> queue and prevents the queue manager from
running out of memory under heavy load.
<b>fairness</b>
When the <b>active</b> queue has room, the queue manager
takes one message from the <b>incoming</b> queue and one
from the <b>deferred</b> queue. This prevents a large mail
backlog from blocking the delivery of new mail.
<b>slow</b> <b>start</b>
This strategy eliminates "thundering herd" problems
by slowly adjusting the number of parallel deliver-
ies to the same destination.
<b>round</b> <b>robin</b>
The queue manager sorts delivery requests by desti-
nation. Round-robin selection prevents one desti-
nation from dominating deliveries to other destina-
tions.
<b>exponential</b> <b>backoff</b>
Mail that cannot be delivered upon the first
attempt is deferred. The time interval between
delivery attempts is doubled after each attempt.
<b>destination</b> <b>status</b> <b>cache</b>
The queue manager avoids unnecessary delivery
attempts by maintaining a short-term, in-memory
list of unreachable destinations.
<b>preemptive</b> <b>message</b> <b>scheduling</b>
The queue manager attempts to minimize the average
per-recipient delay while still preserving the cor-
rect per-message delays, using a sophisticated pre-
emptive message scheduling.
<b>TRIGGERS</b>
On an idle system, the queue manager waits for the arrival
of trigger events, or it waits for a timer to go off. A
trigger is a one-byte message. Depending on the message
received, the queue manager performs one of the following
actions (the message is followed by the symbolic constant
used internally by the software):
<b>D</b> <b>(QMGR</b><i>_</i><b>REQ</b><i>_</i><b>SCAN</b><i>_</i><b>DEFERRED)</b>
Start a deferred queue scan. If a deferred queue
scan is already in progress, that scan will be
restarted as soon as it finishes.
<b>I</b> <b>(QMGR</b><i>_</i><b>REQ</b><i>_</i><b>SCAN</b><i>_</i><b>INCOMING)</b>
Start an incoming queue scan. If an incoming queue
scan is already in progress, that scan will be
restarted as soon as it finishes.
<b>A</b> <b>(QMGR</b><i>_</i><b>REQ</b><i>_</i><b>SCAN</b><i>_</i><b>ALL)</b>
Ignore deferred queue file time stamps. The request
affects the next deferred queue scan.
<b>F</b> <b>(QMGR</b><i>_</i><b>REQ</b><i>_</i><b>FLUSH</b><i>_</i><b>DEAD)</b>
Purge all information about dead transports and
destinations.
<b>W</b> <b>(TRIGGER</b><i>_</i><b>REQ</b><i>_</i><b>WAKEUP)</b>
Wakeup call, This is used by the master server to
instantiate servers that should not go away for-
ever. The action is to start an incoming queue
scan.
The <b>nqmgr</b> daemon reads an entire buffer worth of triggers.
Multiple identical trigger requests are collapsed into
one, and trigger requests are sorted so that <b>A</b> and <b>F</b> pre-
cede <b>D</b> and <b>I</b>. Thus, in order to force a deferred queue
run, one would request <b>A</b> <b>F</b> <b>D</b>; in order to notify the queue
manager of the arrival of new mail one would request <b>I</b>.
<b>STANDARDS</b>
None. The <b>nqmgr</b> daemon does not interact with the outside
world.
<b>SECURITY</b>
The <b>nqmgr</b> daemon is not security sensitive. It reads sin-
gle-character messages from untrusted local users, and
thus may be susceptible to denial of service attacks. The
<b>nqmgr</b> daemon does not talk to the outside world, and it
can be run at fixed low privilege in a chrooted environ-
ment.
<b>DIAGNOSTICS</b>
Problems and transactions are logged to the syslog daemon.
Corrupted message files are saved to the <b>corrupt</b> queue for
further inspection.
Depending on the setting of the <b>notify</b><i>_</i><b>classes</b> parameter,
the postmaster is notified of bounces and of other trou-
ble.
<b>BUGS</b>
A single queue manager process has to compete for disk
access with multiple front-end processes such as <b>smtpd</b>. A
sudden burst of inbound mail can negatively impact out-
bound delivery rates.
<b>CONFIGURATION</b> <b>PARAMETERS</b>
The following <b>main.cf</b> parameters are especially relevant
to this program. See the Postfix <b>main.cf</b> file for syntax
details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change.
<b>Miscellaneous</b>
<b>allow</b><i>_</i><b>min</b><i>_</i><b>user</b>
Do not bounce recipient addresses that begin with
'-'.
<b>queue</b><i>_</i><b>directory</b>
Top-level directory of the Postfix queue.
<b>Active</b> <b>queue</b> <b>controls</b>
In the text below, <i>transport</i> is the first field in a <b>mas-</b>
<b>ter.cf</b> entry.
<b>qmgr</b><i>_</i><b>clog</b><i>_</i><b>warn</b><i>_</i><b>time</b>
Minimal delay between warnings that a specific des-
tination is clogging up the active queue. Specify 0
to disable.
<b>qmgr</b><i>_</i><b>message</b><i>_</i><b>active</b><i>_</i><b>limit</b>
Limit the number of messages in the active queue.
<b>qmgr</b><i>_</i><b>message</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Limit the number of in-memory recipients.
This parameter also limits the size of the short-
term, in-memory destination cache.
<b>qmgr</b><i>_</i><b>message</b><i>_</i><b>recipient</b><i>_</i><b>minimum</b>
Per message minimum of in-memory recipients.
<b>default</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Default limit on the number of in-memory recipients
per transport.
<i>transport_</i><b>recipient</b><i>_</i><b>limit</b>
Limit on the number of in-memory recipients, for
the named message <i>transport</i>.
<b>default</b><i>_</i><b>extra</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Default limit on the total number of per transport
in-memory recipients that the preempting messages
can have.
<i>transport_</i><b>extra</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Limit on the number of in-memory recipients which
all preempting messages delivered by the transport
<i>transport</i> can have.
<b>Timing</b> <b>controls</b>
<b>minimal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
Minimal time in seconds between delivery attempts
of a deferred message.
This parameter also limits the time an unreachable
destination is kept in the short-term, in-memory
destination status cache.
<b>maximal</b><i>_</i><b>backoff</b><i>_</i><b>time</b>
Maximal time in seconds between delivery attempts
of a deferred message.
<b>maximal</b><i>_</i><b>queue</b><i>_</i><b>lifetime</b>
Maximal time in days a message is queued before it
is sent back as undeliverable.
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b>
Time in seconds between deferred queue scans. Queue
scans do not overlap.
<b>transport</b><i>_</i><b>retry</b><i>_</i><b>time</b>
Time in seconds between attempts to contact a bro-
ken delivery transport.
<b>Concurrency</b> <b>controls</b>
<b>initial</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b>
Initial per-destination concurrency level for par-
allel delivery to the same destination.
<b>default</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>
Default limit on the number of parallel deliveries
to the same destination.
<i>transport_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>
Limit on the number of parallel deliveries to the
same destination, for delivery via the named mes-
sage <i>transport</i>.
<b>Recipient</b> <b>controls</b>
<b>default</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Default limit on the number of recipients per mes-
sage transfer.
<i>transport_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Limit on the number of recipients per message
transfer, for the named message <i>transport</i>.
<b>Message</b> <b>scheduling</b>
<i>transport_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>cost</b> (valid range: 0,2,3...)
This parameter basically controls how often a mes-
sage delivered by <i>transport</i> can be preempted by
another message. An internal per-message/transport
counter is incremented by one for each <i>trans-</i>
<i>port_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>cost</b> deliveries handled by
<i>transport</i>. This counter represents the number of
"available delivery slots" for use by other mes-
sages. Current message can be preempted by another
message when that other message can be delivered
using less <i>transport</i> agents than the value of the
"available delivery slots" counter.
Value equal to 0 disables the message preemption
for <i>transport</i>.
<i>transport_</i><b>minimum</b><i>_</i><b>delivery</b><i>_</i><b>slots</b>
Message preemption is not attempted at all whenever
a message that can't ever accumulate at least
<i>transport_</i><b>minimum</b><i>_</i><b>delivery</b><i>_</i><b>slots</b> available delivery
slots is being delivered by <i>transport</i>.
<i>transport_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>discount</b> (valid range: 0..100)
<i>transport_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>loan</b>
These parameters speed up the moment when a message
preemption can happen. Instead of waiting until
the full amount of delivery slots required is
available, the preemption can happen when <i>trans-</i>
<i>port_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>discount</b> percent of the required
amount plus <i>transport_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>loan</b> still
remains to be accumulated. Note that the full
amount will still have to be accumulated before
another preemption can take place later.
<b>default</b><i>_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>cost</b>
<b>default</b><i>_</i><b>minimum</b><i>_</i><b>delivery</b><i>_</i><b>slots</b>
<b>default</b><i>_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>discount</b>
<b>default</b><i>_</i><b>delivery</b><i>_</i><b>slot</b><i>_</i><b>loan</b>
Default values for the transport specific parame-
ters described above.
<b>SEE</b> <b>ALSO</b>
<a href="master.8.html">master(8)</a>, process manager
syslogd(8) system logging
<a href="trivial-rewrite.8.html">trivial-rewrite(8)</a>, address routing
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Scheduler enhancements:
Patrik Rak
Modra 6
155 00, Prague, Czech Republic
NQMGR(8)
</pre> </body> </html>
|