hydroxideを使い無料アカウントのProton MailでもIMAP/SMTPを使う

Proton MailでOSSのメールブリッジを使うことで無料アカウントでもIMAP/SMTPが利用できたのでメモしておきます.

ProtonMailというスイスの会社のメールサービスがあります.コードはOSSで公開されており,自動的にPGP鍵を作成してE2EEを使えたりします.

現在はオンラインストレージ,VPN,カレンダー,パスワードマネージャーなどのサービスも開始しています.無料でも使えますし,脱gmailな向きには勧めやすいサービスです.

しかし,無料ではIMAP/SMTPが利用できないため好みのMUAが利用できずウェブインターフェイスしか利用できません.€4.99よりの有料プランにアップグレードすることでProton Mail Bridgeというプログラムを利用してIMAP/SMTPが利用できるようになり,好みのMUAが使えるようになります.

 Email client support (via IMAP/SMTP)
Proton Mail supports desktop clients such as Outlook, Apple Mail, Thunderbird, etc. via Proton Mail Bridge.

無料アカウントでProton Mail Bridgeを試すとアップグレードを勧められて使えません.

Proton Mail Bridgeの起動画面
無料アカウントでは利用できない

hydroxideを使う

hydroxideはGo製MITライセンスのProton bridgeです.IMAP/SMTPの他にCardDAVにも対応しています.
Proton Mail Bridgeと違い,GUIは提供されていません.

hydroxideのインストール

ビルドとインストール
$ git clone https://github.com/emersion/hydroxide.git (1)
$ cd hydroxide
$ go build ./cmd/hydroxide (2)
$ install ./hydroxide ~/bin/ (3)
$ which hydroxide
/home/matoken/bin/hydroxide
  1. sourceのclone

  2. build

  3. 好みの場所にインストール

help
$ hydroxide --help
usage: hydroxide [options...] <command>
Commands:
        auth <username>         Login to ProtonMail via hydroxide
        carddav                 Run hydroxide as a CardDAV server
        export-secret-keys <username> Export secret keys
        imap                    Run hydroxide as an IMAP server
        import-messages <username> [file]       Import messages
        export-messages [options...] <username> Export messages
        sendmail <username> -- <args...>        sendmail(1) interface
        serve                   Run all servers
        smtp                    Run hydroxide as an SMTP server
        status                  View hydroxide status

Global options:
        -debug
                Enable debug logs
        -api-endpoint <url>
                ProtonMail API endpoint
        -app-version <version>
                ProtonMail application version
        -smtp-host example.com
                Allowed SMTP email hostname on which hydroxide listens, defaults to 127.0.0.1
        -imap-host example.com
                Allowed IMAP email hostname on which hydroxide listens, defaults to 127.0.0.1
        -carddav-host example.com
                Allowed SMTP email hostname on which hydroxide listens, defaults to 127.0.0.1
        -smtp-port example.com
                SMTP port on which hydroxide listens, defaults to 1025
        -imap-port example.com
                IMAP port on which hydroxide listens, defaults to 1143
        -carddav-port example.com
                CardDAV port on which hydroxide listens, defaults to 8080
        -disable-imap
                Disable IMAP for hydroxide serve
        -disable-smtp
                Disable SMTP for hydroxide serve
        -disable-carddav
                Disable CardDAV for hydroxide serve
        -tls-cert /path/to/cert.pem
                Path to the certificate to use for incoming connections (Optional)
        -tls-key /path/to/key.pem
                Path to the certificate key to use for incoming connections (Optional)
        -tls-client-ca /path/to/ca.pem
                If set, clients must provide a certificate signed by the given CA (Optional)

Environment variables:
        HYDROXIDE_BRIDGE_PASS   Don't prompt for the bridge password, use this variable instead

認証

authオプションでProton Mailとhydroxideの間での認証と,hydroxideとMUAの間で使うパスワードの生成を行います.
Proton Mailとの認証後に表示されるブリッジパスワードはMUAとの認証に使います.保存しておきましょう.

$ hydroxide auth <username>

認証情報は ~/.config/hydroxide/ 以下のファイルに保存されます.

hydroxideの起動

  • SMTP

smtpオプションでSMTPのブリッジが起動します.

$ hydroxide smtp
port

1025

セキュリティ

なし

user

Proton Mailと同じ

password

authオプションで表示されたブリッジパスワード

  • CardDav

carddavオプションでCardCadのブリッジが起動します.httpsリバースプロキシを起動して利用するようですが未検証.

$ hydroxide carddav
  • IMAP

imapオプションでIMAPのブリッジが起動します.

$ hydroxide imap
port

1143

セキュリティ

なし

user

Proton Mailと同じ

password

authオプションで表示されたブリッジパスワード

Warning
IMAPのサポートは進行中らいいです.とりあえず数時間使った程度だと普通に使えていそうです.
  • serveオプションで複数のサービスの起動

hydroxideを複数起動しないようにとの注意がREADME.mdにあります.複数のサービスを起動したい場合はserveオプションで全てのサービス(SMTP, CardDav, IMAP)が起動します.

$ hydroxide serve

3つのサービスのうち2つだけを起動したい場合はserveオプションの他に-disable-サービス名のオプションを指定します.以下はCardDavを無効にしてSMTPとIMAPが起動します.

$ hydroxide -disable-carddav serve

MUAの設定

hydroxideを起動した状態で好みのMUAに設定を行います.
TLSなどには非対応なので注意.

あとは普通に利用できます.
Proton Mailに作られたたものではない自分のPGP鍵を使うこともできます :)

hydroxideの自動起動とアクセス制限

はじめRaspberry Piでhydroxideを起動してLaptopのMUAから繋ごうと思っていましたが,既定値ではTLSが利用されず通信が平文で行われるのでリモートで動かすのはやめてlocalhostで動かすことにしました.

MUAでメールを送受信するときにはhydroxideが起動している必要があります.
デスクトップ環境の自動起動機能や,crontabの@rebootなどやMUAの起動scriptに加えたりすると良さそうです.

そしてそのままだとリモートから繋ぐこともできるのでlocalhostからしか受け付けないようnftableなどで制限を掛けたほうが良さそうです.

おわりに

ということでhydroxideを利用し,無料アカウントでProton MailのIMAP/SMTPを使えるようにして自分好みのMUAを利用できるようになりました.これでウェブブラウザを起動しなくてもメールの送受信ができたり自分の作成したPGP鍵を利用できます.
ただ,hydroxideもProtonのAPIを叩いているようなのでProton BrisgeのようにProton側で無料アカウントに対してアクセス制限をするようになると使えなくなると思います.そのためいつまで利用できるかわからない方法です.それが嫌なら有料アカウントにアップグレードするか別のサービスを使うしかなさそうです.

環境

$ git log –pretty=oneline -1
c964219ad4996d90b34d730b98a8c736b9bc9921 (HEAD -> master, tag: v0.2.29, origin/master, origin/HEAD) Support BODY and TEXT in search

$ dpkg-query -W golang
golang:amd64    2:1.23~2
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64
環境2(Raspberry Pi OS bookworm armhf)
$ git log --pretty=oneline -1
c964219ad4996d90b34d730b98a8c736b9bc9921 (HEAD -> master, tag: v0.2.29, origin/master, origin/HEAD) Support BODY and TEXT in search
$ dpkg-query -W golang
golang:armhf    2:1.19~1
$ lsb_release -dr
No LSB modules are available.
Description:    Raspbian GNU/Linux 12 (bookworm)
Release:        12
$ arch
armv7l

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です