Robbert Haarman


Notice of Deprecation

Important note: It turns out that the idea behind emsg has already been standardized in the message/external-body MIME type, described in RFC 1341, with the URL access method being added in RFC 2017. As these documents precede emsg, the mechanisms they describe are more general, and implementations of these RFCs are more widespread than implementations of emsg, I will do no further work on emsg, and refere interested parties to the message/external-body MIME type instead.


emsg, short for electronic message, is a modification to email that reduces the damage done by spam, as well as making sending spam less attractive. The basic idea is that the messages are kept by the sender, and only a link to the message is actually transfered to the recipients. This reduces the network traffic and storage space that is wasted when messages go unread, and facilitates sender identification.


Bulk email uses a lot of bandwidth and takes up a lot of storage space on recipients' servers. All these resources are essentially wasted in case the recepient decides not to open the message, which is what happens to many unsollicited messages. Also, the original sender of an email is sometimes hard to trace.

emsg solves all these issues by keeping the message at the sender's side. Recipients are only sent a reference to the message, which saves space and bandwidth. Moreover, the server the message was sent through can easily be identified.


A new MIME type is defined (text/x-emsg for now). This type specifies a reference to a stored message. References consist of a line of the form

uri URI

specifying the location the message can be fetched from, for example, an HTTP URL. Later versions of this specification may specify additional fields.

It is recommended that emsg references in emails be accompanied by a textual, human readable explanation telling users of non-emsg-aware mail user agents where to fetch the message. An example emsg in email could be:

To: fred@foobar.com                                                             
From: j.r.hacker@2600.com                                                       
Subject: Example                                                                
Content-Type: multipart/alternative; boundary="bbboundarybbb"                   
This is a multi-part message in MIME format.                                    
Content-Type: text/plain                                                        
This is an emsg. You can fetch the original message by going to                 
For an explanation of what emsgs are, go to

Content-Type: text/x-emsg                                                       
uri http://2600.com/~j.r.hacker/emsg/132890574023859