I have to warn you that most of this is deep learning and a lot of time spent. You will get advice here and there that may or may not help, but email is a field that constantly changes as spammers change tactics and others are forced to change their tactics in spam prevention. If you're looking to get into inbox delivery you will need to devote a lot of time and effort to this, continually, for the foreseeable future. If you just want to deliver email without the hassle, you should outsource that effort to someone like SendGrid (for example, though many others exist).
If you still want to continue, here is something I wrote up a while ago:
There are a lot of reasons why e-mail may land in spam folders. To get a quick opinion on it, you can visit the link below and send an e-mail to the address that it generates you. This will give you a full report on how your e-mail appears to recipient servers.
These are the most common reasons why e-mails are filtered to spam folders:
- Inconsistent headers
- PTR lookup failure / no DNS record matching PTR
- SPF Failure
Inconsistent headers could be something like you sending from your server but in the “From” field it shows that it was sent from somewhere else, like Yahoo, Hotmail, etc. The “From” field should show an address that your server should be sending as (typically your domain).
You should make sure that your server’s hostname is a fully qualified domain name (example: server.mydomain.com) and that the droplet is named to match, so that the PTR record is set. Additionally, your DNS should have that hostname (example: server.mydomain.com) pointing to your droplet IP address so that reverse lookups are consistent.
Your SPF record is a DNS record of the type “TXT” which includes either a reference to a DNS record that points to your droplet IP address or the droplet IP address itself. For example, if I want to send mail as mydomain.com and I want to send from my website, as well as a droplet with the IP of 188.8.131.52, my SPF record might look like this:
“v=spf1 +a +ip4:184.108.40.206 ~all”
The “~all” tells the receiving mail server to basically do what it thinks is best if the mail does not match the “+a” (domain’s primary A record) or the “+ip4:220.127.116.11” (the droplet’s IP address). You can also use “-all” instead which suggests to the recipient mail server that any e-mail not originating from these points should be discarded.
Finally, content. Your content can be read as spam whether you intend for it to be or not. Try sending e-mails without long signatures, images, brand names, or website names to rule out the content of your e-mails. However, keep in mind that past content can impact your future e-mails as well.
Now, it is important to note that the most common belief is that blacklists cause filtering to spam folders. In most cases, blacklisting will actually cause e-mail rejection, not filtering to spam folders. However, it is certainly a possibility, even if not a probability, that blacklistings can impact what folder your e-mails land in. You can look up blacklistings for your IP address here:
Do note that not every blacklist is relevant. Recipient servers have to actually use them for them to matter. Many are not widely used, and therefore do not matter. If you question whether this is the case with a particular blacklist, feel free to ask us, we generally know which ones are important.
If I can be of any further assistance, please be sure to let me know.