Verifying the deliverability of an email address isn't the most complicated thing out there. In fact, the process we take to verify an address is really only half that of sending a standard email transmission. The tricky part of email verification that we specialize in is more in handling it at scale and being capable of processing large verification request loads in a short period of time. There are many challenges associated with hosting a service such as our own and that is primarily what we charge for. Regardless of your use case, the email verification process relies almost entirely on the heart of it all, the SMTP server - without it we have very few ways of retrieving any metadata/context related to a particular address.
The first thing we do when an email verification request enters our system is check to see if it belongs to a domain that has already been considered a catch-all domain. Yahoo.com for example, is a catch-all domain, which means that no matter what email address you try to contact on their server, you WILL NOT recieve a hard bounced email. Of course, mail providers always have the option of replying with a soft-bounced email response based on source recipients found in their catch-all inbox but this wouldn't be considered a failed transmisison. In the end, a catch-all server will accept all emails transmissions.
The process is fairly straightforward and outlined below. As you can see we first form a connection to the mail server with a basic TCP connection on port 25. We then identify ourselves as
example.com and a reply-to email of
[email protected]. The last step, and the most important in this process is the
RCPT command. This is where, based on the response from the mail server, we are able to conclude the deliverability of a given email address. A
200 implies a valid inbox and anything else implies either an error with our connection to the mail server, or a problem with the address requested. A full outline of all the status codes we parse can be found here.
telnet mail.abccorp.com 25
MAIL FROM: [email protected]
RCPT TO: [email protected]
RCPT TO: [email protected]
In more cases than not we can specify multiple
RCPT addresses so in the same TCP connection so we often take advantage of long-running connection pools to SMTP servers for subsequent verification requests on the same domain. By using the same connection for subsequent reqeusts we help to reduct response times from our service and/or increase your workflow/ui speed!
Now, take everything we've stated above, add some concurrency, multi-node load balancing, and some of the most efficient code we've ever written and you have one of the most poweful and resilient email verification platforms available today. We're always looking deeper and finding new ways to optimize our service in order to give you and your users a more streamlined and secure experience and we hope that you appreciate and take advantage of what we've built!