Amazon SES - "Illegal Header" errors
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.
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: [email protected]
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: [email protected]
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