Troubleshooting Mail : Basic Tips

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