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を試すとアップグレードを勧められて使えません.


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
sourceのclone
build
好みの場所にインストール
$ 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側で無料アカウントに対してアクセス制限をするようになると使えなくなると思います.そのためいつまで利用できるかわからない方法です.それが嫌なら有料アカウントにアップグレードするか別のサービスを使うしかなさそうです.
環境
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
$ 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