- Published on
Setup a Relayhost with Postfix to Send Mail via Sendgrid
- Authors
- Name
- Ruan Bekker
- @ruanbekker
In this post we will setup Postfix to Relay Mail through SendGrid and we will also configure the authentication as SendGrid is not an open relay, but you can obtain credentials by signing up with the for a free account to obtain your username and password which will use to relay mail through them.
Access Control on Postfix
For this demonstration we can make use of the mynetworks configuration to specify the cidr of the source which we want to allow clients to be able to relay from. This is a acceptable way of controlling which source addresses you would like to authorize to relay mail via your smtp relay server.
Sendgrid
Sendgrid offers 100 free outbound emails per day, sign up with them via sendgrid.com/free, create a API Key and save your credentials in a safe place.
You first need to verify your account by sending a mail using their API, but it's step by step so won't take more than 2 minutes to complete.
Setup Postifx
I will be using ubuntu to setup postfix and configure postfix to specify sendgrid as the relayhost and also configure the authentication for the destination server in question:
$ apt install postfix libsasl2-modules -y
Configure postfix to relay all outbound mail via sendgrid, enable sasl auth, tls, relayhost etc via /etc/postfix/main.cf
. The settings that needs to be set/configured:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587
mynetworks = /etc/postfix/mynetworks
Create the /etc/postfix/mynetworks
file where the whitelisted source addresses will be specified. In our case the loopback address and the class c subnet 10.0.1.0 :
127.0.0.1/32
10.0.1.0/24
Create the credential file where the credentials for the sendgrid service will be stored, in my case it will be in /etc/postfix/sasl_passwd
:
[smtp.sendgrid.net]:587 your_username:your_password
Apply permissions and update postfix hashtables on the file in question:
$ chmod 600 /etc/postfix/sasl_passwd
$ postmap /etc/postfix/sasl_passwd
Enable and Start the Service:
$ systemctl enable postfix
$ systemctl restart postfix
Send a Test Mail
From the server you can test your mail delivery by sending a mail:
$ echo "the body of the mail" | mail -r user@authenticated-domain.com -s "my subject" recipient-mail@mydomain.com
or using telnet for a remote system:
$ telnet smtp-server.ip 25
helo admin
mail from: me@mydomain.com
rcpt to: recipient-main@mydomain.com
DATA
Subject: This is a test
From: James John <me@mydomain.com>
To: Peter Smith <recipient-mail@mydomain.com>
ctrl + ]
q
You can monitor /var/log/maillog
to see log messages of your email.
Thank You
Thanks for reading, feel free to check out my website, and subscribe to my newsletter or follow me at @ruanbekker on Twitter.
- Linktree: https://go.ruan.dev/links
- Patreon: https://go.ruan.dev/patreon