1<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
2        "http://www.w3.org/TR/html4/loose.dtd">
3
4<html>
5
6<head>
7
8<title>Postfix Address Classes </title>
9
10<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
11
12</head>
13
14<body>
15
16<h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix Address Classes </h1>
17
18<hr>
19
20<h2>Introduction</h2>
21
22<p> Postfix version 2.0 introduces the concept of address classes.
23This is a way of grouping recipient addresses by their delivery
24method.  The idea comes from discussions with Victor Duchovni.
25Although address classes introduced a few incompatibilities they
26also made it possible to improve the handling of hosted domains
27and of unknown recipients. </p>
28
29<p> This document provides information on the following topics: </p>
30
31<ul>
32
33<li><a href="#wtf">What are address classes good for?</a>
34
35<li><a href="#classes">What address classes does Postfix implement?</a>
36
37<li><a href="#improvements">Improvements compared to Postfix 1.1</a>
38
39<li><a href="#incompatibility">Incompatibilities with Postfix 1.1</a>
40
41</ul>
42
43<h2><a name="wtf">What are address classes good for?</a></h2>
44
45<p> Why should you care about address classes? This is how Postfix
46decides what mail to accept, and how to deliver it.  In other words,
47address classes are very important for the operation of Postfix. </p>
48
49<p> An address class is defined by three items. </p>
50
51<ul>
52
53<li> <p> The list of domains that are a member of the class: for
54example, all local domains, or all relay domains. </p>
55
56<li> <p> The default delivery transport. For example, the local,
57virtual or relay delivery transport (delivery transports are defined
58in master.cf). This helps to keep Postfix configurations simple,
59by avoiding the need for explicit routing information in transport
60maps. </p>
61
62<li> <p> The list of valid recipient addresses for that address
63class. The Postfix SMTP server rejects invalid recipients with
64"User unknown in &lt;name of address class here&gt; table".  This
65helps to keep the Postfix queue free of undeliverable MAILER-DAEMON
66messages. </p>
67
68</ul>
69
70<h2><a name="classes">What address classes does Postfix implement?</a></h2>
71
72<p> Initially the list of address classes is hard coded, but this
73is meant to become extensible. The summary below describes the main
74purpose of each class, and what the relevant configuration parameters
75are. </p>
76
77<p> The <a name="local_domain_class">local </a> domain class. </p>
78
79<ul>
80
81<li> <p> Purpose: final delivery for traditional UNIX system accounts
82and traditional Sendmail-style aliases. This is typically used for
83the canonical domains of the machine.  For a discussion of the
84difference between canonical domains, hosted domains and other
85domains, see the VIRTUAL_README file. </p>
86
87<li> <p> Domain names are listed with the mydestination parameter.
88This domain class also includes mail for <i>user@[ipaddress]</i>
89when the IP address is listed with the inet_interfaces or
90proxy_interfaces parameters. </p>
91
92<li> <p> Valid recipient addresses are listed with the local_recipient_maps
93parameter, as described in LOCAL_RECIPIENT_README. The Postfix SMTP
94server rejects invalid recipients with "User unknown in local
95recipient table". If the local_recipient_maps parameter value is
96empty, then the Postfix SMTP server accepts any address in the
97local domain class. </p>
98
99<li> <p> The mail delivery transport is specified with the
100local_transport parameter. The default value is <b>local:$myhostname</b>
101for delivery with the local(8) delivery agent. </p>
102
103</ul>
104
105<p> The <a name="virtual_alias_class">virtual alias </a> domain
106class. </p>
107
108<ul>
109
110<li> <p> Purpose: hosted domains where each recipient address is
111aliased to a local UNIX system account or to a remote address.  A
112virtual alias example is given in the VIRTUAL_README file. </p>
113
114<li> <p> Domain names are listed in virtual_alias_domains. The
115default value is $virtual_alias_maps for Postfix 1.1 compatibility.
116</p>
117
118<li> <p> Valid recipient addresses are listed with the virtual_alias_maps
119parameter. The Postfix SMTP server rejects invalid recipients with
120"User unknown in virtual alias table".  The default value is
121$virtual_maps for Postfix 1.1 compatibility. </p>
122
123<li> <p> There is no mail delivery transport parameter. Every
124address must be aliased to some other address. </p>
125
126</ul>
127
128<p> The <a name="virtual_mailbox_class">virtual mailbox </a> domain
129class. </p>
130
131<ul>
132
133<li> <p> Purpose: final delivery for hosted domains where each
134recipient address can have its own mailbox, and where users do not
135need to have a UNIX system account.  A virtual mailbox example is
136given in the VIRTUAL_README file. </p>
137
138<li> <p> Domain names are listed with the virtual_mailbox_domains
139parameter. The default value is $virtual_mailbox_maps for Postfix
1401.1 compatibility. </p>
141
142<li> <p> Valid recipient addresses are listed with the virtual_mailbox_maps
143parameter. The Postfix SMTP server rejects invalid recipients with
144"User unknown in virtual mailbox table". If this parameter value
145is empty, the Postfix SMTP server accepts all recipients for domains
146listed in $virtual_mailbox_domains.  </p>
147
148<li> <p> The mail delivery transport is specified with the
149virtual_transport parameter. The default value is <b>virtual</b>
150for delivery with the virtual(8) delivery agent. </p>
151
152</ul>
153
154<p> The <a name="relay_domain_class">relay </a> domain class. </p>
155
156<ul>
157
158<li> <p> Purpose: mail forwarding to remote destinations that list
159your system as primary or backup MX host. For a discussion of the
160basic configuration details, see the BASIC_CONFIGURATION_README
161document.  For a discussion of the difference between canonical
162domains, hosted domains and other domains, see the VIRTUAL_README
163file. </p>
164
165<li> <p> Domain names are listed with the relay_domains parameter.
166</p>
167
168<li> <p> Valid recipient addresses are listed with the relay_recipient_maps
169parameter. The Postfix SMTP server rejects invalid recipients with
170"User unknown in relay recipient table". If this parameter value
171is empty, the Postfix SMTP server accepts all recipients for domains
172listed with the relay_domains parameter. </p>
173
174<li> <p> The mail delivery transport is specified with the
175relay_transport parameter. The default value is <b>relay</b> which
176is a clone of the smtp(8) delivery agent. </p>
177
178</ul>
179
180<p> The <a name="default_domain_class">default </a> domain class.
181</p>
182
183<ul>
184
185<li> <p> Purpose: mail forwarding to the Internet on behalf of
186authorized clients. For a discussion of the basic configuration
187details, see the BASIC_CONFIGURATION_README file. For a discussion
188of the difference between canonical domains, hosted domains and
189other domains, see the VIRTUAL_README file. </p>
190
191<li> <p> This class has no destination domain table. </p>
192
193<li> <p> This class has no valid recipient address table. </p>
194
195<li> <p> The mail delivery transport is specified with the
196default_transport parameter. The default value is <b>smtp</b> for
197delivery with the smtp(8) delivery agent. </p>
198
199</ul>
200
201<h2><a name="improvements">Improvements compared to Postfix
2021.1</a></h2>
203
204<p> Postfix 2.0 address classes made the following improvements
205possible over earlier Postfix versions: </p>
206
207<ul>
208
209<li> <p> You no longer need to specify all the virtual(8) mailbox
210domains in the Postfix transport map. The virtual(8) delivery agent
211has become a first-class citizen just like local(8) or smtp(8).
212</p>
213
214<li> <p> On mail gateway systems, address classes provide separation
215of inbound mail relay traffic ($relay_transport) from outbound
216traffic ($default_transport). This eliminates a problem where
217inbound mail deliveries could become resource starved in the presence
218of a high volume of outbound mail. </p>
219
220<li> <p> The SMTP server rejects unknown recipients in a more
221consistent manner than was possible with Postfix version 1. This
222is needed to keep undeliverable mail (and bounced undeliverable
223mail) out of the mail queue. This is controlled by the
224smtpd_reject_unlisted_recipient configuration parameter. </p>
225
226<li> <p> As of Postfix version 2.1, the SMTP server also rejects
227unknown sender addresses (i.e. addresses that it would reject as
228unknown recipient addresses).  Sender "egress filtering" can help
229to slow down an email worm explosion.  This is controlled by the
230smtpd_reject_unlisted_sender configuration parameter. </p>
231
232</ul>
233
234<h2><a name="incompatibility">Incompatibilities with Postfix 1.1</a></h2>
235
236<p> Postfix 2.0 address classes introduce a few incompatible changes
237in documented behavior. In order to ease the transitions, new
238parameters have default values that are backwards compatible. </p>
239
240<ul>
241
242<li> <p> The virtual_maps parameter is replaced by virtual_alias_maps
243(for address lookups) and by virtual_alias_domains (for the names
244of what were formerly called "Postfix-style virtual domains"). </p>
245
246<p> For backwards compatibility with Postfix version 1.1, the new
247virtual_alias_maps parameter defaults to $virtual_maps, and the
248new virtual_alias_domains parameter defaults to $virtual_alias_maps.
249</p>
250
251<li> <p> The virtual_mailbox_maps parameter now has a companion
252parameter called virtual_mailbox_domains (for the names of domains
253served by the virtual delivery agent). The virtual_mailbox_maps
254parameter is now used for address lookups only. </p>
255
256<p> For backwards compatibility with Postfix version 1.1, the new
257virtual_mailbox_domains parameter defaults to $virtual_mailbox_maps.
258</p>
259
260<li> <p> Introduction of the relay_recipient_maps parameter.  The
261Postfix SMTP server can use this to block mail for relay recipients
262that don't exist. This list is empty by default, which means accept
263any recipient. </p>
264
265<li> <p> The local_recipient_maps feature is now turned on by
266default.  The Postfix SMTP server uses this to reject mail for
267unknown local recipients. See the LOCAL_RECIPIENT_README file hints
268and tips. </p>
269
270<li> <p> Introduction of the relay delivery transport in master.cf.
271This helps to avoid mail delivery scheduling problems on inbound
272mail relays when there is a lot of outbound mail, but may require
273that you update your "defer_transports" setting. </p>
274
275</ul>
276
277</body>
278
279</html>
280