I'm writing an application that allows users to send email to dynamically-created mailing lists. For example, a user can send an email to [email protected] (the site is a league management site for sports leagues) and the email will be sent to everyone on that users's team. I'm trying to figure out what the email headers should be to deliver the email correctly and make all the From and To fields look right.
In Gmail, when you get an email from a mailing list (I'm looking at an email from google groups), it says that it came from the person who sent it and that it was sent to the list address, yet the email was delivered to me. My address doesn't appear in any of headers except in the Delivered-To: header. Is that some Google magic, or can I do the same thing?
Bonus question: I'm using Postfix+OpenDKIM to sign the emails. It will sign the message if the From domain matches the one I specified, but not if the Sender domain matches. How can I tell it to use the Sender domain instead.
From: and To: headers are for 'display purposes' (this is what is presented in the users email application as sender and recipient). They don't have to match to the real sender/recipient of a email message which are called "envelope sender"/"envelope recipient" and are specified in the smtp protocol ("MAIL FROM:...." "RCPT TO...").
Example:
Mail comes from [email protected], goes to [email protected] and is being delivered to [email protected]:
From Alice to The list Server:
Envelope Sender: [email protected]
Envelope Recipient: [email protected]
From Header: [email protected]
To Header: [email protected]
From the list Server to bob:
Envelope Sender: [email protected] (so error messages go to the list server, not to alice!)
Envelope Recipient: [email protected]
From Header: [email protected] (Bob sees Alice as the sender, this is not modified by the list server)
To Header: [email protected] (again, not modified by the list server)
Optional: Reply-To header: [email protected] (So, if bob presses reply, the reply goes to the list - added by the list server ) - beware: some people do not like reply-to header munging
Additional headers:
Some email clients also understand these additional headers and present special mailinglist features to the user:
https://www.ietf.org/rfc/rfc2919.txt https://www.ietf.org/rfc/rfc2369.txt
Also, you could add a header
Precedence: bulk
which for example tells intelligent out-of-office implementations not to send out-of-office replies to the list. But this is discouraged by RFC 2076.