This is the second in a series of articles on reading internet message headers. If you haven't already done so, please read the first article, Reading Internet Message Headers.

This time we're using a message I sent to myself from a account I set up for this purpose. None of the headers except the received: line will normally appear more than once in any message.

Return-Path: <>
Received: from (
	[]) by
	(8.8.5/8.8.5) with ESMTP id WAA29149
	for <cynthia@dev.null>;
	Thu, 11 Sep 1997 22:40:20 -0400 (EDT)
Received: (from root@localhost)
	by (8.8.5/8.8.5) id TAA22003
	for cynthia@dev.null; Thu, 11 Sep 1997
	19:40:18 -0700 (PDT)
Message-Id: <>
Received: from by with HTTP;
	Thu, 11 Sep 1997 19:40:18 PDT
X-Originating-IP: []
From: "Suzy Smith" <>
To: cynthia@dev.null
Subject: testing headers
Date: Thu, 11 Sep 1997 19:40:18 PDT
Restrict: no-external-archive
X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.3 (32)
  • Return-Path: <>
    This field is like the reply-to: field in usenet headers, and like that field it is incredibly easy to forge.

  • Received: from ( []) by (8.8.5/8.8.5) with ESMTP id WAA29149 for <cynthia@dev.null>; Thu, 11 Sep 1997 22:40:20 -0400 (EDT)
    Received: (from root@localhost) by (8.8.5/8.8.5) id TAA22003 for cynthia@dev.null; Thu, 11 Sep 1997 19:40:18 -0700 (PDT)
    Received: from by with HTTP; Thu, 11 Sep 1997 19:40:18 PDT

    As in many messages, there are two received: lines. Sometimes forgers will deliberately insert misleading received: lines to make it seem as though the email went through a system that is wholly unrelated to the ones through which it actually travelled. Messages can also be sent through multiple servers to deliberately obscure their origins--it's called "chaining" when you do it with anonymous remailers. Each machine that gets the message adds one received: line.

    In any case, the first line says that a machine at with the IP address passed this message to a machine at at 10:40pm eastern daylight time on September 11, 1997, and that it was addressed to cynthia@dev.null. Sometimes the name of the sending machine will be faked, so if I had reason to doubt the origin of the message I'd probably double-check to see just what machine was really Don't worry about the (8.8.5/8.8.5) part, as (I believe) that's just the version of sendmail the receiving computer is using.

    The second line says that the message was received from root@localhost by a machine at addressed to cynthia@dev.null. The time is different from the first, because it's on pacific daylight time. Sendmail doesn't verify the sender on email, so root@localhost is just the name given to that mail server when the message was handed to it. It could be anything from my real name to God to the IP address of my machine. MindSpring now requires that a valid email address be used to send mail through their servers--but it could be anybody's valid email address anywhere, even, because sendmail doesn't check.

    The third received line finally has some actual information as to who created the message. It says that the machine received the email through HTTP (hypertext transfer protocol--what the web uses) from Now someone could at least look and see that whoever sent it was using MindSpring, as is one of their IP addresses. It would take MindSpring examining their server logs, though, to know that I was the user logged in at that IP address at that time (MindSpring uses dynamic IP addressing now). The "with HTTP" part is somewhat unusual (well, to me, anyway) but makes sense because is a web-based email service.

    The time on the three received lines could be important if you're trying to figure out whether any of those lines is faked--sometimes the time in one of them is patently ridiculous.

  • Message-Id: <>
    This one is the unique message ID that assigned to the message. With it they should be able to tell which user sent the message, even if I'd found a way to obscure my email address.

  • X-Originating-IP: []
    I've only see this one from, too. That's the IP address of the user who sent the email. It's the same as the third received: line, but provides a cross-check in case someone had found a way to munge that line. With this or any other IP address, if it isn't a valid IP address format you know it's faked. IP addresses always have 4 sections (like and the digits in each place must be within the range 0 to 255. So is valid, but wouldn't be. I've never seen this one faked, but that doesn't mean that it can't be faked.

  • From: "Suzy Smith" <>
    Fairly simple--the name I entered in the settings of my account, and my address. It isn't easy to fake this one from a account after you've created the account--but it would be laughably easy to fake it anywhere else, or to simply create the account with a fake name. As I said above, sendmail doesn't do any kind of verification as to who is sending a message. MindSpring is the only place I've heard of that even requires a valid email address from the sender, and they don't verify as to whether it is really the sender's address. Hotmail doesn't bother to verify the identity of people who sign up for their free accounts, anyway, so I could have claimed to be Sarah Ferguson and they'd be no wiser.

  • To: cynthia@dev.null
    The intended recipient. It's simple here, but if there were multiple recipients you'd see a list of names separated by commas. If the name here isn't one of your email addresses and you wonder how you got the email, look for a line that says cc: with your email address. If it isn't there, either, you were bcc'd on the message--a common tactic of spammers. Some mail software doesn't even check to see if the address in the to: field is valid--so you could put anything there and put the real recipient's name in the bcc: field. I've seen lots of spam with to: addresses like "" that are obviously faked.

  • Subject: testing headers
    Subject of the message as assigned by the sender.

  • Date: Thu, 11 Sep 1997 19:40:18 PDT
    Time the mail was sent, usually from the sender's machine (in this case, from hotmail's time rather than my own--it's pacific daylight time again). I got email from a friend a little while ago, and this line said he sent it at 20:26:49. The received: line said MindSpring's servers got it at 20:31:25, so either his clock is slightly slow or there was a five minute delay (he's another MindSpring user).

  • Restrict: no-external-archive
    Actually this one and the next one weren't in the headers of the email from HotMail, but they are in many of the messages I receive. Restrict: no-external-archive is an extra header that can be used to tell anyone archiving, for instance, a mailing list in which you participate that you do not want your messages included in the archive. It's much like the x-no-archive: header for usenet messages. Again, it's an honor system - the archiving entity might ignore this header.

  • X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.3 (32)
    This one tells you the software the sender used to send the message. Sometimes it just isn't in the headers at all. If, however, I received an odd message from a friend who is a Mac user and noticed that it was sent by someone using a Windows version of Eudora Pro, I'd know it was a fake.

In the next article, we will briefly look at messages sent through mailing lists.

Originally published February 10, 2001

About the Author

Cynthia Armistead is a freelance technical writer, quality assurance analyst, and Internet security advocate with a broad spectrum of experience.

Please if you'd like to discuss a project.