Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / README_FILES / ADDRESS_VERIFICATION_README
blob918dc71ad8a7aff4913395abac5fb1af3f50d7b4
1 P\bPo\bos\bst\btf\bfi\bix\bx A\bAd\bdd\bdr\bre\bes\bss\bs V\bVe\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn H\bHo\bow\bwt\bto\bo
3 -------------------------------------------------------------------------------
5 W\bWA\bAR\bRN\bNI\bIN\bNG\bG
7 The sender/recipient address verification feature described in this document is
8 suitable only for low-traffic sites. It performs poorly under high load;
9 excessive sender address verification activity may even cause your site to be
10 blacklisted by some providers. See the "Limitations" section below for details.
12 W\bWh\bha\bat\bt P\bPo\bos\bst\btf\bfi\bix\bx a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn c\bca\ban\bn d\bdo\bo f\bfo\bor\br y\byo\bou\bu
14 Address verification is a feature that allows the Postfix SMTP server to block
15 a sender (MAIL FROM) or recipient (RCPT TO) address until the address has been
16 verified to be deliverable.
18 The technique has obvious uses to reject junk mail with an unreplyable sender
19 address.
21 The technique may also be useful to block mail for undeliverable recipients,
22 for example on a mail relay host that does not have a list of all the valid
23 recipient addresses. This prevents undeliverable junk mail from entering the
24 queue, so that Postfix doesn't have to waste resources trying to send MAILER-
25 DAEMON messages back.
27 This feature is available in Postfix version 2.1 and later.
29 Topics covered in this document:
31   * How address verification works
32   * Limitations of address verification
33   * Recipient address verification
34   * Sender address verification for mail from frequently forged domains
35   * Sender address verification for all email
36   * Address verification database
37   * Managing the address verification database
38   * Controlling the routing of address verification probes
39   * Forced probe routing examples
40   * Limitations of forced probe routing
42 H\bHo\bow\bw a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn w\bwo\bor\brk\bks\bs
44 A Postfix MTA verifies a sender or recipient address by probing the nearest MTA
45 for that address, without actually delivering mail. The nearest MTA could be
46 the Postfix MTA itself, or it could be a remote MTA (SMTP interruptus). Probe
47 messages are like normal mail, except that they are never delivered, deferred
48 or bounced; probe messages are always discarded.
50                 Postfix         Postfix             Address
51     Internet ->  SMTP   <->     verify      <->   verification
52                 server          server              database
54                                    |    ^
55                                probe    delivery
56                             messages    status
57                                    v    |
59                             Postfix     Postfix
60                              queue   -> delivery
61                                          agents
63 With Postfix address verification turned on, normal mail will suffer only a
64 short delay of up to 6 seconds while an address is being verified for the first
65 time. Once an address status is known, the status is cached and Postfix replies
66 immediately.
68 When verification takes too long the Postfix SMTP server defers the sender or
69 recipient address with a 450 reply. Normal mail clients will connect again
70 after some delay. The address verification delay is configurable with the
71 main.cf address_verify_poll_count and address_verify_poll_delay parameters. See
72 postconf(5) for details.
74 L\bLi\bim\bmi\bit\bta\bat\bti\bio\bon\bns\bs o\bof\bf a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn
76   * When verifying a remote address, Postfix probes the nearest MTA for that
77     address, without actually delivering mail to it. If the nearest MTA accepts
78     the address, then Postfix assumes that the address is deliverable. In
79     reality, mail for a remote address can bounce AFTER the nearest MTA accepts
80     the recipient address.
82   * Some sites may blacklist you when you are probing them too often (a probe
83     is an SMTP session that does not deliver mail), or when you are probing
84     them too often for a non-existent address. This is one reason why you
85     should use sender address verification sparingly, if at all, when your site
86     receives lots of email.
88   * Normally, address verification probe messages follow the same path as
89     regular mail. However, some sites send mail to the Internet via an
90     intermediate relayhost; this breaks address verification. See below,
91     section "Controlling the routing of address verification probes", for how
92     to override mail routing and for possible limitations when you have to do
93     this.
95   * Postfix assumes that an address is undeliverable when the nearest MTA for
96     the address rejects the probe, regardless of the reason for rejection
97     (client rejected, HELO rejected, MAIL FROM rejected, etc.). Thus, Postfix
98     rejects mail when the sender's MTA rejects mail from your machine. This is
99     a good thing.
101   * Unfortunately, some major sites such as YAHOO do not reject unknown
102     addresses in reply to the RCPT TO command, but report a delivery failure in
103     response to end of DATA after a message is transferred. Postfix address
104     verification does not work with such sites.
106   * By default, Postfix probe messages have "double-bounce@$myorigin" as the
107     sender address (with Postfix versions before 2.5, the default is
108     "postmaster@$myorigin"). This is SAFE because the Postfix SMTP server does
109     not reject mail for this address.
111     You can change this into the null address ("address_verify_sender ="). This
112     is UNSAFE because address probes will fail with mis-configured sites that
113     reject MAIL FROM: <>, while probes from "postmaster@$myorigin" would
114     succeed.
116 R\bRe\bec\bci\bip\bpi\bie\ben\bnt\bt a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn
118 As mentioned earlier, recipient address verification may be useful to block
119 mail for undeliverable recipients on a mail relay host that does not have a
120 list of all valid recipient addresses. This can help to prevent the mail queue
121 from filling up with MAILER-DAEMON messages.
123 Recipient address verification is relatively straightforward and there are no
124 surprises. If a recipient probe fails, then Postfix rejects mail for the
125 recipient address. If a recipient probe succeeds, then Postfix accepts mail for
126 the recipient address. However, recipient address verification probes can
127 increase the load on down-stream MTAs when you're being flooded by backscatter
128 bounces, or when some spammer is mounting a dictionary attack.
130 By default, address verification results are not saved. To avoid probing the
131 same address repeatedly, you can store the result in a persistent database as
132 described later.
134     /etc/postfix/main.cf:
135         smtpd_recipient_restrictions =
136             permit_mynetworks
137             reject_unauth_destination
138             ...
139             reject_unknown_recipient_domain
140             reject_unverified_recipient
141             ...
142         # Postfix 2.6 and later privacy feature.
143         # unverified_recipient_reject_reason = Address lookup failed
145 The "reject_unknown_recipient_domain" restriction blocks mail for non-existent
146 domains. Putting this before "reject_unverified_recipient" avoids the overhead
147 of generating unnecessary probe messages.
149 The unverified_recipient_reject_code parameter (default 450) specifies the
150 numerical Postfix SMTP server reply code when a recipient address is known to
151 bounce. Change this setting into 550 when you trust Postfix's judgments.
153 The following features are available in Postfix 2.6 and later.
155 The unverified_recipient_defer_code parameter (default 450) specifies the
156 numerical Postfix SMTP server reply code when a recipient address probe fails
157 with some temporary error. Some sites insist on changing this into 250. NOTE:
158 This change turns MX servers into backscatter sources when the load is high.
160 The unverified_recipient_reject_reason parameter (default: empty) specifies
161 fixed text that Postfix will send to remote SMTP clients, instead of sending
162 actual address verification details. Do not specify the SMTP status code or
163 enhanced status code.
165 The unverified_recipient_tempfail_action parameter (default: defer_if_permit)
166 specifies the Postfix SMTP server action when a recipient address verification
167 probe fails with some temporary error.
169 S\bSe\ben\bnd\bde\ber\br a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn f\bfo\bor\br m\bma\bai\bil\bl f\bfr\bro\bom\bm f\bfr\bre\beq\bqu\bue\ben\bnt\btl\bly\by f\bfo\bor\brg\bge\bed\bd d\bdo\bom\bma\bai\bin\bns\bs
171 Only for very small sites, it is relatively safe to turn on sender address
172 verification for specific domains that often appear in forged email.
174     /etc/postfix/main.cf:
175         smtpd_sender_restrictions = hash:/etc/postfix/sender_access
176         unverified_sender_reject_code = 550
177         # Postfix 2.6 and later.
178         # unverified_sender_defer_code = 250
180         # Note 1: Be sure to read the "Caching" section below!
181         # Note 2: Avoid hash files here. Use btree instead.
182         address_verify_map = btree:/var/db/postfix/verify
184     /etc/postfix/sender_access:
185         aol.com     reject_unverified_sender
186         hotmail.com reject_unverified_sender
187         bigfoot.com reject_unverified_sender
188         ... etcetera ...
190 At some point in cyberspace/time, a list of frequently forged MAIL FROM domains
191 could be found at http://www.monkeys.com/anti-spam/filtering/sender-domain-
192 validate.in.
194 NOTE: One of the first things you might want to do is to turn on sender address
195 verification for all your own domains.
197 S\bSe\ben\bnd\bde\ber\br a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn f\bfo\bor\br a\bal\bll\bl e\bem\bma\bai\bil\bl
199 Unfortunately, sender address verification cannot simply be turned on for all
200 email - you are likely to lose legitimate mail from mis-configured systems. You
201 almost certainly will have to set up white lists for specific addresses, or
202 even for entire domains.
204 To find out how sender address verification would affect your mail, specify
205 "warn_if_reject reject_unverified_sender" so that you can see what mail would
206 be blocked:
208     /etc/postfix/main.cf:
209         smtpd_sender_restrictions =
210             permit_mynetworks
211             ...
212             check_sender_access hash:/etc/postfix/sender_access
213             reject_unknown_sender_domain
214             warn_if_reject reject_unverified_sender
215             ...
216         # Postfix 2.6 and later.
217         # unverified_sender_reject_reason = Address verification failed
219         # Note 1: Be sure to read the "Caching" section below!
220         # Note 2: Avoid hash files here. Use btree instead.
221         address_verify_map = btree:/var/db/postfix/verify
223 This is also a good way to populate your cache with address verification
224 results before you start to actually reject mail.
226 The sender_access restriction is needed to whitelist domains or addresses that
227 are known to be OK. Although Postfix will not mark a known-to-be-good address
228 as bad after a probe fails, it is better to be safe than sorry.
230 NOTE: You will have to whitelist sites such as securityfocus.com and other
231 sites that operate mailing lists that use a different sender address for each
232 posting (VERP). Such addresses pollute the address verification cache quickly,
233 and generate unnecessary sender verification probes.
235     /etc/postfix/sender_access
236         securityfocus.com OK
237         ...
239 The "reject_unknown_sender_domain" restriction blocks mail from non-existent
240 domains. Putting this before "reject_unverified_sender" avoids the overhead of
241 generating unnecessary probe messages.
243 The unverified_sender_reject_code parameter (default 450) specifies the
244 numerical Postfix server reply code when a sender address is known to bounce.
245 Change this setting into 550 when you trust Postfix's judgments.
247 The following features are available in Postfix 2.6 and later.
249 The unverified_sender_defer_code parameter (default 450) specifies the
250 numerical Postfix SMTP server reply code when a sender address verification
251 probe fails with some temporary error. Specify a valid 2xx or 4xx code.
253 The unverified_sender_reject_reason parameter (default: empty) specifies fixed
254 text that Postfix will send to remote SMTP clients, instead of sending actual
255 addres verification details. Do not specify the SMTP status code or enhanced
256 status code.
258 The unverified_sender_tempfail_action parameter (default: defer_if_permit)
259 specifies the Postfix SMTP server action when a sender address verification
260 probe fails with some temporary error.
262 A\bAd\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn d\bda\bat\bta\bab\bba\bas\bse\be
264 NOTE: By default, address verification information is not stored in a
265 persistent file. You have to specify one in main.cf (see below). Persistent
266 storage is off by default because it may need more disk space than is available
267 in your file system.
269 Address verification information is cached by the Postfix verify daemon.
270 Postfix has a bunch of parameters that control the caching of positive and
271 negative results. Refer to the verify(8) manual page for details.
273 The address_verify_map (NOTE: singular) configuration parameter specifies an
274 optional database for sender or recipient address verification results. If you
275 don't specify a file, all address verification information is lost after
276 "postfix reload" or "postfix stop".
278 If your /var file system has sufficient space, try:
280     /etc/postfix/main.cf:
281         # Note: avoid hash files here. Use btree instead.
282         address_verify_map = btree:/var/db/postfix/verify
284 NOTE 1: As of version 2.5, Postfix no longer uses root privileges when opening
285 this file. The file should now be stored under the Postfix-owned
286 data_directory. As a migration aid, an attempt to open the file under a non-
287 Postfix directory is redirected to the Postfix-owned data_directory, and a
288 warning is logged. If you wish to continue using a pre-existing database file,
289 move it to the data_directory, and change ownership to the account specified
290 with the mail_owner parameter.
292 NOTE 2: Do not put this file in a file system that may run out of space. When
293 the address verification table gets corrupted the world comes to an end and YOU
294 will have to MANUALLY fix things as described in the next section. Meanwhile,
295 you will not receive mail via SMTP.
297 NOTE 3: The verify(8) daemon process will create a new database when none
298 exists, and will open/create the file before it enters the chroot jail.
300 M\bMa\ban\bna\bag\bgi\bin\bng\bg t\bth\bhe\be a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn d\bda\bat\bta\bab\bba\bas\bse\be
302 The verify(8) manual page describes parameters that control how long
303 information remains cached before it needs to be refreshed, and how long
304 information can remain "unrefreshed" before it expires. Postfix uses different
305 controls for positive results (address was accepted) and for negative results
306 (address was rejected).
308 Right now, no tools are provided to manage the address verification database.
309 If the file gets too big, or if it gets corrupted, you can manually rename or
310 delete the file and run "postfix reload". The new verify daemon process will
311 then create a new database.
313 C\bCo\bon\bnt\btr\bro\bol\bll\bli\bin\bng\bg t\bth\bhe\be r\bro\bou\but\bti\bin\bng\bg o\bof\bf a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn p\bpr\bro\bob\bbe\bes\bs
315 By default, Postfix sends address verification probe messages via the same
316 route as regular mail, because that normally produces the most accurate result.
317 It's no good to verify a local address by connecting to your own SMTP port;
318 that just triggers all kinds of mailer loop alarms. The same is true for any
319 destination that your machine is best MX host for: hidden domains, virtual
320 domains, etc.
322 However, some sites have a complex infrastructure where mail is not sent
323 directly to the Internet, but is instead given to an intermediate relayhost.
324 This is a problem for address verification, because remote Internet addresses
325 can be verified only when Postfix can access remote destinations directly.
327 For this reason, Postfix allows you to override the routing parameters when it
328 delivers an address verification probe message.
330 First, the address_verify_relayhost parameter allows you to override the
331 relayhost setting, and the address_verify_transport_maps parameter allows you
332 to override the transport_maps setting. The
333 address_verify_sender_dependent_relayhost_maps parameter does the same for
334 sender-dependent relayhost selection.
336 Second, each address class is given its own address verification version of the
337 message delivery transport, as shown in the table below. Address classes are
338 defined in the ADDRESS_CLASS_README file.
340      _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b 
341     |D\bDo\bom\bma\bai\bin\bn l\bli\bis\bst\bt            |R\bRe\beg\bgu\bul\bla\bar\br t\btr\bra\ban\bns\bsp\bpo\bor\brt\bt|V\bVe\ber\bri\bif\bfy\by t\btr\bra\ban\bns\bsp\bpo\bor\brt\bt                |
342     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
343     |mydestination          |local_transport  |address_verify_local_transport  |
344     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
345     |virtual_alias_domains  |(not applicable) |(not applicable)                |
346     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
347     |virtual_mailbox_domains|virtual_transport|address_verify_virtual_transport|
348     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
349     |relay_domains          |relay_transport  |address_verify_relay_transport  |
350     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
351     |(not applicable)       |default_transport|address_verify_default_transport|
352     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
354 By default, the parameters that control delivery of address probes have the
355 same value as the parameters that control normal mail delivery.
357 F\bFo\bor\brc\bce\bed\bd p\bpr\bro\bob\bbe\be r\bro\bou\but\bti\bin\bng\bg e\bex\bxa\bam\bmp\bpl\ble\bes\bs
359 In a typical scenario one would override the relayhost setting for address
360 verification probes and leave everything else alone:
362     /etc/postfix/main.cf:
363         relayhost = $mydomain
364         address_verify_relayhost =
365         ...
367 Sites behind a network address translation box might have to use a different
368 SMTP client that sends the correct hostname information:
370     /etc/postfix/main.cf:
371         relayhost = $mydomain
372         address_verify_relayhost =
373         address_verify_default_transport = direct_smtp
375     /etc/postfix/master.cf:
376         direct_smtp .. .. .. ..  .. .. .. .. .. smtp
377             -o smtp_helo_name=nat.box.tld
379 L\bLi\bim\bmi\bit\bta\bat\bti\bio\bon\bns\bs o\bof\bf f\bfo\bor\brc\bce\bed\bd p\bpr\bro\bob\bbe\be r\bro\bou\but\bti\bin\bng\bg
381 Inconsistencies can happen when probe messages don't follow the same path as
382 regular mail. For example, a message can be accepted when it follows the
383 regular route while an otherwise identical probe message is rejected when it
384 follows the forced route. The opposite can happen, too, but is less likely.