Question
How to configure Postfix to send emails using SendGrid in Plesk?
Answer
Note: The steps below describe how to configure integration with 3rd-party service and should be performed on the server's administrator risk. Or consider this task to be handled by Plesk Professional Services
Warning: The configuration below is not compatible with the Plesk Email Security extension. Consider removing it before applying the changes below
-
Connect to the server via SSH.
-
Define which MTA is installed on the server and switch to Postfix if necessary.
-
Create a backup of the original
/etc/postfix/main.cf
configuration file and open it with a text editor:# cp -a /etc/postfix/main.cf{,.original}
# vi /etc/postfix/main.cf -
Modify the following:
-
Add the SendGrid SMTP service as relayhost to the
/etc/postfix/main.cf
configuration file:relayhost = [smtp.sendgrid.net]:2525
Note: That port 2525 is used because the outbound connections on ports 25, 587 are not allowed on Google Compute Engine.
-
Add the following lines at the end of the file:
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
header_size_limit = 4096000
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
Additional step for Google Cloud instances
Check if the following parameters exist and if so, comment them out by adding a hashtag sign in the beginning of the line:
default_transport = error
relay_transport = errorCommented out directives
#default_transport = error
#relay_transport = error -
-
After the parameters are set, make sure that there are no duplicate directives that can break the configuration:
# cat /etc/postfix/main.cf | grep "relayhost|smtp_sasl_auth_enable|smtp_sasl_password_maps|smtp_sasl_security_options|smtp_sasl_tls_security_options|smtp_tls_security_level|header_size_limit"
Comment out/remove duplicate directives if there are some.
-
Generate the SASL password map using the API key from the SendGrid panel:
Note: Replace <your_SendGrid_API_Key_value> in the command below with the real API Key value:
# echo [smtp.sendgrid.net]:2525 apikey:<your_SendGrid_API_Key_value> >> /etc/postfix/sasl_passwd
-
Use the
postmap
utility to generate a.db
file:# postmap /etc/postfix/sasl_passwd
-
Verify that the
.db
file has been created:# ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db -
Set proper permissions on the
.db
file:# chmod 600 /etc/postfix/sasl_passwd.db
-
Remove the file containing SendGrid API Key as it is no longer needed:
# rm /etc/postfix/sasl_passwd
-
Reload Postfix service to apply changes:
# service postfix restart