Eppie-io / Eppie-CLI

Command line client for Eppie — an encrypted p2p email
https://eppie.io
Apache License 2.0
28 stars 3 forks source link
cli cryptography csharp decentralization email emailclient encryption end-to-end-encryption gmail imap-client outlook p2p pgp protonmail security

Command line client for Eppie — an encrypted p2p email

LicenseBadge WindowsBadge LinuxBadge macOSBadge FrameworkBadge Build and Test CrowdinBadge Release

Intro

Eppie-CLI is a work-in-progress command line client for the upcoming encrypted p2p email Eppie. Currently, it is primarily used for testing during Eppie Core module development. It has limited functionality at the moment, but in the future Eppie-CLI will become an official fully featured CLI for Eppie.

You might find Eppie-CLI interesting if

In any case you are very welcome to fork, build and explore this module to your heart's content (see instructions below).

Features

The decentralized protoccol is still in development and its features are not yet available in Eppie-CLI. Meanwhile Eppie works as a conventional CLI email client with additional security features:

Build project

Prerequisites

Clone

First of all, clone the project repository to your machine:

git clone --recursive https://github.com/Eppie-io/Eppie-CLI.git eppie-cli

Build

To build the Eppie.CLI project, run the following command in the project root directory:

dotnet build ./src/Eppie.CLI/

Downloads

You may want to skip the building and download the latest release for your system:

Windows binaries

Linux binaries

MacOS binaries

Launch

If built from the source

To launch Eppie Console application, run the following command:

dotnet run --project ./src/Eppie.CLI/Eppie.CLI/Eppie.CLI.csproj

If you compile your own binaries, you will need to authorize the application in Google Developer Console and Microsoft Azure Portal in order to be able to connect Gmail and Microsoft Outlook mailboxes. Basically, Google and Microsoft want to know a little bit about the app before they allow it to access their users' data. Here is a little tutorial. When you get the Client ID and Client Secret (only Gmail) pass them as arguments with launch command, like this:

dotnet run --project ./src/Eppie.CLI/Eppie.CLI/Eppie.CLI.csproj -- --Authorization:Gmail:ClientId="<gmail-client-id>" --Authorization:Gmail:ClientSecret="<gmail-client-secret>" --Authorization:Outlook:ClientId="<outlook-client-id>"

If you download the binaries you can skip this step. We went through Google's and Microsoft's security audits and certification procedures, so it is now a bit more convenient.

If downloaded the binaries

Go to the project folder:

Linux and MacOS

Add execute pemission:

chmod +x ./eppie-console

Launch:

./eppie-console

Windows

.\eppie-console.exe

Available commands

Usage

Here is an example session.

usage

Go to the project folder and run eppie-console as described above. Create your local account with init command. Create a password and write down your seed-phrase. Remember, you will never be able to restore it if you lose it. Also, never share the seed-phrase with anybody.

To clarify, the password protects your local database. The seed-phrase will be your way to access the decentralized account whenever you want to connect a new device to existing account. That is when the decentralized network is launched. Currently decentralized messaging is available on a small testnet, and you cannot connect multiple devices to the same account.

Go ahead and add an email acount with add-account -t email. Choose a service and authorize Eppie to access your account in browser. Then fill in IMAP/SMTP settings.

List your connected mailboxes with list-accounts. Show all messages with show-all-messages.

Next time you log in to Eppie, run open command and enter your password.

Send a message with send -s <sender address> -r <receiver address> -t <subject>.

Planned features

As the main project matures more features will be added to this CLI, including but not limited to

How to contribute

First of all this is a pretty ambitiois project and we are greateful beyond measure for every bit of help from our community.

If you decide to contribute, please create an issue first, or find an existing one, unless it's a very minor fix, like a typo.

Here you can help Eppie with localization.

Background

Eppie is a next generation email and decentralized identity provider. It features open protocol, serverless architecture, cryptocurrency-grade privacy with full account ownership, ease of use, and SMTP-to-web3 messaging capability.

Eppie is developped to store the data using IPFS infrastructure, and the transport layer will work through SBBS. But the architecture allows to easily plug in multiple storage and transport technologies. Eppie's e2e encryption is based on Elliptic-curve cryptography. GUI application is being written in C# with Uno, and CLI is pure C#. Eppie targets Windows, macOS, Linux, iOS, and Android platforms.