In Ubuntu 16.04 VPS with LEMP in DigitalOcean I have a WordPress web site that has a contact form I created with Contact Form 7 (CF7).
My problem
I have a problem transferring emails from my WordPress contact form (CF7) to my email (Gmail).
I must say, I'll humbly prefer a non-plugin solution.
DNS zone for my machine
A
record holding the domain.Cname
record holding awww.
variant for the domain.- Three
NS
records to associate DNS requests to my domain, with my IP and the relevant app in its machine.
I did try to add MX
records, by the automatic DigitalOcean way of doing so (by clicking Add Gmail MX records
button in the DigitalOcean DNS management tool), and 5 MX
records were added but I still had the same error after I immediately tried to send a test email from WordPress (see error below).
Currently, the DNS zone has no MX
records because I'm not sure they are even required if all I desire in the context of emails is just to send WordPress contact form inquiries to my Gmail account and I'm still in the same state with the same error.
Exact error and debug tries:
I always get the following error message, inside a a red box under the contact form:
Failed to send your message.
Due to this error, nothing is sent anywhere (not even to the Spam folder).
Trying to debug this, I ran the following code to create a log for Postfix:
touch /var/log/mail.log
- There are no errors in the Nginx logs.
The permissions are:
rw-r--r-- 1 root root
But nothing gets written in this error log after I try to send myself a test email and fail.
Reproducing my problem:
- Create a DigitalOcean Ubuntu 16.04 droplet.
- Create a LEMP stack and run a WordPress website on it.
sudo apt-get update && sudo apt-get upgrade postfix
.- Choose "internet-site" configuration.
- Type the domain of the site you work with.
- Install Contact Form 7 on your WordPress site and try to send yourself a test email.
My question
What causes this problem?
Maybe I can try something with Postfix or an alternative tool I should use like sSMTP? I'd prefer a minimal to no-conf tool. I emphasize that I don't send any other emails to my Gmail besides those landing in the WordPress contact form, nor do I send no other emails anywhere, from this machine.
In the past, I installed Postfix as described above and there weren't any problems. If you have any idea what to check, what details I should provide, please tell me and I'll edit.
Update
1) The file /etc/postfix/main.cf
is all default.
2) Output of ps -efl | grep postfix
:
5 S root 4611 1 0 80 0 - 16352 ep_pol 07:42 ? 00:00:00 /usr/lib/postfix/sbin/master -w
4 S postfix 4613 4611 0 80 0 - 16881 ep_pol 07:42 ? 00:00:00 qmgr -l -t unix -u
4 S postfix 4930 4611 0 80 0 - 16869 ep_pol 11:02 ? 00:00:00 pickup -l -t unix -u -c
0 S root 5201 5187 0 80 0 - 3236 pipe_w 12:19 pts/0 00:00:00 grep --color=auto postfix
The problem seems to come from WordPress, form the configuration of the contact form in particular, as the problem also happened with
sSMTP
which some consider a simpler tool than Postfix:When I deleted the original form and created a new one, I got a green message saying that the message was sent in a test email.
Here also, I didn't get a message even to the Spam dir, but at least the response was different and the original problem had nothing to do with Postfix.
From How to fix wordpress contact form not sending email with smtp:
Why WordPress Doesn’t Send Emails
WordPress uses the PHP mail function to send emails generated by WordPress or any contact plugin like WPForms. However, many WordPress hosting servers are not configured to use the mail function.
Additionally, in order to reduce spam, your email provider often checks whether your email is originating from the location it claims to be originating from. For example, if your email server is yahoo.com but your email claims to be sent from your website’s domain, chances are your form notification will be blocked before it even reaches the spam folder.
This is why we recommend using SMTP to send emails from WordPress instead of using the default PHP mail function.
SMTP (Simple Mail Transfer Protocol) is an industry standard way to send emails that use the proper authentication method to ensure email deliverability.
Seven different ways to Sunday
This section heading is because today is Sunday and the article How to fix wordpress contact form not sending email with smtp lists Seven different ways to setup SMTP:
SMTP Setup
For myself I'm using the most simplest method to have
cron
email me error messages and daily backup reports: Backup Linux configuration, scripts and documents to Gmail.To summarize the steps:
You also need to instruct gmail to allow less secure access to yourself in order to accept emails. It's documented in my answer above.
Your configuration file for
ssmtp
MUST be changed. Here is mine:Change the above lines to your gmail account name, password and machine name:
Note that WinEunuuchs2UnixPassword is your gmail password not your Linux password. To get your
hostname
useecho $HOSTNAME
.Follow the links in WordPress article.
The links in the WordPress article in the first link above should be followed to setup gmail. Only refer to my link for basic overview.