729 lines
29 KiB
HTML
729 lines
29 KiB
HTML
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Postfix Architecture Overview </title>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1> <img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix
|
|
Architecture Overview </h1>
|
|
|
|
<hr>
|
|
|
|
<h2> Introduction </h2>
|
|
|
|
<p> This document presents an overview of the Postfix architecture,
|
|
and is the place where you find a pointer to every Postfix command
|
|
or server program. The text gives the general context in which
|
|
each command or server program is used, and provides pointers to
|
|
documents with specific usage examples and background information.
|
|
</p>
|
|
|
|
<p> Topics covered by this document: </p>
|
|
|
|
<ul>
|
|
|
|
<li> <a href="#receiving"> How Postfix receives mail </a>
|
|
|
|
<li> <a href="#delivering"> How Postfix delivers mail </a>
|
|
|
|
<li> <a href="#behind"> Postfix behind the scenes </a>
|
|
|
|
<li> <a href="#commands"> Postfix support commands </a>
|
|
|
|
</ul>
|
|
|
|
<h2><a name="receiving"> How Postfix receives mail </a> </h2>
|
|
|
|
<p> When a message enters the Postfix mail system, the first stop
|
|
on the inside is the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a>. The figure below shows the
|
|
main processes that are involved with new mail. Names followed by
|
|
a number are Postfix commands or server programs, while unnumbered
|
|
names inside shaded areas represent Postfix queues. </p>
|
|
|
|
<blockquote>
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td colspan="4"> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="trivial-rewrite.8.html">trivial-<br>rewrite(8)</a> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td> Network </td> <td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="smtpd.8.html">smtpd(8)</a>
|
|
</td>
|
|
|
|
<td> </td>
|
|
|
|
<td rowspan="2" align="center"> <table> <tr> <td align="center">
|
|
^<br> <tt> | </tt> </td> <td align="center"> <tt> |<br> v </tt>
|
|
</td> </tr> </table> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="3"> </td> <td> <tt> \ </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td> Network </td> <td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="qmqpd.8.html">qmqpd(8)</a>
|
|
</td>
|
|
|
|
<td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="cleanup.8.html">cleanup(8)</a>
|
|
</td>
|
|
|
|
<td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a
|
|
href="QSHAPE_README.html#incoming_queue"> incoming </a> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="3"> </td> <td> <tt> / </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="2"> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="pickup.8.html">pickup(8)</a>
|
|
</td>
|
|
|
|
<td> <tt> <- </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a
|
|
href="QSHAPE_README.html#maildrop_queue"> maildrop </a> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="4" align="center"> </td>
|
|
|
|
<td align="center"> ^<br> <tt> | </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td> Local </td> <td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="sendmail.1.html">sendmail(1)</a>
|
|
</td>
|
|
|
|
<td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center" valign="middle"> <a href="postdrop.1.html">postdrop(1)</a>
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</blockquote>
|
|
|
|
<ul>
|
|
|
|
<li> <p> Network mail enters Postfix via the <a href="smtpd.8.html">smtpd(8)</a> or <a href="qmqpd.8.html">qmqpd(8)</a>
|
|
servers. These servers remove the SMTP or QMQP protocol encapsulation,
|
|
enforce some sanity checks to protect Postfix, and give the sender,
|
|
recipients and message content to the <a href="cleanup.8.html">cleanup(8)</a> server. The
|
|
<a href="smtpd.8.html">smtpd(8)</a> server can be configured to block unwanted mail, as
|
|
described in the <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document. </p>
|
|
|
|
<li> <p> Local submissions are received with the Postfix <a href="sendmail.1.html">sendmail(1)</a>
|
|
compatibility command, and are queued in the <a href="QSHAPE_README.html#maildrop_queue">maildrop queue</a> by
|
|
the privileged <a href="postdrop.1.html">postdrop(1)</a> command. This arrangement even works
|
|
while the Postfix mail system is not running. The local <a href="pickup.8.html">pickup(8)</a>
|
|
server picks up local submissions, enforces some sanity checks to
|
|
protect Postfix, and gives the sender, recipients and message
|
|
content to the <a href="cleanup.8.html">cleanup(8)</a> server. </p>
|
|
|
|
<li> <p> Mail from internal sources is given directly to the
|
|
<a href="cleanup.8.html">cleanup(8)</a> server. These sources are not shown in the figure, and
|
|
include: mail that is forwarded by the <a href="local.8.html">local(8)</a> delivery agent (see
|
|
next section), messages that are returned to the sender by the
|
|
<a href="bounce.8.html">bounce(8)</a> server (see second-next section), and postmaster
|
|
notifications about problems with Postfix. </p>
|
|
|
|
<li> <p> The <a href="cleanup.8.html">cleanup(8)</a> server implements the final processing
|
|
stage before mail is queued. It adds missing From: and other message
|
|
headers, transforms addresses as described in the <a href="ADDRESS_REWRITING_README.html">ADDRESS_REWRITING_README</a>
|
|
document. Optionally, the <a href="cleanup.8.html">cleanup(8)</a> server can be configured to
|
|
do light-weight content inspection with regular expressions as
|
|
described in the <a href="BUILTIN_FILTER_README.html">BUILTIN_FILTER_README</a> document. The <a href="cleanup.8.html">cleanup(8)</a>
|
|
server places the result as a single file into the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a>,
|
|
and notifies the queue manager (see next section) of the arrival
|
|
of new mail. </p>
|
|
|
|
<li> <p> The <a href="trivial-rewrite.8.html">trivial-rewrite(8)</a> server rewrites addresses to the
|
|
standard "user@fully.qualified.domain" form, as described in the
|
|
<a href="ADDRESS_REWRITING_README.html">ADDRESS_REWRITING_README</a> document. Postfix currently does not
|
|
implement a rewriting language, but a lot can be done via table
|
|
lookups and, if need be, regular expressions. </p>
|
|
|
|
</ul>
|
|
|
|
<h2> <a name="delivering"> How Postfix delivers mail </a> </h2>
|
|
|
|
<p> Once a message has reached the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> the next step is
|
|
to deliver it. The figure shows the main components of the Postfix
|
|
mail delivery apparatus. Names followed by a number are Postfix
|
|
commands or server programs, while unnumbered names inside shaded
|
|
areas represent Postfix queues. </p>
|
|
|
|
<blockquote>
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td rowspan="2" colspan="4"> </td>
|
|
|
|
<td rowspan="2" bgcolor="#f0f0ff" align="center"> <a href="trivial-rewrite.8.html">trivial-<br>rewrite(8)</a>
|
|
</td>
|
|
|
|
<td> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="smtp.8.html">smtp(8)</a> </td>
|
|
|
|
<td> <tt> -> </tt> </td> <td> Network </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td align="right"> <tt> / </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td rowspan="2" colspan="4"> </td>
|
|
|
|
<td rowspan="2" align="center"> <table> <tr> <td align="center">
|
|
^<br> <tt> | </tt> </td> <td align="center"> <tt> |<br> v </tt>
|
|
</td> </tr> </table> </td>
|
|
|
|
<td align="right"> <tt> - </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="lmtp.8.html">lmtp(8)</a> </td>
|
|
|
|
<td> <tt> -> </tt> </td> <td> Network </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td align="left"> <tt> / </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a
|
|
href="QSHAPE_README.html#incoming_queue"> incoming </a> </td>
|
|
|
|
<td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a
|
|
href="QSHAPE_README.html#active_queue"> active </a> </td>
|
|
|
|
<td> <tt> -> </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="qmgr.8.html">qmgr(8)</a> </td>
|
|
|
|
<td align="right"> <tt> --- </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="local.8.html">local(8)</a> </td>
|
|
|
|
<td> <tt> -> </tt> </td> <td> File, command </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td rowspan="2" colspan="2"> </td>
|
|
|
|
<td rowspan="2" align="center"> <table> <tr> <td align="center">
|
|
^<br> <tt> | </tt> </td> <td align="center"> <tt> |<br> v </tt>
|
|
</td> </tr> </table> </td>
|
|
|
|
<td rowspan="2" colspan="2"> </td>
|
|
|
|
<td align="left"> <tt> \ </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td align="right"> <tt> - </tt> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="virtual.8.html">virtual(8)</a> </td>
|
|
|
|
<td> <tt> -> </tt> </td> <td> File </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="2"> </td>
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a
|
|
href="QSHAPE_README.html#deferred_queue"> deferred </a> </td>
|
|
|
|
<td colspan="2"> </td>
|
|
|
|
<td align="right"> <tt> \ </tt> </td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="6">
|
|
|
|
<td bgcolor="#f0f0ff" align="center"> <a href="pipe.8.html">pipe(8)</a> </td>
|
|
|
|
<td> <tt> -> </tt> </td> <td> Command </td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</blockquote>
|
|
|
|
<ul>
|
|
|
|
<li> <p> The queue manager (the <a href="qmgr.8.html">qmgr(8)</a> server process in the
|
|
figure) is the heart of Postfix mail delivery. It contacts the
|
|
<a href="smtp.8.html">smtp(8)</a>, <a href="lmtp.8.html">lmtp(8)</a>, <a href="local.8.html">local(8)</a>, <a href="virtual.8.html">virtual(8)</a>, <a href="pipe.8.html">pipe(8)</a>, <a href="discard.8.html">discard(8)</a> or
|
|
<a href="error.8.html">error(8)</a> delivery agents, and sends a delivery request for one
|
|
or more recipient addresses. The <a href="discard.8.html">discard(8)</a> and <a href="error.8.html">error(8)</a> delivery
|
|
agents are special: they discard or bounce all mail, and are not
|
|
shown in the figure above. </p>
|
|
|
|
<p> The queue manager maintains a small <a href="QSHAPE_README.html#active_queue">active queue</a> with the
|
|
messages that it has opened for delivery. The <a href="QSHAPE_README.html#active_queue">active queue</a> acts as
|
|
a limited window on potentially large <a href="QSHAPE_README.html#incoming_queue">incoming</a> or <a href="QSHAPE_README.html#deferred_queue">deferred queues</a>.
|
|
The limited <a href="QSHAPE_README.html#active_queue">active queue</a> prevents the queue manager from running
|
|
out of memory under heavy load. </p>
|
|
|
|
<p> The queue manager maintains a separate <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> for mail
|
|
that cannot be delivered, so that a large mail backlog will not
|
|
slow down normal queue accesses. The queue manager's strategy for
|
|
delayed mail delivery attempts is described in the <a href="QSHAPE_README.html">QSHAPE_README</a>
|
|
and <a href="TUNING_README.html">TUNING_README</a> documents. </p>
|
|
|
|
<li> <p> The <a href="trivial-rewrite.8.html">trivial-rewrite(8)</a> server resolves each recipient
|
|
address according to its local and remote address class, as defined
|
|
in the <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> document. Additional routing information
|
|
can be specified with the optional <a href="transport.5.html">transport(5)</a> table. The
|
|
<a href="trivial-rewrite.8.html">trivial-rewrite(8)</a> server optionally queries the <a href="relocated.5.html">relocated(5)</a> table
|
|
for recipients whose address has changed; mail for such recipients is
|
|
returned to the sender with an explanation. </p>
|
|
|
|
<li> <p> The <a href="smtp.8.html">smtp(8)</a> client looks up a list of mail exchangers for
|
|
the destination host, sorts the list by preference, and tries each
|
|
server in turn until it finds a server that responds. It then
|
|
encapsulates the sender, recipient and message content as required
|
|
by the SMTP protocol; this includes conversion of 8-bit MIME to
|
|
7-bit encoding. </p>
|
|
|
|
<li> <p> The <a href="lmtp.8.html">lmtp(8)</a> client speaks a protocol similar to SMTP that
|
|
is optimized for delivery to mailbox servers such as Cyrus. The
|
|
advantage of this setup is that one Postfix machine can feed multiple
|
|
mailbox servers over LMTP. The opposite is true as well: one
|
|
mailbox server can be fed over LMTP by multiple Postfix machines.
|
|
The <a href="LMTP_README.html">LMTP_README</a> document gives examples of how to use the <a href="lmtp.8.html">lmtp(8)</a>
|
|
client. </p>
|
|
|
|
<li> <p> The <a href="local.8.html">local(8)</a> delivery agent understands UNIX-style mailboxes,
|
|
qmail-compatible maildir files, Sendmail-style system-wide <a href="aliases.5.html">aliases(5)</a>
|
|
databases, and Sendmail-style per-user .forward files. Multiple
|
|
local delivery agents can be run in parallel, but parallel delivery
|
|
to the same user is usually limited. </p>
|
|
|
|
<p> The <a href="local.8.html">local(8)</a> delivery agent has hooks for alternative forms of
|
|
local delivery: you can configure it to deliver to mailbox files
|
|
in user home directories, you can configure it to delegate mailbox
|
|
delivery to an external command such as procmail, or you can delegate
|
|
delivery to a different Postfix delivery agent. </p>
|
|
|
|
<li> <p> The <a href="virtual.8.html">virtual(8)</a> delivery agent is a bare-bones delivery
|
|
agent that delivers to UNIX-style mailbox or qmail-style maildir
|
|
files only. This delivery agent can deliver mail for multiple
|
|
domains, which makes it especially suitable for hosting lots of
|
|
small domains on a single machine. This is described in the
|
|
<a href="VIRTUAL_README.html">VIRTUAL_README</a> document. </p>
|
|
|
|
<li> <p> The <a href="pipe.8.html">pipe(8)</a> mailer is the outbound interface to other mail
|
|
processing systems (the Postfix <a href="sendmail.1.html">sendmail(1)</a> command being the
|
|
inbound interface). The interface is UNIX compatible: it provides
|
|
information on the command line and on the standard input stream,
|
|
and expects a process exit status code as defined in <sysexits.h>.
|
|
Examples of delivery via the <a href="pipe.8.html">pipe(8)</a> mailer are in the <a href="MAILDROP_README.html">MAILDROP_README</a>
|
|
and <a href="UUCP_README.html">UUCP_README</a> documents.
|
|
|
|
</ul>
|
|
|
|
<h2> <a name="behind"> Postfix behind the scenes </a> </h2>
|
|
|
|
<p> The previous sections gave an overview of how Postfix server
|
|
processes send and receive mail. These server processes rely on
|
|
other server processes that do things behind the scenes. The text
|
|
below attempts to visualize each service in its own context. As
|
|
before, names followed by a number are Postfix commands or server
|
|
programs, while unnumbered names inside shaded areas represent
|
|
Postfix queues. </p>
|
|
|
|
<ul>
|
|
|
|
<li> <p> The resident <a href="master.8.html">master(8)</a> server is the supervisor that keeps
|
|
an eye on the well-being of the Postfix mail system. It is typically
|
|
started at system boot time with the "postfix start" command, and
|
|
keeps running until the system goes down. The <a href="master.8.html">master(8)</a> server is
|
|
responsible for starting Postfix server processes to receive and
|
|
deliver mail, and for restarting servers that terminate prematurely
|
|
because of some problem. The <a href="master.8.html">master(8)</a> server is also responsible
|
|
for enforcing the server process count limits as specified in the
|
|
<a href="master.5.html"><b>master.cf</b></a> configuration file. The picture below gives the
|
|
program hierarchy when Postfix is started up. Only some of the mail
|
|
handling daemon processes are shown. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center" bgcolor="#f0f0ff">
|
|
<a href="postfix.1.html">postfix(1)</a> </td> </tr>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center"> |<br> |</td> </tr>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center" bgcolor="#f0f0ff">
|
|
postfix-script(1) </td> </tr>
|
|
|
|
<tr> <td> </td> <td> <table> <tr> <td> </td> <td> / </td> </tr>
|
|
<tr> <td> / </td> <td> </td> </tr> </table> </td> <td align="center">
|
|
|<br> |</td> <td> <table> <tr> <td> \ </td> <td> </td> </tr> <tr>
|
|
<td> </td> <td> \ </td> </tr> </table> </td> </tr>
|
|
|
|
<tr> <td align="center" bgcolor="#f0f0ff"> <a href="postsuper.1.html">postsuper(1)</a> </td> <td>
|
|
</td> <td align="center" bgcolor="#f0f0ff"> <a href="master.8.html">master(8)</a> </td> <td>
|
|
</td> <td align="center" bgcolor="#f0f0ff"> <a href="postlog.1.html">postlog(1)</a> </td> </tr>
|
|
|
|
<tr> <td> </td> <td> <table> <tr> <td> </td> <td> / </td> </tr>
|
|
<tr> <td> / </td> <td> </td> </tr> </table> </td> <td align="center">
|
|
|<br> |</td> <td> <table> <tr> <td> \ </td> <td> </td> </tr> <tr>
|
|
<td> </td> <td> \ </td> </tr> </table> </td> </tr>
|
|
|
|
<tr> <td align="center" bgcolor="#f0f0ff"> <a href="smtpd.8.html">smtpd(8)</a> </td> <td>
|
|
</td> <td align="center" bgcolor="#f0f0ff"> <a href="qmgr.8.html">qmgr(8)</a> </td> <td>
|
|
</td> <td align="center" bgcolor="#f0f0ff"> <a href="local.8.html">local(8)</a> </td> </tr>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="anvil.8.html">anvil(8)</a> server implements client connection and
|
|
request rate
|
|
limiting for all <a href="smtpd.8.html">smtpd(8)</a> servers. The <a href="TUNING_README.html">TUNING_README</a> document
|
|
provides guidance for dealing with mis-behaving SMTP clients. The
|
|
<a href="anvil.8.html">anvil(8)</a> service is available in Postfix version 2.2 and later.
|
|
</p>
|
|
|
|
<table>
|
|
|
|
<tr> <td> Network </td> <td> <tt> -> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <br> <a href="smtpd.8.html">smtpd(8)</a><br><br> </td> <td> <tt> <->
|
|
</tt> </td> <td align="center" bgcolor="#f0f0ff"> <br> <a href="anvil.8.html">anvil(8)</a><br><br>
|
|
</td> </tr>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="bounce.8.html">bounce(8)</a>, <a href="defer.8.html">defer(8)</a> and <a href="trace.8.html">trace(8)</a> servers each maintain
|
|
their own queue directory trees with per-message logfiles. This
|
|
information is used to send delivery or non-delivery notifications
|
|
to the sender. </p>
|
|
|
|
<p> The <a href="trace.8.html">trace(8)</a> service implements support for the Postfix "sendmail
|
|
-bv" and "sendmail -v" commands which produce reports about how
|
|
Postfix delivers mail, and is available with Postfix version 2.1
|
|
and later. See <a href="DEBUG_README.html#trace_mail"> DEBUG_README
|
|
</a> for examples. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td align="center" bgcolor="#f0f0ff"> <a href="cleanup.8.html">cleanup(8)</a> </td> <td
|
|
valign="middle"> <tt> -> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <a href="qmgr.8.html">qmgr(8)</a><br> Postfix<br> queue </td> <td
|
|
valign="middle"> <tt> -> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> Delivery<br> agents</td> </tr>
|
|
|
|
<tr> <td align="center"> ^<br> <tt> | </tt> </td> <td> </td> <td
|
|
align="center"> <tt> |<br> v </tt> </td> <td> </td> <td align="center">
|
|
<tt> |<br> v </tt> </td> </tr>
|
|
|
|
<tr> <td align="center"> (Non-)<br> delivery<br> notice </td> <td
|
|
valign="middle"> <tt> <- </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <a href="bounce.8.html">bounce(8)</a><br> <a href="defer.8.html">defer(8)</a><br> <a href="trace.8.html">trace(8)</a> </td> <td
|
|
valign="middle"> <tt> <- </tt> </td> <td align="center"> Queue
|
|
id,<br> recipient,<br> status</td> </tr>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center"> <table> <tr> <td
|
|
align="center"> ^<br> <tt> | </tt> </td> <td align="center"> <tt>
|
|
|<br> v </tt> </td> </tr> </table> </td> </tr>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center" bgcolor="#f0f0ff">
|
|
Per- <br> message<br> logfiles </td> </tr>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="flush.8.html">flush(8)</a> servers maintain per-destination logs and
|
|
implement both ETRN and "sendmail -qRdestination", as described
|
|
in the <a href="ETRN_README.html">ETRN_README</a> document. This moves selected queue files from
|
|
the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> back to the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> and requests their
|
|
delivery. The <a href="flush.8.html">flush(8)</a> service is available with Postfix version
|
|
1.0 and later. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td colspan="4"> </td> <td align="center" bgcolor="#f0f0ff">
|
|
<a href="QSHAPE_README.html#incoming_queue"> incoming </a><br>^
|
|
<br><a href="QSHAPE_README.html#deferred_queue"> deferred </a>
|
|
</td> </tr>
|
|
|
|
<tr> <td colspan="4"> </td> <td align="center"> ^<br> |</td> </tr>
|
|
|
|
<tr> <td align="center" bgcolor="#f0f0ff"> <a href="smtpd.8.html">smtpd(8)</a><br> <a href="sendmail.1.html">sendmail(1)</a><br>
|
|
<a href="postqueue.1.html">postqueue(1)</a> </td> <td> <tt> - </tt> </td> <td align="center">
|
|
Destination<br> to flush</td> <td> <tt> -> </tt> </td> <td
|
|
align="center" bgcolor="#f0f0ff"> <a href="flush.8.html">flush(8)</a> </td> <td> <tt> <-
|
|
</tt> </td> <td align="center"> Deferred<br> destination,<br> queue
|
|
id </td> <td> <tt> - </tt> </td> <td align="center" bgcolor="#f0f0ff">
|
|
Delivery<br> agents,<br> <a href="qmgr.8.html">qmgr(8)</a> </td> </tr>
|
|
|
|
<tr> <td colspan="4"> </td> <td align="center"> <table> <tr> <td
|
|
align="center"> ^<br> <tt> | </tt> </td> <td align="center"> <tt>
|
|
|<br> v </tt> </td> </tr> </table> </td> </tr>
|
|
|
|
<tr> <td colspan="4"> </td> <td align="center"> Per-dest-<br>
|
|
ination<br> logs </td> </tr>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="proxymap.8.html">proxymap(8)</a> servers provide read-only table lookup
|
|
service to Postfix processes. This overcomes chroot restrictions,
|
|
and reduces the number of open lookup tables by sharing one open
|
|
table among multiple processes. </p>
|
|
|
|
<li> <p> The <a href="scache.8.html">scache(8)</a> server maintains the connection cache for
|
|
the Postfix <a href="smtp.8.html">smtp(8)</a> client. When connection caching is enabled for
|
|
selected destinations, the <a href="smtp.8.html">smtp(8)</a> client does not disconnect
|
|
immediately after a mail transaction, but gives the connection to
|
|
the connection cache server which keeps the connection open for a
|
|
limited amount of time. The <a href="smtp.8.html">smtp(8)</a> client continues with some
|
|
other mail delivery request. Meanwhile, any <a href="smtp.8.html">smtp(8)</a> process can
|
|
ask the <a href="scache.8.html">scache(8)</a> server for that cached connection and reuse it
|
|
for mail delivery. As a safety measure, Postfix limits the number
|
|
of times that a connection may be reused. </p>
|
|
|
|
<p> When delivering mail to a destination with multiple mail servers,
|
|
connection caching can help to skip over a non-responding server,
|
|
and thus dramatically speed up delivery. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td align="center" bgcolor="#f0f0ff"> <br> <a href="smtp.8.html">smtp(8)</a> <br>
|
|
</td> <td> <tt> <-> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <br> <a href="scache.8.html">scache(8)</a> <br> </td> <td> <tt>
|
|
<-> </tt> </td> <td align="center" bgcolor="#f0f0ff"> <br>
|
|
<a href="smtp.8.html">smtp(8)</a> <br> </td>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="showq.8.html">showq(8)</a> servers list the Postfix queue status. This
|
|
is the queue listing service that does the work for the <a href="mailq.1.html">mailq(1)</a>
|
|
and <a href="postqueue.1.html">postqueue(1)</a> commands. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td> Output </td> <td> <tt> <- </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <a href="mailq.1.html">mailq(1)</a><br>
|
|
|
|
<a href="postqueue.1.html"> post-<br>queue(1) </a> <br> </td> <td>
|
|
<tt> <- </tt> </td> <td align="center" valign="middle"
|
|
bgcolor="#f0f0ff"> <a href="showq.8.html">showq(8)</a> </td> <td> <tt> <- </tt></td> <td
|
|
align="center" valign="middle" bgcolor="#f0f0ff"> Postfix<br> queue
|
|
</td> </tr>
|
|
|
|
</table>
|
|
|
|
<li> <p> The <a href="spawn.8.html">spawn(8)</a> servers run non-Postfix commands on request,
|
|
with the client connected via socket or FIFO to the command's
|
|
standard input, output and error streams. You can find examples of
|
|
its use in the <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> document. </p>
|
|
|
|
<li> <p> The <a href="tlsmgr.8.html">tlsmgr(8)</a> server runs when TLS (Transport Layer
|
|
Security, formerly known as SSL) is turned on in the Postfix <a href="smtp.8.html">smtp(8)</a>
|
|
client or <a href="smtpd.8.html">smtpd(8)</a> server. This process has two duties: </p>
|
|
|
|
<ul>
|
|
|
|
<li> <p> Maintain the pseudo-random number generator (PRNG) that
|
|
is used to seed the TLS engines in Postfix <a href="smtp.8.html">smtp(8)</a> client or <a href="smtpd.8.html">smtpd(8)</a>
|
|
server processes. The state of this PRNG is periodically saved to
|
|
a file, and is read when <a href="tlsmgr.8.html">tlsmgr(8)</a> starts up. </p>
|
|
|
|
<li> <p> Maintain the optional Postfix <a href="smtp.8.html">smtp(8)</a> client or <a href="smtpd.8.html">smtpd(8)</a>
|
|
server caches with TLS session keys. Saved keys can improve
|
|
performance by reducing the amount of computation at the start of
|
|
a TLS session. </p>
|
|
|
|
</ul>
|
|
|
|
<p> TLS support is available in Postfix version 2.2 and later.
|
|
Information about the Postfix TLS implementation is in the <a href="TLS_README.html">TLS_README</a>
|
|
document. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td>Network<tt>-> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <br> <a href="smtpd.8.html">smtpd(8)</a> <br> </td> <td colspan="2">
|
|
<tt> <---seed---<br><br><-session-> </tt> </td> <td
|
|
align="center" bgcolor="#f0f0ff"> <br> <a href="tlsmgr.8.html">tlsmgr(8)</a> <br> </td>
|
|
<td colspan="3"> <tt> ---seed---><br> <br><-session->
|
|
</tt> </td> <td align="center" bgcolor="#f0f0ff"> <br> <a href="smtp.8.html">smtp(8)</a> <br>
|
|
</td> <td> <tt> -></tt>Network </td> </tr>
|
|
|
|
<tr> <td colspan="3"> </td> <td align="right"> <table> <tr> <td>
|
|
</td> <td> / </td> </tr> <tr> <td> / </td> <td> </td> </tr> </table>
|
|
</td> <td align="center"> |<br> |</td> <td align="left"> <table>
|
|
<tr> <td> \ </td> <td> </td> </tr> <tr> <td> </td> <td> \ </td>
|
|
</tr> </table> </td> <td colspan="3"> </td> </tr>
|
|
|
|
<tr> <td colspan="2"> </td> <td align="center" bgcolor="#f0f0ff">
|
|
smtpd<br> session<br> cache </td> <td> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> PRNG<br> state <br>file </td> <td> </td> <td
|
|
align="center" bgcolor="#f0f0ff"> smtp<br> session<br> cache </td>
|
|
<td colspan="2"> </td> </tr>
|
|
|
|
</table>
|
|
|
|
|
|
<li> <p> The <a href="verify.8.html">verify(8)</a> server verifies that a sender or recipient
|
|
address is deliverable before the <a href="smtpd.8.html">smtpd(8)</a> server accepts it. The
|
|
<a href="verify.8.html">verify(8)</a> server injects probe messages into the Postfix queue and
|
|
processes status updates from delivery agents and/or queue manager.
|
|
This process is described in the <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a>
|
|
document. The <a href="verify.8.html">verify(8)</a> service is available with Postfix version
|
|
2.1 and later. </p>
|
|
|
|
<table>
|
|
|
|
<tr> <td> Network </td> <td> <tt> -> </tt> </td> <td align="center"
|
|
bgcolor="#f0f0ff"> <a href="smtpd.8.html">smtpd(8)</a> </td> <td> <tt> <-> </tt> </td>
|
|
<td align="center" bgcolor="#f0f0ff"> <a href="verify.8.html">verify(8)</a> </td> <td> <tt>
|
|
-> </tt> </td> <td align="center" bgcolor="#f0f0ff"> <a href="cleanup.8.html">cleanup(8)</a>
|
|
</td> <td> <tt> -> </tt> </td> <td align="center" bgcolor="#f0f0ff">
|
|
<a href="qmgr.8.html">qmgr(8)</a><br> Postfix <br>queue </td> <td> <tt> -> </tt> </td>
|
|
<td align="center" bgcolor="#f0f0ff"> Delivery<br> agents</td>
|
|
</tr>
|
|
|
|
<tr> <td colspan="5"> </td> <td align="right"> <table> <tr> <td>
|
|
\ </td> <td> </td> </tr> <tr> <td> </td> <td> \ </td> </tr> </table>
|
|
</td> <td align="center" valign="bottom"> <tt> <- </tt> </td>
|
|
<td valign="bottom"> <tt> <- </tt> </td> <td align="center">
|
|
<tt> |<br> v </tt> </td> <td align="center"> <table> <tr> <td>
|
|
</td> <td> / </td> </tr> <tr> <td> / </td> <td> </td> </tr> </table>
|
|
</td> </tr>
|
|
|
|
</table>
|
|
|
|
</ul>
|
|
|
|
<h2> <a name="commands"> Postfix support commands </a> </h2>
|
|
|
|
<p> The Postfix architecture overview ends with a summary of
|
|
command-line utilities for day-to-day use of the Postfix mail
|
|
system. Besides the Sendmail-compatible <a href="sendmail.1.html">sendmail(1)</a>, <a href="mailq.1.html">mailq(1)</a>, and
|
|
<a href="newaliases.1.html">newaliases(1)</a> commands, the Postfix system comes with it own
|
|
collection of command-line utilities. For consistency, these are
|
|
all named post<i>something</i>. </p>
|
|
|
|
<ul>
|
|
|
|
<li> <p> The <a href="postfix.1.html">postfix(1)</a> command controls the operation of the mail
|
|
system. It is the interface for starting, stopping, and restarting
|
|
the mail system, as well as for some other administrative operations.
|
|
This command is reserved to the super-user. </p>
|
|
|
|
<li> <p> The <a href="postalias.1.html">postalias(1)</a> command maintains Postfix <a href="aliases.5.html">aliases(5)</a> type
|
|
databases. This is the program that does the work for the
|
|
<a href="newaliases.1.html">newaliases(1)</a> command. </p>
|
|
|
|
<li> <p> The <a href="postcat.1.html">postcat(1)</a> command displays the contents of Postfix
|
|
queue files. This is a limited, preliminary utility. This program
|
|
is likely to be superseded by something more powerful that can also
|
|
edit Postfix queue files. </p>
|
|
|
|
<li> <p> The <a href="postconf.1.html">postconf(1)</a> command displays or updates Postfix <a href="postconf.5.html">main.cf</a>
|
|
parameters and displays system dependent information about the
|
|
supported file locking methods, and the supported types of lookup
|
|
tables. </p>
|
|
|
|
<li> <p> The <a href="postdrop.1.html">postdrop(1)</a> command is the mail posting utility that
|
|
is run by the Postfix <a href="sendmail.1.html">sendmail(1)</a> command in order to deposit mail
|
|
into the <a href="QSHAPE_README.html#maildrop_queue">maildrop queue</a> directory. </p>
|
|
|
|
<li> <p> The <a href="postkick.1.html">postkick(1)</a> command makes some Postfix internal
|
|
communication channels available for use in, for example, shell
|
|
scripts. </p>
|
|
|
|
<li> <p> The <a href="postlock.1.html">postlock(1)</a> command provides Postfix-compatible mailbox
|
|
locking for use in, for example, shell scripts. </p>
|
|
|
|
<li> <p> The <a href="postlog.1.html">postlog(1)</a> command provides Postfix-compatible logging
|
|
for shell scripts. </p>
|
|
|
|
<li> <p> The <a href="postmap.1.html">postmap(1)</a> command maintains Postfix lookup tables
|
|
such as <a href="canonical.5.html">canonical(5)</a>, <a href="virtual.5.html">virtual(5)</a> and others. It is a cousin of the
|
|
UNIX makemap command. </p>
|
|
|
|
<li> <p> The <a href="postqueue.1.html">postqueue(1)</a> command is the privileged command that
|
|
is run by Postfix <a href="sendmail.1.html">sendmail(1)</a> and <a href="mailq.1.html">mailq(1)</a> in order to flush or
|
|
list the
|
|
mail queue. </p>
|
|
|
|
<li> <p> The <a href="postsuper.1.html">postsuper(1)</a> command maintains the Postfix queue. It
|
|
removes old temporary files, and moves queue files into the right
|
|
directory after a change in the hashing depth of queue directories.
|
|
This command is run at mail system startup time and when Postfix
|
|
is restarted. </p>
|
|
|
|
</ul>
|
|
|
|
</body>
|
|
|
|
</html>
|