receiving.html   [plain text]


<html>

<head>

<title>Postfix Anatomy - Receiving Mail</title>

</head>

<body>

<h1><a href="big-picture.html"><img src="small-picture.gif" width="115" height="45"></a> Postfix
Anatomy - Receiving Mail</h1>

<hr>

<a href="index.html">Up one level</a> | Receiving Mail | <a
href="delivering.html">Delivering Mail</a> | <a
href="backstage.html">Behind the Scenes</a> | <a
href="commands.html">Command-line Utilities</a>

<p>

When a message enters the Postfix mail system, the first stop on
the inside is the <b>incoming</b> queue.  The figure below shows
the main components that are involved with new mail. For an
explanation of the symbols used, click on the icon in the upper
left-hand corner of this page.

<p>

<center>

<img src="inbound.gif" width="497" height="213">

</center>

<p>

<ul>

<li>Mail is posted locally. The Postfix <a
href="sendmail.1.html">sendmail</a> program invokes the privileged
<a href="postdrop.1.html">postdrop</a> program which deposits the
message into the <b>maildrop</b> directory, where the message is
picked up by the <a href="pickup.8.html">pickup</a> daemon.  This
daemon does some sanity checks, in order to protect the rest of
the Postfix system.

<p>

<li>Mail comes in via the network.  The Postfix <a href="smtpd.8.html">SMTP
server</a> receives the message and does some sanity checks, in
order to protect the rest of the Postfix system.  The SMTP server
can be configured to implement <a href="uce.html">UCE</a> controls
on the basis of local or network-based black lists, DNS lookups,
and other client request information.

<p>

<li>Mail is generated internally by the Postfix system itself, in
order to return undeliverable mail to the sender.  The <a
href="bounce.8.html">bounce or defer</a> daemon brings the bad
news.

<p>

<li>Mail is forwarded by the <a href="local.8.html">local</a>
delivery agent, either via an entry in the system-wide <a
href="aliases.5.html">alias</a> database, or via an entry in a
per-user <a href="aliases.5.html">.forward</a> file. This is
indicated with the unlabeled arrow.

<p>

<li>Mail is generated internally by the Postfix system itself, in
order to notify the postmaster of a problem (this path is also
indicated with the unlabeled arrow). The Postfix system can be
configured to <a href="basic.html#notify">notify</a> the postmaster
of SMTP protocol problems, UCE policy violations, and so on.

<p>

<li>The <a href="cleanup.8.html">cleanup</a> daemon implements the
final processing stage for new mail. It adds missing <b>From:</b>
and other message headers, arranges for address rewriting to the
standard <i>user@fully.qualified.domain</i> form, and optionally
extracts recipient addresses from message headers. The <b> cleanup</b>
daemon inserts the result as a single queue file into the
<b>incoming</b> queue, and notifies the <a href="qmgr.8.html">queue
manager</a> of the arrival of new mail.  The <b>cleanup</b> daemon
can be configured to transform addresses on the basis of <a
href="rewrite.html#canonical">canonical</a> and <a
href="rewrite.html#virtual">virtual</a> table lookups.

<p>

<li>On request by the <b>cleanup</b> daemon, the <a
href="trivial-rewrite.8.html">trivial-rewrite</a> daemon rewrites
addresses to the standard <i>user@fully.qualified.domain</i> form.
The initial Postfix version does not implement a rewriting language.
Implementing one would take a lot of effort, and most sites do not
need it.  Instead, Postfix makes extensive use of <a
href="rewrite.html">table lookup</a>.

</ul>

<hr>

<a href="index.html">Up one level</a> | Receiving Mail | <a
href="delivering.html">Delivering Mail</a> | <a
href="backstage.html">Behind the Scenes</a> | <a
href="commands.html">Command-line Utilities</a>

</body>

</html>