Configure Postfix to send email through Gmail

When setting up a local development environment, sometimes you want to actually send real email. If you’re using WordPress, you can install a plugin to run your mail through an SMTP server. But if you’re running anything through the command line or you want to use the built-in PHP mail() function for any reason, then it’s really nice to be able to actually send mail.

Here’s a quick tutorial on how to set up Postfix to send email through your Gmail or G Suite account. I wouldn’t suggest sending a bunch of mail like this, but for the occasional needs that arise where you need to send out a few emails while working on a project, this is great.

Install the packages you need:

sudo apt install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules

Open /etc/postfix/main.cf and add the following lines

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Provide your Gmail credentials in this file:
vi /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 USERNAME@gmail.com:PASSWORD

If you’re using G Suite, then you should use USERNAME@your-domain.com:PASSWORD

Fix permissions and update postfix config to use sasl_passwd file:
sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Next, validate certificates to avoid running into error by running this command:
cat /etc/ssl/certs/GeoTrust_Primary_Certification_Authority.pem | sudo tee -a /etc/postfix/cacert.pem

Restart postfix so all the updates get loaded:
sudo service postfix restart

Test To See If It Worked

Run this command and see if you can send mail
echo "Test Message" | mail -s "Test From Postfix" you@email.com

NOTE: you@email.com should be a real email address. This is where the test message will be sent.

You can check this in two ways.
First: Check the sent folder in your Gmail account to see if the email was sent
Second: Check you@email.com and see if the email is in your inbox

If Things Go Wrong

If the message did not send, check /var/log/mail.err and /var/log/mail.log for clues. You may need to tweak some of the settings in your /etc/postfix/main.cf file.

For example, I had to tweak a couple things:

  • setgid_group = postdrop
  • mailq_path = /usr/bin/maiq
  • newaliases_path = /usr/bin/newaliases
  • sendmail_path = /usr/sbin/sendmail
  • comment out a few things like:
    • #html_directory
    • #manpage_directory
    • #sample_directory
    • #readme_directory

If you don’t know the path for a certain program, like mailq for example, you can type which mailq to get the path. The paths I listed above are for Ubuntu 17.10. Your paths may be different. Again, which will be your friend.

One thought on “Configure Postfix to send email through Gmail

  1. Sara Martin says:

    This is a great post. I like this topic. This site has lots of advantages. I found many interesting things on this site. It helps me in many ways.
    Thanks for sharing!!

    White Label Fantasy Sports Software Development

Leave a Reply

Your email address will not be published. Required fields are marked *