nqmgr.8.html   [plain text]


<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>