Respect Netiquette and avoid temporary bans
Published on Thursday, April 14, 2011
Today mail exchangers employ different strategies to defend themselves from abuse and overloading; one of these is based on the assumption that a typical spammer or, more generally, a typical bot would eventually try to make a high number of requests in a short amount of time. This event is likely to be detected by modern SMTP servers and can lead to temporary bans of the originating IP address.
If you are going to validate a big number of email addresses using Smtp level or greater for the same domain (validations against different domains do not have any limitation) with EmailVerify.NET, you should consider following Netiquette and avoid performing too many email validations for the same domain (assuming that the mail exchangers for the same domain can share temporary bans, for the sake of simplicity) in a short amount of time.
But how much is this time? No one can answer to this question, as a standard does not exist and this value is up to each system administrator. As a rule of thumb, however, you should avoid querying the same mail exchanger more than 5-6 times in a minute.
EmailVerify.NET comes with a configurable property named SameDomainConnectionDelay, which allows specifying an interval expressed in seconds that the component will observe between subsequent connections to the same SMTP server. This property has a default value of 10 seconds, so you don't have to configure anything to respect Netiquette as it is already followed by default by the component. :)
But what can you do if, say, you need to validate thousands of email addresses from the same domain? Fortunately, EmailVerify.NET allows you to choose a different IP address for each SMTP request, based on an event handler you can bind to the LocalSmtpEndPointBinding event of the component, and thus cycle the originating endpoint the target mail exchangers see. This way, the total maximum number of email addresses for the same domain you can validate in a minute is proportional to the number of IP addresses you can bind to EmailVerify.NET: the higher the number of available IP addresses the higher the number of email addresses for the same domain you can validate in parallel!
In the following code snippet, for example, EmailVerify.NET is configured to cycle among three different originating IP addresses, in a round-robin fashion:
For additional information about the local SMTP endpoint cycling feature of our component, please see our user guide at pages 33-35.
Cheers
--
Efran Cobisi
EmailVerify.NET lead developer
If you are going to validate a big number of email addresses using Smtp level or greater for the same domain (validations against different domains do not have any limitation) with EmailVerify.NET, you should consider following Netiquette and avoid performing too many email validations for the same domain (assuming that the mail exchangers for the same domain can share temporary bans, for the sake of simplicity) in a short amount of time.
But how much is this time? No one can answer to this question, as a standard does not exist and this value is up to each system administrator. As a rule of thumb, however, you should avoid querying the same mail exchanger more than 5-6 times in a minute.
EmailVerify.NET comes with a configurable property named SameDomainConnectionDelay, which allows specifying an interval expressed in seconds that the component will observe between subsequent connections to the same SMTP server. This property has a default value of 10 seconds, so you don't have to configure anything to respect Netiquette as it is already followed by default by the component. :)
But what can you do if, say, you need to validate thousands of email addresses from the same domain? Fortunately, EmailVerify.NET allows you to choose a different IP address for each SMTP request, based on an event handler you can bind to the LocalSmtpEndPointBinding event of the component, and thus cycle the originating endpoint the target mail exchangers see. This way, the total maximum number of email addresses for the same domain you can validate in a minute is proportional to the number of IP addresses you can bind to EmailVerify.NET: the higher the number of available IP addresses the higher the number of email addresses for the same domain you can validate in parallel!
In the following code snippet, for example, EmailVerify.NET is configured to cycle among three different originating IP addresses, in a round-robin fashion:
using System.Net;
using Cobisi.EmailVerify;
class Program
{
static void Main()
{
// TODO: Retrieve a real list of public endpoints
IPEndPoint[] availableEndPoints = new IPEndPoint[] {
new IPEndPoint(IPAddress.Parse("10.0.1.1"), 0),
new IPEndPoint(IPAddress.Parse("10.0.1.2"), 0),
new IPEndPoint(IPAddress.Parse("10.0.1.3"), 0)
};
EmailVerifier verifier = new EmailVerifier();
// Configure the component to cycle the local SMTP endpoint
int iCurrentEndPoint = 0;
verifier.LocalSmtpEndPointBinding += (sender, args) =>
{
// Retrieve the next available endpoint
var endPoint = availableEndPoints[iCurrentEndPoint % availableEndPoints.Length];
args.LocalSmtpEndPoint = endPoint;
iCurrentEndPoint++;
};
// TODO: Use the component
}
}
For additional information about the local SMTP endpoint cycling feature of our component, please see our user guide at pages 33-35.
Cheers
--
Efran Cobisi
EmailVerify.NET lead developer