Found in the log file:
554- (RTR:DU) The IP address you are using to connect to AOL is a dynamic 554- (residential) IP address. AOL will not accept future e-mail transactions 554- from this IP address until your ISP removes this IP address from its list 554- of dynamic (residential) IP addresses. For additional information, 554- please visit http://postmaster.info.aol.com. 554 Connecting IP: 62.226.72.29
No, I don't want to deliver any mail at all. I just want to check the validity of email addresses. But AOL is already preventing me from doing that in advance - instead of waiting until a DATA command comes, which would actually initiate a real mail. As a result, I can't use the callback because AOL won't let me verify and I end up rejecting all mail from AOL users. That's ridiculous.
With their very strange actions against spam, such providers only make it harder for other people to protect themselves against spam too. Because I get the rejection before the first command - so I can't even do a VRFY or anything like that. I can't even establish a connection to the AOL mail server.
To explain what I do: when mail comes in, I check whether the technical sender (i.e., where bounces go) is a valid mailbox. This way I reject all mail that can't be bounced. If I can't send an error report for it, I don't want the mail. To do this, my mail server attempts mail delivery. However, only the first two commands are sent - MAIL FROM and RCPT TO. No DATA and especially no mail.
This is a common procedure to ensure that only real mail arrives at a server. But since AOL now prevents every connection to the mail server, I can't use this approach anymore - I can no longer verify AOL addresses the same way I can with other addresses. Which, given the fact that AOL addresses in particular are faked for spam, is quite audacious of AOL.
So, I've now simply moved my email validation to an external server, which I query via XML-RPC. It then performs the email validation - and since it runs on a static IP, it's also accepted by AOL.
Anyone who wants to play around with this, the service is accessible via SOAP or XMLRPC. The address for XMLRPC: http://simon.bofh.ms:1111/RPC2 and then call the method mailcheck.validateEmail(adr) there. The address for SOAP: http://simon.bofh.ms:1111/SOAP/mailcheck and then call validateEmail(adr) there. Documentation of the method for this module can be found at http://simon.bofh.ms:1111/API/mailcheck. A WSDL for .NET people and others who need that sort of thing can be found at http://simon.bofh.ms:1111/WSDL/mailcheck. By the way, the web service was created using TooFPy. The corresponding tool is included in the source package - or can be viewed directly in CVS.