In a shared or managed hosting environment, many people would agree that one of the most commonly reported issue with our helpdesk is email.
It has become a best practice to perform basic email troubleshooting , depending on the error / bounce back reported. These steps could be performed before or after the issue has been fixed — either to confirm it is working or to reproduce a particular problem.
The purpose of this document is to describe how mail gets from one users email client to another users mailbox. Each action that takes place can be tested and verified by an some level of admin with a few exceptions. After going through this document you should understand what takes place when a user sends email or has email sent to them.
Test SMTP Authentication
SMTP users BASE64 encoding to transmit usernames and passwords. You will need to take the username of the client ( user@domain.com ) and the password and convert them to BASE64. Links provided below to do this:
* http://www.webpan.com/customers/Email/base64_conversion.htm
* http://makcoder.sourceforge.net/demo/base64.php
* http://www.opinionatedgeek.com/dotnet/tools/Base64Encode/
telnet mail.domainname.com 25 helo mailserver auth login BASE64 Encoding of USERNAME@domain.com BASe64 Encoding of PASSWORD
Test Sucessful if: 235 Authentication successful
Testing if user is local or remote
Our mailserver will only accept email for a remote host if you authenticate first. Without authentication it will only accept email for local domains.
telnet mail.domainname.com 25 helo mailserver mail from: testingadmin@stardothosting.com rcpt to: superadmin@gmail.com
Local Domain if: 250 ok
Remote Domain if: 553 sorry, that domain isn’t in my list of allowed rcpthosts
Looking up an MX record
Two or three lookups should be done off of various DNS servers. ns1.stardothosting.com, a public recursive NS server (168.144.1.130), and the NS server specified in the WHOIS of the domain. Ideally these will all match, if they don’t then connections to the incorrect mailserver may be made.
WINDOWS COMMAND PROMPT
nslookup set type=mx server NS SERVER NAME OR IP DOMAIN server NS SERVER NAME OR IP DOMAIN server NS SERVER NAME OR IP DOMAIN
Testing to see if remote server will accept a message
Similar to the test we use to see if our mail server will take the message as a local delivery you can do the same test on the remote server to see if it will take the message.
telnet mail.domainname.com 25 helo mailserver mail from: testingadmin@stardothosting.com rcpt to: ADDRESS CLIENT IS TRYING TO EMAIL
Test Sucessful if: 250 ok
Send an entire message to a mailserver
telnet mail.domainname.com 25 helo mailserver auth login BASE64 Encoding of USERNAME BASe64 Encoding of PASSWORD mail from: testing@stardothosting.com rcpt to: sales@stardothosting.com data To: StarDot Sales sales@stardothosting.com From: testing@stardothosting.com Subject: This is a test email Dear SDH, This is the body of your email. .
Test Sucessful if: 250 ok
Check to see if a remote server is in an RBL
You will need to find out what the IP address of the machine that is actually sending the email out to the internet. There are many tools out there to check you rdomain / IP address againts many RBL lists :
* http://www.robtex.com/rbl/
* http://www.anti-abuse.org/multi-rbl-check/
* http://checker.msrbl.com/
RBL’s Checked Against:
* relays.ordb.org
* sbl-xbl.spamhaus.org
* bl.spamcop.net
SpamAssassin Troubleshooting
Via the webmail (Squirrel Mail) place the address that is trying to email the customer in the whitelist. When the email arrives check the email headers which will show any SpamAssassin checks that applied points to the message. Details on the SA tests and how to check email headers is available on the links below:
* Headers: http://www.spamcop.net/fom-serve/cache/19.html
* SA Tests: http://spamassassin.apache.org/tests_3_1_x.html