Convert Figma logo to code with AI

emersion logohydroxide

A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge

1,553
120
1,553
75

Top Related Projects

Proton Mail Bridge application

:love_letter: A beautiful, fast and fully open source mail client for Mac, Windows and Linux.

:love_letter: An extensible desktop mail app built on the modern web. Forks welcome!

Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.

Quick Overview

Hydroxide is a third-party, open-source ProtonMail bridge, IMAP/SMTP server, and CardDAV server. It allows users to access their ProtonMail accounts using standard email clients and protocols, providing an alternative to the official ProtonMail Bridge.

Pros

  • Free and open-source alternative to the official ProtonMail Bridge
  • Supports IMAP, SMTP, and CardDAV protocols
  • Cross-platform compatibility (Linux, macOS, Windows)
  • Lightweight and efficient

Cons

  • Unofficial solution, not supported by ProtonMail
  • May have security implications as it requires handling of encryption keys
  • Potential for breaking changes due to ProtonMail API updates
  • Limited documentation and community support compared to official solutions

Getting Started

To get started with Hydroxide:

  1. Install Go (version 1.16 or later)
  2. Clone the repository:
    git clone https://github.com/emersion/hydroxide.git
    
  3. Build the project:
    cd hydroxide
    go build ./cmd/hydroxide
    
  4. Initialize Hydroxide with your ProtonMail account:
    ./hydroxide auth <protonmail-username>
    
  5. Start the IMAP/SMTP server:
    ./hydroxide serve
    

For more detailed instructions and configuration options, refer to the project's README file on GitHub.

Competitor Comparisons

Proton Mail Bridge application

Pros of proton-bridge

  • Official ProtonMail client, ensuring compatibility and support
  • More feature-rich, including calendar and contacts sync
  • Regular updates and maintenance from the ProtonMail team

Cons of proton-bridge

  • Closed-source, limiting transparency and community contributions
  • Requires a paid ProtonMail account for full functionality
  • Heavier resource usage compared to hydroxide

Code comparison

hydroxide:

func (b *Bridge) Login(username, password string) error {
    auth, err := protonmail.NewAuth(b.client, username, password)
    if err != nil {
        return err
    }
    b.auth = auth
    return nil
}

proton-bridge:

func (b *Bridge) Login(username, password string) error {
    // Actual code not available due to closed-source nature
    // Hypothetical implementation:
    auth, err := protonmail.Authenticate(b.client, username, password)
    if err != nil {
        return err
    }
    b.auth = auth
    return nil
}

Note: The proton-bridge code is hypothetical due to its closed-source nature, while hydroxide's code is publicly available.

:love_letter: A beautiful, fast and fully open source mail client for Mac, Windows and Linux.

Pros of Mailspring

  • User-friendly GUI with a modern, polished interface
  • Cross-platform support (Windows, macOS, Linux)
  • Advanced features like contact profiles, link tracking, and snoozing

Cons of Mailspring

  • Closed-source core, limiting customization options
  • Requires a Mailspring ID for some features
  • Heavier resource usage compared to lightweight alternatives

Code Comparison

Hydroxide (Go):

func (b *Bridge) handleLogin(w http.ResponseWriter, r *http.Request) {
    username := r.FormValue("username")
    password := r.FormValue("password")
    twoFactor := r.FormValue("twofactor")
    // ... (authentication logic)
}

Mailspring (JavaScript):

async function handleAuthRequest(req, res) {
  const { username, password, twoFactorCode } = req.body;
  try {
    const authResult = await authenticateUser(username, password, twoFactorCode);
    res.json(authResult);
  } catch (error) {
    res.status(401).json({ error: 'Authentication failed' });
  }
}

Summary

Hydroxide is a lightweight, open-source bridge for ProtonMail, focusing on simplicity and privacy. It's command-line based and ideal for tech-savvy users who prefer minimal resource usage.

Mailspring offers a feature-rich, user-friendly email client with a polished GUI, suitable for users who want a modern email experience across multiple platforms. However, it has a closed-source core and may require more system resources.

The code comparison shows Hydroxide's Go implementation for handling logins, while Mailspring uses JavaScript with async/await for authentication requests.

:love_letter: An extensible desktop mail app built on the modern web. Forks welcome!

Pros of Nylas Mail

  • Full-featured email client with a modern, user-friendly interface
  • Cross-platform support (Windows, macOS, Linux)
  • Extensive plugin ecosystem for customization and additional features

Cons of Nylas Mail

  • Discontinued project with no active development or support
  • Potential security concerns due to lack of updates
  • Requires a Nylas account and syncs data to Nylas servers

Code Comparison

Nylas Mail (JavaScript):

import { React } from 'nylas-exports';
import { RetinaImg } from 'nylas-component-kit';

class MyComponent extends React.Component {
  render() {
    return <RetinaImg name="my-icon.png" mode={RetinaImg.Mode.ContentPreserve} />;
  }
}

Hydroxide (Go):

package main

import (
    "github.com/emersion/go-imap"
    "github.com/emersion/go-imap/client"
)

func main() {
    c, err := client.DialTLS("imap.example.org:993", nil)
    if err != nil {
        log.Fatal(err)
    }
    defer c.Logout()
}

While Nylas Mail offers a rich user interface and plugin system, it's no longer maintained. Hydroxide, on the other hand, is an actively developed IMAP and SMTP bridge focusing on privacy and security. Nylas Mail uses JavaScript and React for its frontend, while Hydroxide is written in Go and provides a lower-level API for email protocols.

Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.

Pros of Tutanota

  • Full-featured email client with end-to-end encryption
  • User-friendly web and mobile interfaces
  • Active development and regular updates

Cons of Tutanota

  • Closed-source server-side code
  • Limited integration with third-party email clients
  • Requires users to use Tutanota's ecosystem

Code Comparison

Tutanota (TypeScript):

export function encryptMessage(message: string, publicKey: string): string {
  // Encryption logic
  return encryptedMessage;
}

Hydroxide (Go):

func EncryptMessage(message []byte, publicKey []byte) ([]byte, error) {
    // Encryption logic
    return encryptedMessage, nil
}

Key Differences

  • Hydroxide is a bridge for using ProtonMail with any IMAP/SMTP client, while Tutanota is a complete email service
  • Tutanota focuses on user-friendly interfaces, while Hydroxide prioritizes compatibility with existing email clients
  • Hydroxide is fully open-source, whereas Tutanota has closed-source server components

Use Cases

  • Choose Tutanota for a secure, user-friendly email experience with built-in encryption
  • Opt for Hydroxide if you prefer using your existing email client while accessing ProtonMail

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

hydroxide

A third-party, open-source ProtonMail bridge. For power users only, designed to run on a server.

hydroxide supports CardDAV, IMAP and SMTP.

Rationale:

  • No GUI, only a CLI (so it runs in headless environments)
  • Standard-compliant (we don't care about Microsoft Outlook)
  • Fully open-source

Feel free to join the IRC channel: #emersion on Libera Chat.

How does it work?

hydroxide is a server that translates standard protocols (SMTP, IMAP, CardDAV) into ProtonMail API requests. It allows you to use your preferred e-mail clients and git-send-email with ProtonMail.

+-----------------+             +-------------+  ProtonMail  +--------------+
|                 | IMAP, SMTP  |             |     API      |              |
|  E-mail client  <------------->  hydroxide  <-------------->  ProtonMail  |
|                 |             |             |              |              |
+-----------------+             +-------------+              +--------------+

Setup

Go

hydroxide is implemented in Go. Head to Go website for setup information.

Installing

Start by installing hydroxide:

git clone https://github.com/emersion/hydroxide.git
go build ./cmd/hydroxide

Then you'll need to login to ProtonMail via hydroxide, so that hydroxide can retrieve e-mails from ProtonMail. You can do so with this command:

hydroxide auth <username>

Once you're logged in, a "bridge password" will be printed. Don't close your terminal yet, as this password is not stored anywhere by hydroxide and will be needed when configuring your e-mail client.

Your ProtonMail credentials are stored on disk encrypted with this bridge password (a 32-byte random password generated when logging in).

Usage

hydroxide can be used in multiple modes.

Don't start hydroxide multiple times, instead you can use hydroxide serve. This requires ports 1025 (smtp), 1143 (imap), and 8080 (carddav).

SMTP

To run hydroxide as an SMTP server:

hydroxide smtp

Once the bridge is started, you can configure your e-mail client with the following settings:

  • Hostname: localhost
  • Port: 1025
  • Security: none
  • Username: your ProtonMail username
  • Password: the bridge password (not your ProtonMail password)

CardDAV

You must setup an HTTPS reverse proxy to forward requests to hydroxide.

hydroxide carddav

Tested on GNOME (Evolution) and Android (DAVDroid).

IMAP

⚠️ Warning: IMAP support is work-in-progress. Here be dragons.

For now, it only supports unencrypted local connections.

hydroxide imap

License

MIT