ProtonMail、メールを書き換える
(jfloren.net)- ProtonMail の Android アプリで、作成直後に送信したメールの一部だけが送られる問題が発生したため、ユーザーは Proton Bridge に別のメールクライアントを接続して回避した
- NAS の VM で Bridge を実行し、rinetd と Tailscale で IMAP/SMTP へのアクセスを開放して、Android の FairEmail と Linux の Claws で同じアカウントを使用した
- FairEmail+OpenKeyring と Claws に PGP/MIME 署名を設定したが、テストメールはどちらのクライアントでも署名付きメールとして認識されなかった
- Claws のメンテナーは MIME 構造が壊れていると見ており、Proton Bridge の既存 Issue でも、Proton の自動 PGP 処理とユーザーの署名が衝突すると指摘されている
- 問題の核心は、Proton がメールをひそかに変形しながらも、
multipart/signedやmultipart/encryptedをそのまま残すオプションを提供していない点にある
Android アプリの問題と Proton Bridge による回避
- Google に不満を感じて数年前に ProtonMail へ移行し、その後はおおむね使える状態だったが、数か月前に Android クライアントがメール本文を破損し始めた
- 入力を終えてすぐに
sendを押すと、作成した内容の一部だけが送信される - 確実に送るには、入力後に約 10 秒ほど待つ必要があった
- 入力を終えてすぐに
- ユーザーは NAS の VM に Proton Bridge を設定し、Proton アプリの代わりに別のクライアントを使う方式へ切り替えた
- Proton Bridge は
127.0.0.1でのみ待ち受ける - rinetd で IMAP および SMTP ポートへの着信接続を Bridge に転送する
- そのマシンとスマートフォンに Tailscale を設定し、Android のメールクライアントを Proton アカウントに接続する
- Proton Bridge は
- Android では FairEmail を使用し、Linux では Claws でアクセスした
PGP/MIME 署名が壊れる過程
- その後、送信メッセージに PGP 署名を付けるため、クライアント設定を追加した
- 署名専用のサブキーを Android 端末へエクスポートした
- FairEmail+OpenKeyring を設定した
- Linux の Claws も PGP/MIME 用に設定した
- 自分宛てに送ったテストメッセージは、Claws と FairEmail で署名付きメールとして認識されなかった
- PGP inline に切り替えると動作した
- Claws のメンテナーは MIME 構造が壊れていると回答した
- メンテナーが送った署名付きメールは Claws で正常に検証された
- Proton が送信時の PGP 署名を当初から壊してきた関連事例として、proton-bridge issue #26 と issue #320 が示されている
- 整理された Proton 側の挙動は次のとおり
- 通常のメールを Proton 経由で別の Proton クライアントへ送ると、Proton が自動的に PGP 署名および暗号化を行う
- この自動署名・暗号化は、ユーザーが自分で適用した署名と共存できない
- その結果、ユーザーが適用した署名が壊れる
- ユーザーは、Proton に
multipart/signedまたはmultipart/encryptedメッセージをそのままにしておくよう指示するオプションがない点を、主要な不満と見ている - PGP が広く使われていないことは認めつつも、Proton がメールをひそかに変形し、ユーザーの不満に対して「こちらのほうがよく分かっている」という態度を取っていると見て、別のメールホストを検討している
1件のコメント
Hacker News の意見
タイトルだけを見て ProtonMail を捨てようとしている人がいるなら、ここでいう「メールを書き換える」とは、ProtonMail が自動署名・暗号化システムを設計した方式のために、ユーザーが適用した PGP 署名をサポートしていない、という意味に近い
一般ユーザーが想像しそうな、送信メール本文を勝手に書き換えるという話ではない
メールに署名したり署名を検証したりしない 99.9% に属するなら、実際には大きな問題ではない可能性が高いが、それでもこの問題に対する Proton の対応は冗談のように見える
https://github.com/ProtonMail/proton-bridge/issues/26
PGP のような基本的なものすらまともに扱えないなら、ソフトウェアの他の部分をどう信じればいいのかと思うし、特に自ら「Privacy-first」な企業だと言っているのだからなおさらだ
最近の「Privacy」は単なるマーケティング用語になりつつあるように見える
「mime エンコードされたパートがあると、すべての平文メールを捨てる ProtonMail の挙動に関係しているように見える」
https://github.com/ProtonMail/proton-bridge/issues/26#issuec...
むしろ HTML のような mime エンコードされたパートがあると、平文パートを捨てるという事実のほうが衝撃的だ
確認してみると、GMail から取り込んだメールと ProtonMail で新しく受け取ったメールは、今では HTML パートだけが残っており、GMail の元の表示では HTML と平文パートの両方が見える
後でテキスト専用クライアントで読みたくても読めなくなったわけで、ストレージを節約できるわけでもないのに、なぜこんなものを壊してもいいと思ったのか分からない
ストレージは自分がお金を払って使っているものだ
大手事業者の視点では、メールが自分たちのシステムに入った瞬間、もはや本来の意味でのメールではなく、自分たちのオブジェクトになるようだ
今は善意で一部を再構成してくれているだけなのかもしれない
製品を悪くしながらもどこかでコストを削っていて、十分に多くの顧客が気づかないことを期待しているように見える
人々が不満を言うときに「われわれのほうがよく分かっている」というようなずるい態度を嫌っている、と明確に指摘してくれてうれしい
私の持ち方が間違っていると説明するのではなく、少なくとも製品の限界のために私が望むことができないのだと認めたうえで、変えられるかどうか考えるべきだ
たいていはこちらのやり方で使うか、去れという意味だった
かなりあきれる
ProtonMail は本当に最悪だ
こういうスレッドが上がるたびに、業務用に ProtonMail を使おうとして経験したことを共有することになる
ProtonMail はメールアカウントがアクティブかどうかにかかわらずアカウントごとに課金し、社員が退職したらアドレスは無効化しつつメール履歴は保管したかった
ところが ProtonMail からメールを書き出すのは、エンジニアが必要なほど難しい
そこで「メールアドレスを恒久的に無効化し、以後課金しない機能を追加できるか」と尋ねると、典型的な ProtonMail 式のはぐらかし回答が返ってきた
検索も単純な部分文字列検索より劣っていて、すでに不満が大きかったし、プロ用途で数年使っていると古い会話を探さなければならない時がある
結局アカウントを解約し、privacy.com のカードを閉じた
1 年後、閉じたカードにまだ毎月請求がかかっているのを見て以前のアカウントにログインしようとしたが、パスワードマネージャーに保存されていたパスワードが通らなかった
バグがあるようだとメールを送ると、サポート担当者はしばらく押し問答した末、支払いを止めるにはクレジットカード情報をよこせと要求してきた
すでに 1 年前に閉じたカードなので情報はなく、その時点で返信をやめた
妥当な質問をする有料顧客に敵対的に接する人たちに個人情報を預けるのは、大きな危険信号だと思う
Proton は受信者同士の会話を完全に非公開に保とうとするサービスに近く、退職した社員のメールにまだアクセスできるという点のほうがむしろ驚きだ
個人用なら何を勧める?
今はどうなのか? ProtonMail の Import-Export アプリを使ってみたし、現在の検索も改めて試してみたのか?
Android クライアントで「送信」を早く押しすぎると、書いた内容の一部だけが送られるバグに遭っていたのが自分だけではなかったと知って衝撃だ
医師やファイナンシャルアドバイザーに送ったメールが何度もこのように途中で切れていて、確かに全文を入力した記憶があったので、がん治療のために飲んでいる薬が短い幻覚のようなものを起こしているのではないかと真剣に疑っていた
実際、Android アプリ全体を書き直しているところなので、より安定して使いやすくなる予定で、今年末ごろに出るはずだ
それまでの間、Android 版 Proton Mail アプリで送信の問題が繰り返し起きる場合は、どの端末からでも Web アプリ(https://mail.proton.me)を使える
メールをまともに送れないメールサービスに何の意味があるのか?
重要な場面でこのバグに遭ったので、受信者が空のメールだと教えてくれず無視していたらどうなっていたかと考えてしまう
今は IMAP/SMTP をきちんと扱い、GPG を処理する本物のメールクライアントを使える、もっと信頼できるプロバイダーを探しているところ
こういうのはアプリケーション開発のリグレッションでありバグだが、Proton にとって優れた製品を作ることはあまり興味のないことなのかもしれない
Apple が PGP の手順をスムーズにする試みをまだしていないのは、今でも驚きだ
端末上で鍵を作り、iCloud で同期し、公開鍵を公開するような形を想像していた
Apple はプライバシー保護を大きく打ち出しているので、Gmail や Outlook のようなところもネイティブ PGP を導入するようになることを期待していたが、願望にすぎなかったようだ
ニッチなユーザーや熱心なユーザーの領域に押しやられており、問題が多すぎるので、Signal のように最初から暗号化を念頭に置いて作られた代替メッセージングプラットフォームを使うほうがよい
例えば、暗号化されたメールを送ったとして、受信者がそれを転送したらどうなるのか?
受信者が返信するとき、元のメールは暗号化されたまま含まれるのか、それとも復号された状態で含まれるのか? たいていは後者なので、同じ平文が 2 つのメッセージに存在することになる
複数人にメールを送る場合、各受信者ごとの暗号化は誰が処理するのか?
一部の受信者だけが暗号化をサポートしているなら、結局一部は平文で送ることになるが、暗号化に何の意味があるのか?
参加者が分からないメーリングリストに送るときはどうするのか?
標準的に何を暗号化すべきなのか? 本文だけ? メールヘッダーである件名は? 他のヘッダーは?
署名だけが欲しいとしても、標準的に何に署名するのか? 会話の中でテキストが何度も変換を経るのに、その署名はどうやって生き残るのか?
ユーザーが宛先アドレスを書くと、サーバーがそのアドレスを確認してメールホストに暗号鍵を要求し、メールホストが鍵を送り、ユーザーはそのままメールを書き続ける、という感じになりそうだ
UDP ベースの HTTPS に近い感覚
暗号化メールはまともに機能しない
https://latacora.micro.blog/2020/02/19/stop-using-encrypted....
https://support.google.com/a/answer/10741897
https://security.googleblog.com/2023/06/gmail-client-side-en...
メール会社が秘密鍵を持っているなら、PGP に何の意味があるのか?
ネットワーク上でメールが送信される間の保護と署名検証くらいしか残らないのか?
秘密鍵の共有は、秘密を守る方法としてはおかしい
ところが、その一部をダウンロードできないことが起きた
テストしてバグを提出したところ、ProtonMail は添付ファイルがユーザーのアドレスキーで暗号化されていると仮定して復号を試みる、と回答した
元のファイル名を復元・再生成するときに .gpg 拡張子は削除されるという
最も驚いたのは、ProtonMail が回避策として、添付ファイルの公開鍵に対応する秘密鍵をインポートすることを提案した点で、友人は同意しなかった
ユーザーのパスワードで暗号化された秘密鍵を保存しており、そのパスワードも私たちは知らない
2 年前の issue もある
https://github.com/ProtonMail/proton-bridge/issues/180
Proton はオープンソースソフトウェア開発者がパッチを送りにくくしており、気にも留めていない
https://git-send-email.io/#step-2
そこには「Protonmail は一般に、かなり悪いメールホストとして知られている。送信メールを壊し、パッチが相手側で適用されないことがある。オープンソースへの不当な扱いと、セキュリティに関する偽りの約束は言うまでもない。別のメールプロバイダーを検討すべきだ」という文言もある
1 週間で乗り換えて全額返金を受けられたのは幸いだった
セキュリティに文句を言う投稿をしながら、自分が http リンクを提出していたことに気づいたという皮肉がある
NAS の仮想マシンに Proton Bridge を立て、127.0.0.1 でだけ待ち受けるブリッジへ IMAP/SMTP ポートの着信接続を rinetd で転送し、そのマシンとスマートフォンに tailscale を設定して、Android のメールクライアント(FairEmail 推奨)と Linux の Claws から Proton アカウントに接続したという構成は、セルフホスティングの複雑さのかなりの部分に近いものに聞こえる
直接は知らないが、繰り返し出てくる話題だ