Rich Wales: > My sending host does, in fact, have proper FCrDNS. > > I've contacted AT&T in an attempt to get my IP address off their block > list. They haven't replied yet, and since I contacted them only > yesterday, it's too early to tell if they are going to do it or not. > > Distinguishing "block list" rejections (which I would want to retry via > my smarthost) from other sorts of rejections (such as "no such user") > could, I agree, be an issue. In theory, I might want to try looking at > the SMTP rejection notice and do a "retry via smarthost" for anything > that did not contain one of a limited set of extended status codes > (such as the 5.1.x codes). I'm not sure if Postfix has any way of > being told to do this sort of thing or not.
Postfix allows you to transform remote server responses into arbitrary other responses. Thus, you can change a 5XX (hard reject) into something else. http://www.postfix.org/postconf.5.html#smtp_reply_filter Wietse smtp_reply_filter (default: empty) A mechanism to transform replies from remote SMTP servers one line at a time. This is a last-resort tool to work around server replies that break inter-operability with the Postfix SMTP client. Other uses involve fault injection to test Postfix's handling of invalid responses. Notes: * In the case of a multi-line reply, the Postfix SMTP client uses the final reply line's numerical SMTP reply code and enhanced status code. * The numerical SMTP reply code (XYZ) takes precedence over the enhanced status code (X.Y.Z). When the enhanced status code initial digit differs from the SMTP reply code initial digit, or when no enhanced status code is present, the Postfix SMTP client uses a generic enhanced status code (X.0.0) instead. Specify the name of a "type:table" lookup table. The search string is a single SMTP reply line as received from the remote SMTP server, except that the trailing <CR><LF> are removed. Examples: /etc/postfix/main.cf: smtp_reply_filter = pcre:/etc/postfix/reply_filter /etc/postfix/reply_filter: # Transform garbage into "250-filler..." so that it looks like # one line from a multi-line reply. It does not matter what we # substitute here as long it has the right syntax. The Postfix # SMTP client will use the final line's numerical SMTP reply # code and enhanced status code. !/^([2-5][0-9][0-9]($|[- ]))/ 250-filler for garbage This feature is available in Postfix 2.7.