Skip to content

jdewald/go-ipoe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IP-over-Email (IPoE)

Yes, exactly what it sounds like. Let's suppose you're in a heavily locked down environment where the only external system you can talk to is an email provider. Or, you just want to do something whacky.

This effectively creates a tunnel where the "Layer 2" is actual email.

Architecture

Strictly speaking, sending and receiving are two completely separate systems, but usually you would have both running together to create a bi-directional interface.

Sending

To send IP packets, we make use of a Linux tun interface which is set as the destination interface for any destination networks intended to flow through this VPN. One easy way to do this is to associate an an interface IP with it and have other end also be an IPoE system.

For example, you could do a 100.64.42.2/30 on one end and 100.64.42.3/30 on the other end.

The tun interface is in fact brought up by firing up the application that handles the send side, configured with appropriate SMTP credentials to send emails, as well as the "next hops" (email addresses) of any endpoints intended to be reached through through the tunnel.

Receiving

To receive IP packets, the application will make an IMAP connection (or connections) to a server + mailbox where the packet emails will land. Upon receiving those emails, the packets will be decoded and delivered to the local machine (to be routed/delivered as appropriately).

About

Golang implementation of IP-over-Email

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages