As you learned in How Internet E-mail Systems Send E-mail, Internet E-mail servers don’t really care what is in an E-mail message. However, the software people use to create and read messages certainly does. RFC 822 describes the correct format of the structure of an email message. RFC 822 has been extended by several later RFCs, but the basic structure remains the same.
A typical Internet E-mail message that has been transmitted between systems looks something like:
Received: (qmail 32161 invoked from network); 28 Dec 2001 01:22:23 -0000 Received: from mail.somedomain.com (10.45.124.32) by mail.yourdomain.com with SMTP; 28 Dec 2001 01:22:23 -0000 Received: (from user@localhost) by mail.somedomain.com (8.11.6/8.11.6) id fBS1Mon10019; Thu, 27 Dec 2001 19:22:50 -0600 Date: Thu, 27 Dec 2001 19:22:50 -0600 From: firstname.lastname@example.org Message-Id: <200112280122.fBS1Mon10019@sendingdomain.com> To: email@example.com Subject: Hello Hi there, how's it going? -- You know who
A message begins with several headers, which are formatted lines beginning with a header identifier, followed by a colon and a space, followed by the contents of the header. Many standard header identifiers are specified in RFC 822 and follow-up RFCs. Any other header used for non-standard purposes may be created of the form X-headername:
After the headers comes a blank line, followed by the message body (which doesn’t concern us).
Your E-mail software, by default, will only display a subset of the headers found in a typical message, because the rest aren’t normally important to you. In order to figure out where a message came from, however, you need to look at the Received: headers.