プライバシーファーストの設計でTempy.emailを構築した方法
ほとんどのメールサービスは、メッセージをデータベースに保存し、検索用にインデックス化し、バックアップを保持し、無期限に保存します。
私たちはその逆を行います:すべてはメモリ上に存在します。タイマーが切れると、データは消滅します。
従来のメールのプライバシー問題
Gmail、Outlook、または従来のメールサービスを使用する場合:
- メールがディスクに保存 → 差し押さえ、漏洩、販売のリスク
- 検索用にインデックス化 → 通信に関するメタデータが作成される
- バックアップされる → 複数のコピーが存在し、露出が増加
- 無期限に保持 → 10年前のメールがまだ存在
- 広告のためにスキャン → コンテンツが分析されて広告がターゲティングされる
- ログが保存 → IPアドレス、タイムスタンプ、アクセスパターンが追跡
本当に何も削除できません。
「削除」を押しても、データは以下に存在する可能性があります:
- バックアップテープ
- 検索インデックス
- サーバーログ
- コンプライアンスアーカイブ
- リーガルホールドシステム
私たちのアプローチ:メモリオンリーアーキテクチャ
tempy.emailは一つの原則で構築されています:RAMにないなら、存在しない。
従来のメール:
ユーザー → Webサーバー → データベース → ディスク → バックアップ → アーカイブ
(データは永遠に生き続ける)
tempy.email:
ユーザー → Webサーバー → Redis(RAMのみ) → 期限切れ → 消滅
(データは10分間存在する)
永続ストレージなし
私たちが持っていないもの:
- ❌ PostgreSQL、MySQL、またはディスクベースのデータベースなし
- ❌ ファイルストレージなし(S3、ディスク、NAS)
- ❌ バックアップなし
- ❌ アーカイブなし
- ❌ メール内容のログなし
- ❌ 「ソフトデリート」なし(削除済みとマークしてデータを保持すること)
私たちが持っているもの:
- ✅ Redis(インメモリKey-Valueストア)
- ✅ すべてのキーにTTL(Time-To-Live)
- ✅ 自動期限切れ
メールストレージの仕組み
メールが届いた時:
// RedisにTTL付きでメールを保存
await redis.set(
`mailbox:${address}:emails`,
JSON.stringify(email),
'EX', 600 // 600秒(10分)で期限切れ
);
10分後:
- Redisが自動的にキーを削除
- メモリが解放される
- データは完全に消滅(削除済みとマークされるのではなく、実際に消滅)
「回復」プロセスは存在しません。回復するものがないからです。
サーバーログについて
ログを最小限に抑えています:
従来のサーバーログ:
2026-02-12 10:15:23 ユーザー [email protected] が 203.0.113.5 からログイン
2026-02-12 10:15:45 [email protected] がメール「パスワードリセット」を開封
2026-02-12 10:16:12 [email protected] が3通のメールを削除
tempy.emailのログ:
2026-02-12 10:15:23 メールボックスが作成された(メールアドレスは記録されない)
2026-02-12 10:15:45 メールを受信(内容は記録されない)
2026-02-12 10:25:23 メールボックスが期限切れ
私たちはイベントを記録します。識別可能なデータは記録しません。
プライバシー機能
1. ユーザーアカウントなし
たとえ望んでもアカウントを作成できません:
- サインアップフォームなし
- パスワードなし
- 「マイアカウント」ページなし
- ユーザーデータベースなし
理由: アカウントはアイデンティティを作り出します。私たちはあなたが誰かを知りたくありません。
2. トラッキングやアナリティクスなし
多くの「プライバシーファースト」サービスはまだ以下を使用しています:
- Google Analytics
- Facebook Pixel
- Mixpanel
- Hotjar
私たちが使用するもの:上記のいずれも使用しません。
追跡するもの:
- 作成されたメールボックスの合計(カウンター)
- 処理されたメールの合計(カウンター)
追跡しないもの:
- 誰が作成したか
- いつ作成されたか
- どのIPからか
- どのブラウザが使用されたか
3. メール内容のスキャンなし
メールの内容を以下の目的で分析することはありません:
- 広告
- 機械学習トレーニング
- パターン検出
- コンテンツ分類
メールは人間にもアルゴリズムにも読まれることなく私たちのシステムを通過します。
4. IPログなし
以下は記録しません:
- あなたのIPアドレス
- あなたの位置情報
- あなたのISP
- あなたのデバイスフィンガープリント
理由: 「匿名化された」IPログでさえ、相関攻撃によって非匿名化できることが多いです。
5. サードパーティサービスなし
以下は使用しません:
- トラッキングするCDN(Cloudflareはプライバシーモードのみ)
- アナリティクスプラットフォーム
- 広告ネットワーク
- ソーシャルメディアウィジェット
- サードパーティフォント(Google Fontsはローカルで配信)
理由: すべてのサードパーティサービスは潜在的なデータ漏洩源です。
技術的な実装
Redis設定
// すべてのキーにデフォルトでTTLあり
const DEFAULT_TTL = 600; // 10分
// メールボックスキー
await redis.setex(
`mailbox:${address}`,
DEFAULT_TTL,
JSON.stringify({ created: Date.now() })
);
// メールキー
await redis.rpush(`mailbox:${address}:emails`, emailJson);
await redis.expire(`mailbox:${address}:emails`, DEFAULT_TTL);
自動クリーンアップ
Redisが期限切れを自動的に処理します:
T+0: メール到着 → Redisに保存
T+600s: TTL期限切れ → Redisがキーを削除 → メモリ解放
cronジョブなし。手動クリーンアップなし。「ソフトデリート」なし。
メールのサニタイズ
メールを保存する前に、以下を防ぐためにHTMLをサニタイズします:
- XSS攻撃
- トラッキングピクセル
- 悪意のあるスクリプト
- プライバシー漏洩
var sanitizer = new HtmlSanitizer();
sanitizer.AllowedTags = ["p", "a", "b", "i", "ul", "ol", "li"];
// <img>なし、<script>なし、トラッキングなし
var cleanHtml = sanitizer.Sanitize(rawHtml);
私たちがアクセスできないもの
たとえ望んでも(望みませんが)、私たちには物理的に不可能なこと:
- 削除されたメールの回復 → バックアップが存在しない
- 履歴データの参照 → TTLがすべてを削除する
- ユーザー行動の追跡 → 分析するログがない
- ユーザーの特定 → アカウントなし、IP記録なし
- データ要求への対応 → 提供するデータがない
これはポリシーの決定ではありません。アーキテクチャです。
受け入れるトレードオフ
プライバシーファーストの設計は制限を受け入れることを意味します:
提供できないもの:
- ❌ メール検索(インデックスなし)
- ❌ 長期保存(デフォルト10分)
- ❌ メールの回復(期限切れになったら終わり)
- ❌ ユーザーアカウント(メールボックスを「保存」できない)
- ❌ 本物の受信トレイへのメール転送
提供できるもの:
- ✅ 完全なプライバシー
- ✅ ゼロトラッキング
- ✅ 即時削除
- ✅ データ漏洩リスクなし(漏洩するデータがない)
- ✅ 安心感
「プライバシー重視」メールとの比較
| 機能 | ProtonMail | Tutanota | tempy.email |
|---|---|---|---|
| 暗号化 | ✅ E2E | ✅ E2E | ⚠️ 通信中のみ |
| 永続保存 | ✅ あり | ✅ あり | ❌ なし(TTL 10分) |
| ユーザーアカウント | ✅ あり | ✅ あり | ❌ アカウントなし |
| データ差し押さえリスク | ⚠️ 暗号化データが存在 | ⚠️ 暗号化データが存在 | ✅ 差し押さえるデータなし |
| IPログ | ⚠️ オプション | ⚠️ オプション | ❌ なし |
| ユースケース | 永続的なプライベートメール | 永続的なプライベートメール | 使い捨て/テスト |
ProtonMailとTutanotaは永続的なプライベートメールに最適です。
tempy.emailは、データがまったく存在してほしくない使い捨て用途のためのものです。
まとめ
ほとんどのサービスは言います: 「あなたのデータを見ません」 私たちは言います: 「あなたのデータを見ることができません(十分長く存在しないから)」
ほとんどのサービスは言います: 「要求があれば削除します」 私たちは言います: 「要求の有無にかかわらず10分で自動削除されます」
ほとんどのサービスは言います: 「プライバシーを重視しています」 私たちは言います: 「プライバシーが私たちのアーキテクチャです」
これはポリシーによるプライバシーではなく、設計によるプライバシーです。
お試しください:一時アドレスを生成して、ご自身でお確かめください。10分後、そのメールは永遠に消滅します。「アーカイブ」ではなく。「削除」ではなく。消滅です。