ENS Name as an Email Address: ensmail.org

I really like the ENS mailbox feature of ethmail.cc (where your ENS name can be used as an email address), but it only works if you have reverse-resolution setup, and I don’t like that it forces use of the Roundcube webmail interface (I already have too many email boxes to look at). Since ENSIP-5 supports email text records in the ENS resolver, I thought it would be cool to use the email record as a forwarding address to which ENS addressed emails are sent. As a fun project, I built the ensmail.org ENS email forwarding service :slight_smile:

I own royalfork.eth, and set my ENS email record to ens@royalfork.org. With this service, any email sent to royalfork@ensmail.org will be auto-forwarded to ens@royalfork.org. This works with any ENS user who has an email text record set in their ENS domain’s resolver.



All code can be found at GitHub - royalfork/ensmail: Email for the Ethereum Name Service (the README has documentation on how it all works).

This is still very much a “proof of concept”. It only supports “.eth” second-level domains, so non-eth domains or subdomains are not yet working. It runs on a normal cloud host with no “outgoing mail reputation”, so don’t be surprised if messages land in spam. I haven’t set up “bounce messages”, so you might not receive all notifications on failures (depending on how your email service works). I’d like to eventually add:

  • Easy end-to-end encrypted emails based on ethereum keys
  • Full support for emoji email addresses: :rocket::rocket::rocket:@ensmail.org
  • Privacy mode (register your forward mail without setting text/email record)
  • Enable sending mail from ensmail.org domain (perhaps with private metadata)
  • Maybe imap and webmail interfaces?

I welcome any ENS user with an email record to try it out! (and please let me know if something breaks). Any feedback/ideas/comments/suggestions are much appreciated. :love_letter:


Similar concept was discussed in Esteroids Discord few weeks ago. Love seeing it implemented!!! :star_struck: Send c0de4c0ffee, @tomlightning some shekels @neiman


This is cool and v impressive for a proof of concept! As you said, ideally one could indicate a private receiving email without putting it into ENS profile. I am trying to imagine how you might accomplish end-to-end encryption… any thoughts on how that might work?

Tangent: I think there is a clear need for wallet-to-wallet messaging, and perhaps offramps for email too. Seems like Etherscan is best positioned to do this with their Blockscan chat, but an E2E protocol on a cheap L2 would be sweet.


This has been discussed as well in the Esteroids Discord


The ideal method would be to just encrypt a message to a user’s ethereum public key, which is easily available from inspecting the digital signature of a previous ethereum transaction. Unfortunately, not all wallet providers allow a private key to decrypt arbitary messages, so this approach might not work in practice (although I’m following this thread about Metamask potentially allowing this). It might be possible to generate signed sub-keys for “email-only” use, but I’d need to look more into various other options. If there’s a will, there’s a way :slight_smile:


I’m late to the party here @royalfork but this is a great achievement and it is nicely explained with some simple graphics, too. Well done, sir.

1 Like