Update 8/2/2011: please see the followup post for a possible workaround.
A few people have inquired about the “Illegal header” error when attempting to relay email through SES. “Oncle Tom” pointed to a thread on Amazon’s forums about a similar problem which led to a list of headers Amazon will accept. The list is below; if you need to add headers outside this list, you can do so using “X-Headers.”
Some people have posted sample code in the thread with modifications to ses-send-email.pl to replace “illegal” headers read from STDIN with an equivalent X-Header. I wrote something generic that takes the list of legal headers and replaces anything not on that list with its X-Header equivalent. Disclaimer: I haven’t tested it, but it seems like this type of solution would be more adaptable since you don’t have to keep fixing it every time a new application attempts to send email with a new header. I haven’t worked this into ses-send-email.pl (since I’m not having any problems, I don’t want to touch it 🙂 ) but I fed in an email header and the output looked correct.
https://gist.github.com/1068310.js
Input email:
MIME-Version: 1.0 Received: by 10.142.136.15 with HTTP; Mon, 16 May 2011 09:32:44 -0700 (PDT) Date: Mon, 16 May 2011 12:32:44 -0400 Delivered-To: evandhoffman@gmail.com Message-ID: Subject: Hi friend. From: "Evan D. Hoffman" To: "Evan D. Hoffman (Personal)" Content-Type: text/plain; charset=ISO-8859-1 Email Test.
Output email:
[evan@EvanMBP ~]$ perl replace-headers.pl test-email.txt MIME-Version: 1.0 Received: by 10.142.136.15 with HTTP; Mon, 16 May 2011 09:32:44 -0700 (PDT) Date: Mon, 16 May 2011 12:32:44 -0400 X-Delivered-To: evandhoffman@gmail.com X-Message-ID: Subject: Hi friend. From: "Evan D. Hoffman" To: "Evan D. Hoffman (Personal)" Content-Type: text/plain; charset=ISO-8859-1 Email Test.
Hope this helps someone.
Here’s the legal header list, from http://docs.amazonwebservices.com/ses/2010-12-01/DeveloperGuide/index.html?AppendixHeaders.html
-
Accept-Language
-
Bcc
-
Cc
-
Comments
-
Content-Type
-
Content-Transfer-Encoding
-
Content-ID
-
Content-Description
-
Content-Disposition
-
Content-Language
-
Date
-
DKIM-Signature
-
DomainKey-Signature
-
From
-
In-Reply-To
-
Keywords
-
List-Archive
-
List-Help
-
List-Id
-
List-Owner
-
List-Post
-
List-Subscribe
-
List-Unsubscribe
-
Message-Id
-
MIME-Version
-
Received
-
References
-
Reply-To
-
Return-Path
-
Sender
-
Subject
-
Thread-Index
-
Thread-Topic
-
To
-
User-Agent
We are having a hard time implementing the said code into the ses code. Does anyone have a working set of this for the amazon illegal headers problem?
Here is a link that shows how to accomplish this via postfix
http://www.edutrenches.com/postfix-relay-for-amazon-ses/