Email Address Validation on the Web

Hello there,

I'm curious if anyone has implemented email address verification on their website (from Experian QAS or any other service) to validate the email is active and has no typos, etc.  We are looking at implementing and would love to hear from other Tessitura clients on the process and any possible issues along the way. 

All the best, 

Chuck

 

Charles Buchanan

Senior Data Analyst  

T 02 9250 7618 

 

Sydney Opera House Bennelong Point

GPO Box 4274 Sydney NSW 2001 AUSTRALIA

Parents
  • I don't know the answer to your question, but I get a constant stream of bad emails from TNEW users, almost always with typos in the domain.

    How hard would it be, really, to validate email addresses by doing a DNS lookup for a valid MX record on the domain? Won't solve for all cases, but I think that would be a minimum effort/maximum reward opportunity.

  • We haven't, but based on what Nick said, I've done a little digging.  There is a project here:

    http://www.c-sharpcorner.com/uploadfile/40e97e/verify-email-online/

    which uses windows nslookup to validate the mx record and also sends commands to that smtp server to validate the user.  It captures the response back and looks for a 250 response.   If a non 250 reply comes back, this is a bad record.  In the background, it sends these windows commands:

    nslookup -q=mx gmail.com

    to get the mx records

    AND

    telnet alt2.gmail-smtp-in.l.google.com 25

    plus the commands below to manually verify the email address

    HELO verify-email.org
    MAIL FROM: <check@verify-email.org>
    RCPT TO: <evans.wayne@gmail.com>
    QUIT

     

    the technical output looks something like this for a working record:

    ----------------------

    C:\Users\nx9420>nslookup -q=mx gmail.com

    Server:  UnKnown

    Address:  192.168.22.1

     

    Non-authoritative answer:

    gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com

     

    gmail-smtp-in.l.google.com      internet address = 74.125.206.27

     

     

    C:\Users\nx9420>telnet alt2.gmail-smtp-in.l.google.com 25

     

    220 mx.google.com ESMTP zp2si7016412pac.35 - gsmtp

    HELO verify-email.org

    250 mx.google.com at your service

    MAIL FROM: <check@verify-email.org>

    250 2.1.0 OK zp2si7016412pac.35 - gsmtp

    RCPT TO: <evans.wayne@gmail.com>

    250 2.1.5 OK zp2si7016412pac.35 - gsmtp

    QUIT

    221 2.0.0 closing connection zp2si7016412pac.35 - gsmtp

     

     

    Connection to host lost.

    -----------------------

    and this for a bad email address, but good domain

    ------------------------

    C:\Users\nx9420>nslookup -q=mx gmail.com

    Server:  UnKnown

    Address:  192.168.22.1

     

    Non-authoritative answer:

    gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com

     

    gmail-smtp-in.l.google.com      internet address = 74.125.206.27

     

     

    C:\Users\nx9420>telnet alt2.gmail-smtp-in.l.google.com 25

     

    220 mx.google.com ESMTP bx2si15781387pbb.72 - gsmtp

    HELO verify-email.org

    250 mx.google.com at your service

    MAIL FROM: <check@verify-email.org>

    250 2.1.0 OK bx2si15781387pbb.72 - gsmtp

    RCPT TO: <evans.wayneBLAH@gmail.com>

    550-5.1.1 The email account that you tried to reach does not exist. Please try

    550-5.1.1 double-checking the recipient's email address for typos or

    550-5.1.1 unnecessary spaces. Learn more at

    550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 bx2si15781387

    pbb.72 - gsmtp

    QUIT

    221 2.0.0 closing connection bx2si15781387pbb.72 - gsmtp

     

     

    Connection to host lost.

    -------------------------

     

    I'm thinking, the project code could relatively easily be turned into a web service that is called at account sign up providing a valid, mxvalid and invaliddomain response, as all the code is there and your web code/config could decide what level of verification is acceptable?

     

    This isn't foolproof as some mailservers (such as ours) will say that every address you put to it is correct.

Reply
  • We haven't, but based on what Nick said, I've done a little digging.  There is a project here:

    http://www.c-sharpcorner.com/uploadfile/40e97e/verify-email-online/

    which uses windows nslookup to validate the mx record and also sends commands to that smtp server to validate the user.  It captures the response back and looks for a 250 response.   If a non 250 reply comes back, this is a bad record.  In the background, it sends these windows commands:

    nslookup -q=mx gmail.com

    to get the mx records

    AND

    telnet alt2.gmail-smtp-in.l.google.com 25

    plus the commands below to manually verify the email address

    HELO verify-email.org
    MAIL FROM: <check@verify-email.org>
    RCPT TO: <evans.wayne@gmail.com>
    QUIT

     

    the technical output looks something like this for a working record:

    ----------------------

    C:\Users\nx9420>nslookup -q=mx gmail.com

    Server:  UnKnown

    Address:  192.168.22.1

     

    Non-authoritative answer:

    gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com

     

    gmail-smtp-in.l.google.com      internet address = 74.125.206.27

     

     

    C:\Users\nx9420>telnet alt2.gmail-smtp-in.l.google.com 25

     

    220 mx.google.com ESMTP zp2si7016412pac.35 - gsmtp

    HELO verify-email.org

    250 mx.google.com at your service

    MAIL FROM: <check@verify-email.org>

    250 2.1.0 OK zp2si7016412pac.35 - gsmtp

    RCPT TO: <evans.wayne@gmail.com>

    250 2.1.5 OK zp2si7016412pac.35 - gsmtp

    QUIT

    221 2.0.0 closing connection zp2si7016412pac.35 - gsmtp

     

     

    Connection to host lost.

    -----------------------

    and this for a bad email address, but good domain

    ------------------------

    C:\Users\nx9420>nslookup -q=mx gmail.com

    Server:  UnKnown

    Address:  192.168.22.1

     

    Non-authoritative answer:

    gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com

    gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com

     

    gmail-smtp-in.l.google.com      internet address = 74.125.206.27

     

     

    C:\Users\nx9420>telnet alt2.gmail-smtp-in.l.google.com 25

     

    220 mx.google.com ESMTP bx2si15781387pbb.72 - gsmtp

    HELO verify-email.org

    250 mx.google.com at your service

    MAIL FROM: <check@verify-email.org>

    250 2.1.0 OK bx2si15781387pbb.72 - gsmtp

    RCPT TO: <evans.wayneBLAH@gmail.com>

    550-5.1.1 The email account that you tried to reach does not exist. Please try

    550-5.1.1 double-checking the recipient's email address for typos or

    550-5.1.1 unnecessary spaces. Learn more at

    550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 bx2si15781387

    pbb.72 - gsmtp

    QUIT

    221 2.0.0 closing connection bx2si15781387pbb.72 - gsmtp

     

     

    Connection to host lost.

    -------------------------

     

    I'm thinking, the project code could relatively easily be turned into a web service that is called at account sign up providing a valid, mxvalid and invaliddomain response, as all the code is there and your web code/config could decide what level of verification is acceptable?

     

    This isn't foolproof as some mailservers (such as ours) will say that every address you put to it is correct.

Children
  • Thanks, guys. 

    My understanding is that this is what the QAS product will do - after a new user enters the email address or an existing user changes the email address it will ping it around the world to the various email domains to validate.  It would then ask the customer to re-enter if not valid.  Very similar to postal address validation.