Ensuring that 100% of emails are delivered as expected can be tricky at times to maintain, but thankfully there are a number of "best practices" you can follow. Detailed below are the top tips we have to ensure email deliverability remains as high as possible.
Email Deliverability Best Practices
1. Check for a reverse DNS record
The IP address your server is sending from needs to have a valid reverse DNS (PTR). This doesn't have to match your domain, but it should also have a corresponding A record to match the reverse. If you're a Conetix customer, this is automatically configured for you.
2. Ensure your SPF records are correct
The Sender Policy Framwork (SPF) provides extra assurance that the servers sending emails on behalf of your domain name have been authorised to do so. If you have a record entered and it hasn't got the server you're sending mail from (eg your ISP or your webserver) listed, then external mailservers may simply reject the email outright or at least mark it as risky.
We have a support article on this which further details how this works: https://www.conetix.com.au/support/article/spf-guide
3. Ensure you have a valid Return-Path
By default, PHP uses sendmail as it's preferred method of sending email. If you use WordPress, Joomla or similar then this will be the default for many hosts. There can be issues with the Return-Path or even the From address with this configuration, as it will default to the user who made the call to sendmail (eg your web/FTP username). To work around this, ensure that you set PHP to use SMTP as it's preferred mail delivery. For WordPress users, this can be as simple as installing WP Mail SMTP. If you're hosted with Conetix and have installed this plugin, all you need to set is the servername as localhost with no authentication.
Similarly, if you're sending out an email campaign, then ensure that the return path is a valid email address. Setting a typical may actually cause the email to bounce if the noreply email account doesn't exist. Many mailservers then report this to a centralised reporting system to possibly blacklist your domain (see #6). We recommend using a professional email marketing system (as outlined in our Bulk Email Sending guide) so that it can track replies and bounces automatically for you.
4. Ensure your contact forms don't send on behalf of the sender
This one is tricky one to start with, as most people aren't aware that the reply-address and from components within an email can be different. For contact forms, generally you want to make it easy to respond by simply clicking on the reply button in your email client. Unfortunately though, if your mailserver scans the email and see's that it came from a external domain that your webserver isn't authorised to send from then it may reject the email. To work around this and still allow you to easily respond to the originator of the contact form, you can set the Reply-To and From separately. For example:
This will ensure that the validation applied to the email is against your domain and not the clients. For further information on this, Contact 7 (a popular WordPRess contact plugin) have a great page to explain it: http://contactform7.com/best-practice-to-set-up-mail/
5. Externally hosted email
If you have changed your email over to Office 365 or Google Apps, don't forget to turn the mail off locally for your hosting. Even if you point the MX record externally, you may still miss emails from your web forms or other users on the same server. This is because mailservers don't do any MX lookup if they believe that the mail is hosted locally on that server. You can read how to do this in our support article: https://www.conetix.com.au/support/article/website-form-emails-not-delivered-external-mail-se
6. Ensure your server hasn't been blacklisted
If the server you're sending from has been sending spam, malware and/or viruses then it may be blacklisted by one of the hundreds of Realtime Blackhole List (RBL) systems that most mailservers use. In a shared hosting environment, this doesn't even have to be your domain which caused the problem. Many cheaper hosts cram as many domains as they can on the one server (1000+ isn't uncommon) so that they can maximise their profits. If any one of the email accounts is compromised or a hacked website starts spamming, every domain on this system can be affected.
Conetix has inbuilt limitations and checks in place to limit this, as well as very low domain counts per server (generally 50 or less) to limit the potential "noisy neighbour" scenario. We also have our Professional shared hosting plan, which has a dedicated IP address to ensure email deliverability issues and reputation of the mailserver are limited to your domain only. We also scan every one of our systems against the 20 top RBL's daily to ensure non of our servers are blacklisted.
7. Check the Application
If your application (for example WordPress) sent an email which you didn't receive, it may be a failure within the application itself. If you have your own Virtual Private Server (VPS), you can check the email logs directly to determine if it was attempted to be sent. If you don't see any connection, you'll need to then check the error logs for the webserver. Some may not log the error directly, so ensure that you have debug verbosity turned up where possible to help trap the error.
8. Monitor Your Bounce Rates
If you have a newsletter or any form of mass mailout, make sure you're monitoring the email bounce-backs (emails which have been rejected. When a mail server see's a number of emails which have been addressed to recipients who no longer exist, they may choose to block all further emails from your domain and/or your server's IP address. This is especially important with systems such as Gmail, Hotmail and similar where there's a very low threshold for spam activity. Good newsletter platforms allow you to automatically remove any email account which has bounced but it's always worth double checking after each newsletter run.
Still Having Problems?
With more than 10 million emails processed through our systems each week, we have built up a lot of internal knowledge on how to check for issues and keep server logs to help trace issues. If you've run through the steps above and still having issues, please don't hesitate to contact one of our support team to investigate the issue further for you.