I've got several production servers running a LAMP stack. They each have a local Postfix server catching any mail from the system and from PHP, and relaying it via a smarthost (the SendGrid SMTP service).
I'd like to add a custom header to every outgoing message sent to the smarthost. This allows me to filter statistics per server in SendGrid. Something like:
X-SMTPAPI: {"category": "www1"}
The Postfix docs mention using the PREPEND action in a Postfix 'access' table. So, I added the following line to /etc/postfix/access
:
PREPEND X-SMTPAPI: {"category": "www1"}
and hashed the access
file with postmap.
However, I have no idea how to use the map. Something like the following doesn't work:
smtp_client_restrictions = check_client_access hash:/etc/postfix/access
How do I make Postfix prepend this header?
This answers your exact question: https://web.archive.org/web/20150706131729/http://hoursofop.tumblr.com/post/17760274650
Quick steps reported here:
create a file /etc/postfix/sendgrid_headers and add this line to it:
update your master.cf file with the following lines:
It applies to a Ubuntu system and worked perfectly for me. Be careful to choose the right "smtp" line in master.cf. I used a tab to indent the
-o
line.Also note that SendGrid strips out the
X-SMTPAPI
header from the email before it is sent on - so you won't find it there but you will see the category appear within the SendGrid dashboard.You seem to have mis-spelled
header_checks
assmtp_client_restrictions
, which isn't even the correct spelling of the wrong parameter. ☺This sort of thing is far better done with a simple shim around
sendmail
, that your PHP (or whatever) scripts are configured to use, you know. The shim script would be a simple exercise in the use of thecat
andecho
commands. The MTS is really the wrong place to be doing this.I had a similar problem with Sparkpost: I needed to add their custom header in order to set some delivery options.
This problem (adding a custom header to all emails) has many different solutions.
My solution is using Postfix header_checks and prepending the custom header to the "From" header.
Create a new file, named /etc/postfix/my_custom_header:
Edit /etc/postfix/main.cf (appending to the bottom):
reload Postfix configuration (this command is for Debian Wheezy, and may be different on your OS)
EDIT: Unfortunately, this method adds the header to all emails (incoming and outgoing). I am still searching for a method that adds the header only to outbound emails.