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 Verification </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 Verification Howto</h1> 17 18<hr> 19 20<h2>WARNING </h2> 21 22<p> Recipient address verification may cause an increased load on 23down-stream servers in the case of a dictionary attack or a flood 24of backscatter bounces. Sender address verification may cause your 25site to be blacklisted by some providers. See also the "<a 26href="#limitations">Limitations</a>" section below for more. </p> 27 28<h2><a name="summary">What Postfix address verification can do for you</a></h2> 29 30<p> Address verification is a feature that allows the Postfix SMTP 31server to block a sender (MAIL FROM) or recipient (RCPT TO) address 32until the address has been verified to be deliverable. </p> 33 34<p> The technique has obvious uses to reject junk mail 35with an unreplyable sender address. </p> 36 37<p> The technique is also useful to block mail for undeliverable 38recipients, for example on a mail <a href="postconf.5.html#relayhost">relay host</a> that does not have a 39list of all the valid recipient addresses. This prevents undeliverable 40junk mail from entering the queue, so that Postfix doesn't have to 41waste resources trying to send MAILER-DAEMON messages back. </p> 42 43<p> This feature is available in Postfix version 2.1 and later. </p> 44 45<p> Topics covered in this document: </p> 46 47<ul> 48 49<li><a href="#how"> How address verification works</a> 50 51<li><a href="#limitations">Limitations of address verification</a> 52 53<li><a href="#recipient">Recipient address verification</a> 54 55<li><a href="#forged_sender">Sender address verification for mail 56from frequently forged domains</a> 57 58<li><a href="#sender_always">Sender address verification for all 59email</a> 60 61<li><a href="#caching">Address verification database</a> 62 63<li><a href="#dirty_secret">Managing the address verification 64database</a> 65 66<li><a href="#probe_routing">Controlling the routing of address 67verification probes</a> 68 69<li><a href="#forced_examples">Forced probe routing examples</a> 70 71<li><a href="#forced_limitations">Limitations of forced probe routing</a> 72 73</ul> 74 75<h2><a name="how">How address verification works</a></h2> 76 77<p> A Postfix MTA verifies a sender or recipient address by probing 78the preferred MTAs 79for that address, without actually delivering mail. The preferred 80MTAs could include the Postfix MTA itself, or some remote MTAs 81(SMTP 82interruptus). Probe messages are like normal mail, except that 83they are never delivered, deferred or bounced; probe messages are 84always discarded. </p> 85 86<blockquote> 87 88<table border="0"> 89 90<tr> 91 92 <td rowspan="2" colspan="5" align="center" valign="middle"> 93 </td> 94 95 <td rowspan="3" align="center" valign="bottom"> <tt> -> </tt> 96 </td> 97 98 <td rowspan="3" align="center" valign="middle"> probe<br> 99 message </td> 100 101 <td rowspan="3" align="center" valign="middle"> <tt> -> </tt> 102 </td> 103 104 <td rowspan="3" bgcolor="#f0f0ff" align="center" valign="middle"> 105 Postfix<br> mail<br> queue </td> 106 107</tr> 108 109<tr> <td> </td> </tr> 110 111<tr> 112 113 <td rowspan="3" align="center" valign="middle"> Internet </td> 114 115 <td rowspan="3" align="center" valign="middle"> <tt> -> </tt> 116 </td> 117 118 <td rowspan="3" bgcolor="#f0f0ff" align="center" valign="middle"> 119 <a href="smtpd.8.html">Postfix<br> SMTP<br> server</a> </td> 120 121 <td rowspan="3" align="center" valign="middle"> <tt> <-> 122 </tt> </td> 123 124 <td rowspan="3" bgcolor="#f0f0ff" align="center" valign="middle"> 125 <a href="verify.8.html">Postfix<br> verify<br> server</a> 126 </td> 127 128</tr> 129 130<tr> 131 132 <td rowspan="1" colspan="3"> </td> 133 134 <td rowspan="1" align="center" valign="middle"> <tt> |</tt><br> 135 <tt> v</tt> </td> 136 137</tr> 138 139<tr> 140 141 <td rowspan="3" align="center" valign="top"> <tt> <- </tt> 142 </td> 143 144 <td rowspan="3" align="center" valign="middle"> probe<br> 145 status </td> 146 147 <td rowspan="3" align="center" valign="middle"> <tt> <- </tt> 148 </td> 149 150 <td rowspan="3" bgcolor="#f0f0ff" align="center" valign="middle"> 151 Postfix<br> delivery<br> agents </td> 152 153 <td rowspan="3" align="left" valign="middle"> <tt>-></tt> 154 Local<br> <tt>-></tt> Remote</td> 155 156</tr> 157 158<tr> 159 160 <td rowspan="3" colspan="4" align="center" valign="middle"> 161 </td> 162 163 <td rowspan="3" align="center" valign="middle"> <tt> 164 ^</tt><br> <tt> |</tt><br> <tt> v</tt> </td> 165 166</tr> 167 168<tr> <td> </td> </tr> 169 170<tr> <td colspan="4"> </td> </tr> 171 172<tr> 173 174 <td colspan="4" align="center" valign="middle"> </td> 175 176 <td bgcolor="#f0f0ff" align="center" valign="middle"> 177 Address<br> verification<br> database </td> 178 179</tr> 180 181</table> 182 183</blockquote> 184 185<p> With Postfix address verification turned on, normal mail will 186suffer only a short delay of up to 6 seconds while an address is 187being verified for the first time. Once an address status is known, 188the status is cached and Postfix replies immediately. </p> 189 190<p> When verification takes too long the Postfix SMTP server defers 191the sender or recipient address with a 450 reply. Normal mail 192clients will connect again after some delay. The address verification 193delay is configurable with the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#address_verify_poll_count">address_verify_poll_count</a> 194and <a href="postconf.5.html#address_verify_poll_delay">address_verify_poll_delay</a> parameters. See <a href="postconf.5.html">postconf(5)</a> for 195details. </p> 196 197<h2><a name="limitations">Limitations of address verification</a></h2> 198 199<ul> 200 201<li> <p> Postfix assumes that a remote SMTP server will reject 202unknown addresses in reply to the RCPT TO command. However, some 203sites report this in reply to the DATA command. For such sites 204you may configure a workaround with the <a href="postconf.5.html#smtp_address_verify_target">smtp_address_verify_target</a> 205parameter (Postfix 3.0 and later). </p> 206 207<li> <p> When verifying a remote address, Postfix probes the preferred 208MTAs for that address, without actually delivering mail. If 209a preferred MTA accepts the address, then Postfix assumes that the 210address is deliverable. In reality, mail for a remote address can 211bounce AFTER a preferred MTA accepts the recipient address, or AFTER 212a preferred MTA accepts the message content. </p> 213 214<li> <p> Some sites may blacklist you when you are probing them 215too often (a probe is an SMTP session that does not deliver mail), 216or when you are probing them too often for a non-existent address. 217This is one reason why you should use sender address verification 218sparingly, if at all, when your site receives lots of email. </p> 219 220<li> <p> Normally, address verification probe messages follow the 221same path as regular mail. However, some sites send mail to the 222Internet via an intermediate <a href="postconf.5.html#relayhost">relayhost</a>; this breaks address 223verification. See below, section <a href="#probe_routing">"Controlling 224the routing of address verification probes"</a>, for how to override 225mail routing and for possible limitations when you have to do this. 226</p> 227 228<li> <p> Postfix assumes that an address is undeliverable when a 229preferred MTA for the address rejects the probe, regardless of the 230reason for rejection (client rejected, HELO rejected, MAIL FROM 231rejected, etc.). Thus, Postfix rejects an address when a preferred 232MTA for that address rejects mail from your machine for any reason. 233This is not a limitation, but it is mentioned here just in case 234people believe that it is a limitation. </p> 235 236<li> <p> Unfortunately, some sites do not reject unknown addresses 237in reply to the RCPT TO or DATA command, but instead report a 238delivery failure in response to end of DATA after a message is 239transferred. Postfix address verification does not work with such 240sites. </p> 241 242<li> <p> By default, Postfix probe messages have a sender address 243"double-bounce@$<a href="postconf.5.html#myorigin">myorigin</a>" (with Postfix versions before 2.5, the 244default 245is "postmaster@$<a href="postconf.5.html#myorigin">myorigin</a>"). This is SAFE because the Postfix SMTP 246server does not reject mail for this address. </p> 247 248<p> You can change the probe sender address into the null address 249("<a href="postconf.5.html#address_verify_sender">address_verify_sender</a> 250="). This is UNSAFE because address probes will fail with 251mis-configured sites that reject MAIL FROM: <>, while 252probes from "double-bounce@$<a href="postconf.5.html#myorigin">myorigin</a>" would succeed. </p> 253 254<li> <p> The downside of using a non-empty sender address is that 255the address may end op on spammer mailing lists. Although Postfix 256always discards mail to the double-bounce address, this still results 257in wasted network bandwidth and server capacity. To defeat 258address harvesting, Postfix 2.9 and later support time-dependent 259sender addresses when you specify a non-zero <a href="postconf.5.html#address_verify_sender_ttl">address_verify_sender_ttl</a> 260value. </p> 261 262</ul> 263 264<h2><a name="recipient">Recipient address verification</a></h2> 265 266<p> As mentioned earlier, recipient address verification is 267useful to block mail for undeliverable recipients on a mail relay 268host that does not have a list of all valid recipient addresses. 269This can help to prevent the mail queue from filling up with 270MAILER-DAEMON messages. </p> 271 272<p> Recipient address verification is relatively straightforward 273and there are no surprises. If a recipient probe fails, then Postfix 274rejects mail for the recipient address. If a recipient probe 275succeeds, then Postfix accepts mail for the recipient address. 276However, recipient address verification probes can increase the 277load on down-stream MTAs when you're being flooded by backscatter 278bounces, or when some spammer is mounting a dictionary attack. </p> 279 280<p> By default, address verification results are saved in a <a 281href="#caching">persistent database</a> (Postfix version 2.7 and 282later; with earlier versions, specify the database in <a href="postconf.5.html">main.cf</a> as 283described later). The persistent database helps to avoid probing 284the same address repeatedly. </p> 285 286<blockquote> 287<pre> 288/etc/postfix/<a href="postconf.5.html">main.cf</a>: 289 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = 290 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> 291 # <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if the mail 292 # relay policy is specified under <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> 293 # (available with Postfix 2.10 and later). 294 <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> 295 ... 296 <a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a> 297 <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> 298 ... 299 # Postfix 2.6 and later privacy feature. 300 # <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> = Address lookup failed 301 302 # Postfix 3.2 and earlier workaround. 303 # Do not set <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a>=no. This prevents Postfix 304 # from saving the recipient address verification result under 305 # the original address, when the address verification probe 306 # message goes through address aliasing or canonical mapping. 307</pre> 308</blockquote> 309 310<p> The "<a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a>" restriction blocks mail 311for non-existent domains. Putting this before "<a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>" 312avoids the overhead of generating unnecessary probe messages. </p> 313 314<p> The <a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> parameter (default 450) 315specifies the numerical Postfix SMTP server reply code when a 316recipient address is known to 317bounce. Change this setting into 550 when you trust Postfix's 318judgments. </p> 319 320<p> The following features are available in Postfix 2.6 and later. 321</p> 322 323<p> The <a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> parameter (default 450) 324specifies the numerical Postfix SMTP server reply code when a 325recipient address probe fails with some temporary error. Some sites 326insist on changing this into 250. NOTE: This change turns MX servers 327into backscatter sources when the load is high. </p> 328 329<p> The <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> parameter (default: 330empty) specifies fixed text that Postfix will send to remote SMTP 331clients, instead of sending actual address verification details. 332Do not specify the SMTP status code or enhanced status code. </p> 333 334<p> The <a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> parameter (default: 335<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>) specifies the Postfix SMTP server action when a 336recipient address verification probe fails with some temporary 337error. </p> 338 339<h2><a name="forged_sender">Sender address verification for mail from frequently forged domains</a></h2> 340 341<p> Only for very small sites, it is relatively safe to turn on 342sender address verification for specific domains that often appear 343in forged email. </p> 344 345<blockquote> 346<pre> 347/etc/postfix/<a href="postconf.5.html">main.cf</a>: 348 <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> = <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/sender_access 349 <a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> = 550 350 # Postfix 2.6 and later. 351 # <a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> = 250 352 353 # Default setting for Postfix 2.7 and later. 354 # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below! 355 # Note 2: Avoid hash files here. Use btree or lmdb instead. 356 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="DATABASE_README.html#types">btree</a>:/var/lib/postfix/verify 357 358 # Postfix 3.2 and earlier workaround. 359 # Do not set <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a>=no. This prevents Postfix 360 # from saving the sender address verification result under the 361 # original address, when the address verification probe message 362 # goes through address aliasing or canonical mapping. 363 364/etc/postfix/sender_access: 365 # Don't do this when you handle lots of email. 366 aol.com <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> 367 hotmail.com <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> 368 bigfoot.com <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> 369 ... etcetera ... 370</pre> 371</blockquote> 372 373<p> At some point in cyberspace/time, a list of frequently forged 374MAIL FROM domains could be found at 375<a href="http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in">http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in</a>. </p> 376 377<p> NOTE: One of the first things you might want to do is to turn 378on sender address verification for all your own domains. </p> 379 380<h2><a name="sender_always">Sender address verification for all 381email</a></h2> 382 383<p> Unfortunately, sender address verification cannot simply be 384turned on for all email - you are likely to lose legitimate mail 385from mis-configured systems. You almost certainly will have to set 386up white lists for specific addresses, or even for entire domains. 387</p> 388 389<p> To find out how sender address verification would affect your 390mail, specify "<a href="postconf.5.html#warn_if_reject">warn_if_reject</a> <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>" so that 391you can see what mail would be blocked: </p> 392 393<blockquote> 394<pre> 395/etc/postfix/<a href="postconf.5.html">main.cf</a>: 396 <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> = 397 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> 398 ... 399 <a href="postconf.5.html#check_sender_access">check_sender_access</a> <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/sender_access 400 <a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a> 401 <a href="postconf.5.html#warn_if_reject">warn_if_reject</a> <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> 402 ... 403 # Postfix 2.6 and later. 404 # <a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> = Address verification failed 405 406 # Default setting for Postfix 2.7 and later. 407 # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below! 408 # Note 2: Avoid hash files here. Use btree or lmdb instead. 409 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="DATABASE_README.html#types">btree</a>:/var/lib/postfix/verify 410</pre> 411</blockquote> 412 413<p> This is also a good way to populate your cache with address 414verification results before you start to actually reject mail. </p> 415 416<p> The sender_access restriction is needed to whitelist domains 417or addresses that are known to be OK. Although Postfix will not 418mark a known-to-be-good address as bad after a probe fails, it is 419better to be safe than sorry. </p> 420 421<p> NOTE: You will have to whitelist sites such as securityfocus.com 422and other sites that operate mailing lists that use a different 423sender address for each posting (VERP). Such addresses pollute 424the address verification cache quickly, and generate unnecessary 425sender verification probes. </p> 426 427<blockquote> 428<pre> 429/etc/postfix/sender_access 430 securityfocus.com OK 431 ... 432</pre> 433</blockquote> 434 435<p> The "<a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a>" restriction blocks mail from 436non-existent domains. Putting this before "<a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>" 437avoids the overhead of generating unnecessary probe messages. </p> 438 439<p> The <a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> parameter (default 450) 440specifies the numerical Postfix server reply code when a sender 441address is known to 442bounce. Change this setting into 550 when you trust Postfix's 443judgments. </p> 444 445<p> The following features are available in Postfix 2.6 and later. 446</p> 447 448<p> The <a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> parameter (default 450) specifies 449the numerical Postfix SMTP server reply code when a sender address 450verification probe fails with some temporary error. Specify a valid 4512xx or 4xx code. </p> 452 453<p> The <a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> parameter (default: 454empty) specifies fixed text that Postfix will send to remote SMTP 455clients, instead of sending actual address verification details. 456Do not specify the SMTP status code or enhanced status code. </p> 457 458<p> The <a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> parameter (default: 459<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>) specifies the Postfix SMTP server action when a 460sender address verification probe fails with some temporary error. 461</p> 462 463<h2><a name="caching">Address verification database</a></h2> 464 465<p> To improve performance, the Postfix <a href="verify.8.html">verify(8)</a> daemon can save 466address verification results to a persistent database. This is 467enabled by default with Postfix 2.7 and later. The 468<a href="postconf.5.html#address_verify_map">address_verify_map</a> (NOTE: singular) configuration parameter specifies 469persistent storage for sender or recipient address verification 470results. If you specify an empty value, all address verification 471results are lost after "postfix reload" or "postfix stop". </p> 472 473<blockquote> 474<pre> 475# Example 1: Default setting for Postfix 2.7 and later. 476# Note: avoid hash files here. Use btree or lmdb instead. 477/etc/postfix/<a href="postconf.5.html">main.cf</a>: 478 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="DATABASE_README.html#types">btree</a>:$<a href="postconf.5.html#data_directory">data_directory</a>/verify_cache 479 480# Example 2: Shared persistent <a href="lmdb_table.5.html">lmdb</a>: cache (Postfix 2.11 or later). 481# Disable automatic cache cleanup in all Postfix instances except 482# for one instance that will be responsible for cache cleanup. 483/etc/postfix/<a href="postconf.5.html">main.cf</a>: 484 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="lmdb_table.5.html">lmdb</a>:$<a href="postconf.5.html#data_directory">data_directory</a>/verify_cache 485 # <a href="postconf.5.html#address_verify_cache_cleanup_interval">address_verify_cache_cleanup_interval</a> = 0 486 487# Example 3: Shared persistent <a href="DATABASE_README.html#types">btree</a>: cache (Postfix 2.9 or later). 488# Disable automatic cache cleanup in all Postfix instances except 489# for one instance that will be responsible for cache cleanup. 490/etc/postfix/<a href="postconf.5.html">main.cf</a>: 491 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="proxymap.8.html">proxy</a>:<a href="DATABASE_README.html#types">btree</a>:$<a href="postconf.5.html#data_directory">data_directory</a>/verify_cache 492 # <a href="postconf.5.html#address_verify_cache_cleanup_interval">address_verify_cache_cleanup_interval</a> = 0 493 494# Example 4: Shared memory cache (requires Postfix 2.9 or later). 495# Disable automatic cache cleanup in all Postfix instances. 496# See <a href="memcache_table.5.html">memcache_table(5)</a> for details. 497/etc/postfix/<a href="postconf.5.html">main.cf</a>: 498 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="memcache_table.5.html">memcache</a>:/etc/postfix/verify-memcache.cf 499 <a href="postconf.5.html#address_verify_cache_cleanup_interval">address_verify_cache_cleanup_interval</a> = 0 500 501# Example 5: Default setting for Postfix 2.6 and earlier. 502# This uses non-persistent storage only. 503/etc/postfix/<a href="postconf.5.html">main.cf</a>: 504 <a href="postconf.5.html#address_verify_map">address_verify_map</a> = 505</pre> 506</blockquote> 507 508<p> NOTE 1: The database file should be stored under a Postfix-owned 509directory, such as $<a href="postconf.5.html#data_directory">data_directory</a>. </p> 510 511<blockquote> As of version 2.5, Postfix no longer uses root privileges 512when opening this file. To maintain backwards compatibility, an 513attempt to open the file under a non-Postfix directory is redirected 514to the Postfix-owned <a href="postconf.5.html#data_directory">data_directory</a>, and a warning is logged. If 515you wish to continue using a pre-existing database file, change its 516file ownership to the account specified with the <a href="postconf.5.html#mail_owner">mail_owner</a> parameter, 517and either move the file to the <a href="postconf.5.html#data_directory">data_directory</a>, or move it to some 518other Postfix-owned directory. </blockquote> 519 520<p> NOTE 2: Do not put this file in a file system that may run out 521of space. When the address verification table gets corrupted the 522world comes to an end and YOU will have to MANUALLY fix things as 523described in the next section. Meanwhile, you will not receive mail 524via SMTP. </p> 525 526<p> NOTE 3: The <a href="verify.8.html">verify(8)</a> daemon will create a new database when 527none exists. It will open or create the file before entering the 528chroot jail. </p> 529 530<h2><a name="dirty_secret">Managing the address verification 531database</a></h2> 532 533<p> The <a href="verify.8.html">verify(8)</a> manual page describes parameters that control how 534long address verification results are cached before they need to 535be refreshed, and how long results can remain "unrefreshed" before 536they expire. Postfix uses different controls for positive results 537(address was accepted) and for negative results (address was rejected, 538or address verification failed for some other reason). </p> 539 540<p> The <a href="verify.8.html">verify(8)</a> daemon will periodically remove expired entries 541from the address verification database, and log the number of entries 542retained and dropped (Postfix versions 2.7 and later). A cleanup 543run is logged as "partial" when the daemon terminates early because 544of "postfix reload, "postfix stop", or because the daemon received 545no requests for $<a href="postconf.5.html#max_idle">max_idle</a> seconds. Postfix versions 2.6 and earlier 546do not implement automatic address verification database cleanup. 547There, the database is managed manually as described next. </p> 548 549<p> When the address verification database file becomes too big, 550or when it becomes corrupted, the solution is to manually rename 551or delete (NOT: truncate) the file and run "postfix reload". The 552<a href="verify.8.html">verify(8)</a> daemon will then create a new database file. </p> 553 554<h2><a name="probe_routing">Controlling the routing of address 555verification probes</a></h2> 556 557<p> By default, Postfix sends address verification probe messages 558via the same route as regular mail, because that normally produces 559the most accurate result. It's no good to verify a local address 560by connecting to your own SMTP port; that just triggers all kinds 561of mailer loop alarms. The same is true for any destination that 562your machine is best MX host for: hidden domains, virtual domains, 563etc. </p> 564 565<p> However, some sites have a complex infrastructure where mail 566is not sent directly to the Internet, but is instead given to an 567intermediate <a href="postconf.5.html#relayhost">relayhost</a>. This is a problem for address verification, 568because remote Internet addresses can be verified only when Postfix 569can access remote destinations directly. </p> 570 571<p> For this reason, Postfix allows you to override the routing 572parameters when it delivers an address verification probe message. 573</p> 574 575<p> First, the <a href="postconf.5.html#address_verify_relayhost">address_verify_relayhost</a> parameter allows you to 576override the <a href="postconf.5.html#relayhost">relayhost</a> setting, and the <a href="postconf.5.html#address_verify_transport_maps">address_verify_transport_maps</a> 577parameter allows you to override the <a href="postconf.5.html#transport_maps">transport_maps</a> setting. 578The <a href="postconf.5.html#address_verify_sender_dependent_relayhost_maps">address_verify_sender_dependent_relayhost_maps</a> parameter 579does the same for sender-dependent <a href="postconf.5.html#relayhost">relayhost</a> selection. </p> 580 581<p> Second, each address class is given its own address verification 582version of the message delivery transport, as shown in the table 583below. Address classes are defined in the <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> 584file. </p> 585 586<blockquote> 587 588<table border="1"> 589 590<tr> <th> Domain list </th> <th> Regular transport</th> <th> Verify 591transport </th> </tr> 592 593<tr> <td> <a href="postconf.5.html#mydestination">mydestination</a> </td> <td> <a href="postconf.5.html#local_transport">local_transport</a> </td> <td> 594<a href="postconf.5.html#address_verify_local_transport">address_verify_local_transport</a> </td> </tr> 595 596<tr> <td> <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> </td> <td> (not applicable) </td> 597<td> (not applicable) </td> </tr> 598 599<tr> <td> <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> </td> <td> <a href="postconf.5.html#virtual_transport">virtual_transport</a> 600</td> <td> <a href="postconf.5.html#address_verify_virtual_transport">address_verify_virtual_transport</a> </td> </tr> 601 602<tr> <td> <a href="postconf.5.html#relay_domains">relay_domains</a> </td> <td> <a href="postconf.5.html#relay_transport">relay_transport</a> </td> <td> 603<a href="postconf.5.html#address_verify_relay_transport">address_verify_relay_transport</a> </td> </tr> 604 605<tr> <td> (not applicable) </td> <td> <a href="postconf.5.html#default_transport">default_transport</a> </td> <td> 606<a href="postconf.5.html#address_verify_default_transport">address_verify_default_transport</a> </td> </tr> 607 608</table> 609 610</blockquote> 611 612<p> By default, the parameters that control delivery of address 613probes have the same value as the parameters that control normal 614mail delivery. </p> 615 616<h2><a name="forced_examples">Forced probe routing examples</a></h2> 617 618<p> In a typical scenario one would override the <a href="postconf.5.html#relayhost">relayhost</a> setting 619for address verification probes and leave everything else alone: 620</p> 621 622<blockquote> 623<pre> 624/etc/postfix/<a href="postconf.5.html">main.cf</a>: 625 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a> 626 <a href="postconf.5.html#address_verify_relayhost">address_verify_relayhost</a> = 627 ... 628</pre> 629</blockquote> 630 631<p> Sites behind a network address translation box might have to 632use a different SMTP client that sends the correct hostname 633information: </p> 634 635<blockquote> 636<pre> 637/etc/postfix/<a href="postconf.5.html">main.cf</a>: 638 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a> 639 <a href="postconf.5.html#address_verify_relayhost">address_verify_relayhost</a> = 640 <a href="postconf.5.html#address_verify_default_transport">address_verify_default_transport</a> = direct_smtp 641 642/etc/postfix/<a href="master.5.html">master.cf</a>: 643 direct_smtp .. .. .. .. .. .. .. .. .. smtp 644 -o <a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a>=nat.box.tld 645</pre> 646</blockquote> 647 648<h2><a name="forced_limitations">Limitations of forced probe routing</a></h2> 649 650<p> Inconsistencies can happen when probe messages don't follow 651the same path as regular mail. For example, a message can be 652accepted when it follows the regular route while an otherwise 653identical probe message is rejected when it follows the forced 654route. The opposite can happen, too, but is less likely. </p> 655 656</body> 657 658</html> 659