Email RFCプロトコルサポート - 完全な標準&仕様ガイド

RFC Email Protocol Library Scene

このドキュメントについて

このドキュメントは Forward Email の RFC(Request for Comments)プロトコルサポートについて説明しています。Forward Email は IMAP/POP3 機能のために内部で WildDuck を使用しているため、ここに記載されているプロトコルのサポートと制限は WildDuck の実装を反映しています。

Important

Forward Email はメッセージストレージに MongoDB(WildDuck が元々使用していたもの)ではなく SQLite を使用しています。これにより、以下に記載されている特定の実装の詳細に影響があります。

ソースコード: https://github.com/forwardemail/forwardemail.net

アーキテクチャ概要


メールサービス比較 - プロトコルサポートとRFC標準準拠

Important

サンドボックス化および量子耐性暗号化: Forward Email は、あなたのパスワード(あなただけが知っている)を使って個別に暗号化された SQLite メールボックスを保存する唯一のメールサービスです。各メールボックスは sqleet(ChaCha20-Poly1305)で暗号化されており、自己完結型でサンドボックス化され、ポータブルです。パスワードを忘れるとメールボックスを失い、Forward Email でも回復できません。詳細は 量子安全な暗号化メール を参照してください。

主要なメールプロバイダー間のメールプロトコルサポートと RFC 標準の実装を比較します:

機能 Forward Email Postfix/Dovecot Gmail iCloud Mail Outlook.com Fastmail Yahoo/AOL (Verizon) ProtonMail Tutanota
カスタムドメイン価格 無料 無料 $7.20/月 $0.99/月 $7.20/月 $5/月 $3.19/月 $4.99/月 $3.27/月
IMAP4rev1 (RFC 3501) サポート サポート サポート サポート サポート サポート サポート ⚠️ ブリッジ経由 ❌ サポートなし
IMAP4rev2 (RFC 9051) ⚠️ 部分的 ⚠️ 部分的 ⚠️ 31% ⚠️ 92% ⚠️ 46% ⚠️ 69% ⚠️ 85% ⚠️ ブリッジ経由 ❌ サポートなし
POP3 (RFC 1939) サポート サポート サポート ❌ サポートなし サポート サポート サポート ⚠️ ブリッジ経由 ❌ サポートなし
SMTP (RFC 5321) サポート サポート サポート サポート サポート サポート サポート ⚠️ ブリッジ経由 ❌ サポートなし
JMAP (RFC 8620) サポートなし ❌ サポートなし ❌ サポートなし ❌ サポートなし ❌ サポートなし サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし
DKIM (RFC 6376) サポート サポート サポート サポート サポート サポート サポート サポート サポート
SPF (RFC 7208) サポート サポート サポート サポート サポート サポート サポート サポート サポート
DMARC (RFC 7489) サポート サポート サポート サポート サポート サポート サポート サポート サポート
ARC (RFC 8617) サポート サポート サポート ❌ サポートなし サポート サポート サポート サポート ❌ サポートなし
MTA-STS (RFC 8461) サポート サポート サポート サポート サポート サポート サポート サポート サポート
DANE (RFC 7671) サポート サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし ❌ サポートなし ❌ サポートなし サポート サポート
DSN (RFC 3461) サポート サポート ❌ サポートなし サポート サポート ⚠️ 不明 ❌ サポートなし ⚠️ ブリッジ経由 ❌ サポートなし
REQUIRETLS (RFC 8689) サポート サポート ⚠️ 不明 ⚠️ 不明 ⚠️ 不明 ⚠️ 不明 ⚠️ 不明 ⚠️ ブリッジ経由 ❌ サポートなし
ManageSieve (RFC 5804) サポート サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし
OpenPGP (RFC 9580) サポート ⚠️ プラグイン経由 ⚠️ サードパーティ ⚠️ サードパーティ ⚠️ サードパーティ ⚠️ サードパーティ ⚠️ サードパーティ ネイティブ ❌ サポートなし
S/MIME (RFC 8551) サポート サポート サポート サポート サポート ⚠️ 部分的 ❌ サポートなし サポート ❌ サポートなし
CalDAV (RFC 4791) サポート サポート サポート サポート ❌ サポートなし サポート ❌ サポートなし ブリッジ経由 ❌ サポートなし
CardDAV (RFC 6352) サポート サポート サポート サポート ❌ サポートなし サポート ❌ サポートなし ブリッジ経由 ❌ サポートなし
タスク (VTODO) サポート サポート ❌ サポートなし サポート ❌ サポートなし サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし
Sieve (RFC 5228) サポート サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし サポート ❌ サポートなし ❌ サポートなし ❌ サポートなし
Catch-All サポート ✅ サポート サポート ❌ サポートなし サポートなし サポート ❌ サポートなし ❌ サポートなし サポート
無制限エイリアス サポート ✅ サポート サポート サポート サポート サポート ❌ サポートなし サポート サポート
二要素認証 サポート ✅ サポート サポート サポート サポート サポート サポート サポート サポート
プッシュ通知 サポート ⚠️ プラグイン経由 サポート サポート サポート サポート ❌ サポートなし サポート サポート
カレンダー/連絡先デスクトップ サポート ✅ サポート サポート サポート サポート サポート ❌ サポートなし サポート ❌ サポートなし
高度な検索 サポート ✅ サポート サポート サポート サポート サポート サポート サポート サポート
API/統合 39 エンドポイント ✅ サポート サポート ❌ サポートなし サポート サポート ❌ サポートなし サポート ❌ サポートなし

プロトコルサポートの可視化


コアメールプロトコル

メールプロトコルのフロー

IMAP4 メールプロトコルと拡張

Note

Forward Email は IMAP4rev1 (RFC 3501) をサポートし、IMAP4rev2 (RFC 9051) の機能を部分的にサポートしています。

Forward Email は WildDuck メールサーバーの実装を通じて堅牢な IMAP4 サポートを提供します。このサーバーは IMAP4rev1 (RFC 3501) を実装し、IMAP4rev2 (RFC 9051) の拡張機能を部分的にサポートしています。

Forward Email の IMAP 機能は WildDuck 依存関係によって提供されています。以下のメール RFC がサポートされています:

RFC タイトル 実装に関する注記
RFC 3501 インターネットメッセージアクセスプロトコル (IMAP) - バージョン4rev1 意図的な差異を含む完全サポート(下記参照)
RFC 2177 IMAP4 IDLE コマンド プッシュスタイル通知
RFC 2342 IMAP4 名前空間 メールボックス名前空間のサポート
RFC 2087 IMAP4 QUOTA 拡張 ストレージクォータ管理
RFC 2971 IMAP4 ID 拡張 クライアント/サーバー識別
RFC 5161 IMAP4 ENABLE 拡張 IMAP 拡張機能の有効化
RFC 4959 SASL 初期クライアント応答のための IMAP 拡張 (SASL-IR) 初期クライアント応答
RFC 3691 IMAP4 UNSELECT コマンド EXPUNGE なしでメールボックスを閉じる
RFC 4315 IMAP UIDPLUS 拡張 拡張 UID コマンド
RFC 7162 IMAP 拡張: クイックフラグ変更の再同期 (CONDSTORE) 条件付き STORE
RFC 6154 特殊用途メールボックスのための IMAP LIST 拡張 特殊メールボックス属性
RFC 6851 IMAP MOVE 拡張 原子 MOVE コマンド
RFC 6855 UTF-8 対応のための IMAP サポート UTF-8 サポート
RFC 3348 IMAP4 子メールボックス拡張 子メールボックス情報
RFC 7889 最大アップロードサイズの広告のための IMAP4 拡張 (APPENDLIMIT) 最大アップロードサイズ
サポートされているIMAP拡張機能:
Extension RFC Status Description
IDLE RFC 2177 ✅ Supported プッシュスタイルの通知
NAMESPACE RFC 2342 ✅ Supported メールボックスの名前空間サポート
QUOTA RFC 2087 ✅ Supported ストレージクォータ管理
ID RFC 2971 ✅ Supported クライアント/サーバ識別
ENABLE RFC 5161 ✅ Supported IMAP拡張機能の有効化
SASL-IR RFC 4959 ✅ Supported 初期クライアント応答
UNSELECT RFC 3691 ✅ Supported EXPUNGEなしでメールボックスを閉じる
UIDPLUS RFC 4315 ✅ Supported 拡張UIDコマンド
CONDSTORE RFC 7162 ✅ Supported 条件付きSTORE
SPECIAL-USE RFC 6154 ✅ Supported 特殊メールボックス属性
MOVE RFC 6851 ✅ Supported 原子MOVEコマンド
UTF8=ACCEPT RFC 6855 ✅ Supported UTF-8サポート
CHILDREN RFC 3348 ✅ Supported 子メールボックス情報
APPENDLIMIT RFC 7889 ✅ Supported 最大アップロードサイズ
XLIST 非標準 ✅ Supported Gmail互換のフォルダー一覧
XAPPLEPUSHSERVICE 非標準 ✅ Supported Apple Push Notification Service

RFC仕様からのIMAPプロトコルの違い

Warning

以下のRFC仕様からの違いはクライアントの互換性に影響を与える可能性があります。

Forward Emailは意図的にいくつかのIMAP RFC仕様から逸脱しています。これらの違いはWildDuckから継承されており、以下に記載されています:

  • \Recentフラグなし: \Recentフラグは実装されていません。すべてのメッセージはこのフラグなしで返されます。
  • RENAMEはサブフォルダーに影響しない: フォルダーの名前変更時にサブフォルダーは自動的に名前変更されません。データベース上のフォルダー階層はフラットです。
  • INBOXは名前変更不可: RFC 3501ではINBOXの名前変更が許可されていますが、Forward Emailでは明示的に禁止されています。詳細はWildDuckのソースコードを参照してください。
  • 未承諾のFLAGS応答なし: フラグが変更されても、クライアントに未承諾のFLAGS応答は送信されません。
  • 削除済みメッセージに対するSTOREはNOを返す: 削除済みメッセージのフラグ変更試行は無視されず、NOを返します。
  • SEARCHのCHARSETは無視される: SEARCHコマンドのCHARSET引数は無視され、すべてUTF-8で検索されます。
  • STOREのMODSEQメタデータは無視される: STOREコマンドのMODSEQメタデータは無視されます。
  • SEARCH TEXTとSEARCH BODY: Forward EmailはMongoDBの$text検索の代わりにSQLite FTS5(全文検索)を使用しています。これにより以下が可能です:
    • NOT演算子のサポート(MongoDBは未対応)
    • ランク付けされた検索結果
    • 大規模メールボックスでも100ms未満の高速検索
  • 自動エクスパunge動作: \Deletedマークされたメッセージはメールボックス閉鎖時に自動的にエクスパungeされます。
  • メッセージの忠実性: 一部のメッセージ変更は元のメッセージ構造を完全には保持しない場合があります。

IMAP4rev2の部分サポート:

Forward EmailはIMAP4rev1 (RFC 3501)を実装し、IMAP4rev2 (RFC 9051)の一部機能を部分的にサポートしています。以下のIMAP4rev2機能はまだサポートされていません:

  • LIST-STATUS - LISTとSTATUSコマンドの統合
  • LITERAL- - 非同期リテラル(マイナスバリアント)
  • OBJECTID - 一意のオブジェクト識別子
  • SAVEDATE - 保存日時属性
  • REPLACE - 原子的メッセージ置換
  • UNAUTHENTICATE - 接続を閉じずに認証解除

緩やかなボディ構造の取り扱い:

Forward Emailは不正なMIME構造に対して「緩やかなボディ」処理を行い、厳密なRFC解釈とは異なる場合があります。これは標準に完全には準拠しない実際のメールとの互換性を向上させます。 METADATA拡張 (RFC 5464):

IMAPのMETADATA拡張はサポートされていません。この拡張に関する詳細はRFC 5464をご覧ください。この機能追加に関する議論はWildDuck Issue #937にあります。

サポートされていないIMAP拡張

以下のIANA IMAP Capabilities RegistryにあるIMAP拡張はサポートされていません:

RFC タイトル 理由
RFC 2086 IMAP4 ACL拡張 共有フォルダは実装されていません。WildDuck Issue #427をご覧ください
RFC 5256 IMAP SORTおよびTHREAD拡張 スレッド機能は内部的に実装されていますが、RFC 5256プロトコル経由ではありません。WildDuck Issue #12をご覧ください
RFC 5162 クイックメールボックス再同期のためのIMAP4拡張 (QRESYNC) 実装されていません
RFC 5464 IMAP METADATA拡張 メタデータ操作は無視されます。WildDuck documentationをご覧ください
RFC 5258 IMAP4 LISTコマンド拡張 実装されていません
RFC 5267 IMAP4のコンテキスト 実装されていません
RFC 5465 IMAP NOTIFY拡張 実装されていません
RFC 5466 IMAP4 FILTERS拡張 実装されていません
RFC 6203 IMAP4のあいまい検索拡張 実装されていません
RFC 6785 IMAP4実装推奨 推奨事項は完全には遵守されていません
RFC 7162 IMAP拡張: クイックフラグ変更再同期 (CONDSTORE) および クイックメールボックス再同期 (QRESYNC) 実装されていません
RFC 8437 接続再利用のためのIMAP UNAUTHENTICATE拡張 実装されていません
RFC 8438 STATUS=SIZEのためのIMAP拡張 実装されていません
RFC 8457 IMAP "$Important"キーワードおよび"\Important"特別使用属性 実装されていません
RFC 8474 オブジェクト識別子のためのIMAP拡張 実装されていません
RFC 9051 インターネットメッセージアクセスプロトコル (IMAP) - バージョン4rev2 Forward EmailはIMAP4rev1 (RFC 3501)を実装しています

POP3メールプロトコルと拡張機能

Note

Forward Emailは、標準的な拡張機能を備えたPOP3(RFC 1939)によるメール取得をサポートしています。

Forward EmailのPOP3機能は、WildDuck依存関係によって提供されています。以下のメールRFCがサポートされています:

RFC タイトル 実装に関する注意事項
RFC 1939 Post Office Protocol - Version 3 (POP3) 意図的な差異を含む完全サポート(下記参照)
RFC 2595 Using TLS with IMAP, POP3 and ACAP STARTTLSサポート
RFC 2449 POP3 Extension Mechanism CAPAコマンドサポート

Forward Emailは、IMAPよりもシンプルなこのプロトコルを好むクライアント向けにPOP3サポートを提供しています。POP3は、メールを単一のデバイスにダウンロードし、サーバーから削除したいユーザーに最適です。

サポートされているPOP3拡張機能:

拡張機能 RFC ステータス 説明
TOP RFC 1939 ✅ サポート済み メッセージヘッダーの取得
USER RFC 1939 ✅ サポート済み ユーザー名認証
UIDL RFC 1939 ✅ サポート済み ユニークメッセージ識別子
EXPIRE RFC 2449 ✅ サポート済み メッセージの有効期限ポリシー

RFC仕様からのPOP3プロトコルの差異

Warning

POP3はIMAPに比べて固有の制限があります。

Important

重要な差異:Forward EmailとWildDuckのPOP3 DELE動作の違い

Forward Emailは、WildDuckとは異なり、POP3のDELEコマンドに対してRFC準拠の恒久的削除を実装しています。WildDuckはメッセージをゴミ箱に移動します。

Forward Emailの動作ソースコード):

  • DELEQUIT でメッセージを恒久的に削除
  • RFC 1939仕様に完全準拠
  • Dovecot(デフォルト)、Postfix、その他の標準準拠サーバーの動作と一致

WildDuckの動作議論):

  • DELEQUIT でメッセージをゴミ箱に移動(Gmail風)
  • ユーザーの安全性を考慮した意図的な設計決定
  • RFC非準拠だが誤削除防止に寄与

Forward Emailが異なる理由:

  • RFC準拠: RFC 1939仕様に従う
  • ユーザーの期待: ダウンロードして削除するワークフローは恒久的削除を想定
  • ストレージ管理: 適切なディスク容量の回収
  • 相互運用性: 他のRFC準拠サーバーと一貫性がある

Note

POP3メッセージ一覧: Forward EmailはINBOXの全メッセージを制限なく一覧表示します。これはWildDuckがデフォルトで250メッセージに制限しているのと異なります。詳細はソースコードを参照してください。

単一デバイスアクセス:

POP3は単一デバイスアクセスを想定しています。メッセージは通常ダウンロードされサーバーから削除されるため、複数デバイス間の同期には適していません。

フォルダサポートなし:

POP3はINBOXフォルダのみアクセス可能です。送信済み、下書き、ゴミ箱など他のフォルダはPOP3経由ではアクセスできません。

限定的なメッセージ管理:

POP3は基本的なメッセージ取得と削除のみを提供します。フラグ付け、移動、検索などの高度な機能は利用できません。

サポートされていないPOP3拡張機能

IANA POP3 Extension Mechanism Registryにある以下のPOP3拡張機能はサポートされていません:

RFC タイトル 理由
RFC 6856 Post Office Protocol Version 3 (POP3) Support for UTF-8 WildDuck POP3サーバーで未実装
RFC 2595 STLSコマンド STARTTLSのみ対応、STLSは非対応
RFC 3206 SYSおよびAUTH POP応答コード 未実装

SMTP Email Protocol and Extensions

Note

Forward Emailは、安全で信頼性の高いメール配信のための最新拡張を備えたSMTP(RFC 5321)をサポートしています。

Forward EmailのSMTP機能は複数のコンポーネントによって提供されています:smtp-server(nodemailer)、zone-mta、およびカスタム実装です。以下のメールRFCがサポートされています:

RFC タイトル 実装ノート
RFC 5321 Simple Mail Transfer Protocol (SMTP) 完全サポート
RFC 3207 SMTP Service Extension for Secure SMTP over Transport Layer Security (STARTTLS) TLS/SSLサポート
RFC 4954 SMTP Service Extension for Authentication (AUTH) PLAIN、LOGIN、CRAM-MD5、XOAUTH2
RFC 6531 SMTP Extension for Internationalized Email (SMTPUTF8) ネイティブUnicodeメールアドレス対応
RFC 3461 SMTP Service Extension for Delivery Status Notifications (DSN) DSN完全対応
RFC 3463 Enhanced Mail System Status Codes 応答における拡張ステータスコード
RFC 1870 SMTP Service Extension for Message Size Declaration (SIZE) 最大メッセージサイズの通知
RFC 2920 SMTP Service Extension for Command Pipelining (PIPELINING) コマンドパイプライニング対応
RFC 1652 SMTP Service Extension for 8bit-MIMEtransport (8BITMIME) 8ビットMIME対応
RFC 6152 SMTP Service Extension for 8-bit MIME Transport 8ビットMIME対応
RFC 2034 SMTP Service Extension for Returning Enhanced Error Codes (ENHANCEDSTATUSCODES) 拡張ステータスコード対応

Forward Emailは、セキュリティ、信頼性、機能性を強化する最新拡張をサポートしたフル機能のSMTPサーバーを実装しています。

サポートされているSMTP拡張機能:

拡張機能 RFC ステータス 説明
PIPELINING RFC 2920 ✅ 対応済み コマンドパイプライニング
SIZE RFC 1870 ✅ 対応済み メッセージサイズ通知(52MB制限)
ETRN RFC 1985 ✅ 対応済み リモートキュー処理
STARTTLS RFC 3207 ✅ 対応済み TLSへのアップグレード
ENHANCEDSTATUSCODES RFC 2034 ✅ 対応済み 拡張ステータスコード
8BITMIME RFC 6152 ✅ 対応済み 8ビットMIME転送
DSN RFC 3461 ✅ 対応済み 配信状況通知
CHUNKING RFC 3030 ✅ 対応済み チャンクメッセージ転送
SMTPUTF8 RFC 6531 ⚠️ 部分対応 UTF-8メールアドレス(部分対応)
REQUIRETLS RFC 8689 ✅ 対応済み 配信にTLSを必須

配信状況通知 (DSN)

Tip

DSN は送信されたメールの詳細な配信状況情報を提供します。

Forward Email は DSN (RFC 3461) を完全にサポートしており、送信者が配信状況通知を要求できるようにします。この機能は以下を提供します:

  • メッセージが配信された際の 成功通知
  • 詳細なエラー情報を含む 失敗通知
  • 配信が一時的に遅延した際の 遅延通知

DSN は特に以下の用途に有用です:

  • 重要なメッセージの配信確認
  • 配信問題のトラブルシューティング
  • 自動化されたメール処理システム
  • コンプライアンスおよび監査要件

REQUIRETLS サポート

Important

Forward Email は REQUIRETLS を明示的に宣伝し、強制する数少ないプロバイダーの一つです。

Forward Email は REQUIRETLS (RFC 8689) をサポートしており、メールメッセージが TLS 暗号化接続上でのみ配信されることを保証します。これにより以下が実現されます:

  • 配信経路全体の エンドツーエンド暗号化
  • メール作成画面のチェックボックスによる ユーザー向け強制
  • 暗号化されていない配信試行の 拒否
  • 機密通信のための 強化されたセキュリティ

サポートされていない SMTP 拡張機能

IANA SMTP Service Extensions Registry にある以下の SMTP 拡張機能はサポートされていません:

RFC タイトル 理由
RFC 4865 将来メッセージリリースのための SMTP サブミッションサービス拡張 (FUTURERELEASE) 未実装
RFC 6710 メッセージ転送優先度のための SMTP 拡張 (MT-PRIORITY) 未実装
RFC 7293 Require-Recipient-Valid-Since ヘッダーフィールドと SMTP サービス拡張 未実装
RFC 7372 Email Auth ステータスコード 完全には未実装
RFC 4468 メッセージサブミッション BURL 拡張 未実装
RFC 3030 大容量およびバイナリ MIME メッセージの送信のための SMTP サービス拡張 (CHUNKING, BINARYMIME) 未実装
RFC 2852 Deliver By SMTP サービス拡張 未実装

JMAP メールプロトコル

Caution

Forward Email は 現在 JMAP をサポートしていません

RFC タイトル ステータス 理由
RFC 8620 JSON メタアプリケーションプロトコル (JMAP) ❌ サポートなし Forward Email は IMAP/POP3/SMTP と包括的な REST API を使用しています

JMAP (JSON Meta Application Protocol) は IMAP に代わるモダンなメールプロトコルです。

JMAP がサポートされていない理由:

「JMAP は発明されるべきでなかった怪物です。TCP/IMAP(今日の基準では既に悪いプロトコル)を HTTP/JSON に変換しようとしており、異なるトランスポートを使いながらもその精神を保っています。」 — Andris Reinman, HN Discussion "JMAPは10年以上前から存在していますが、ほとんど採用されていません" – Andris Reinman, GitHub Discussion

追加のコメントは https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=jmap andris&sort=byDate&type=comment もご覧ください。

Forward Emailは現在、優れたIMAP、POP3、SMTPサポートと、メール管理のための包括的なREST APIの提供に注力しています。JMAPのサポートは、ユーザーの需要やエコシステムの採用状況に応じて将来的に検討される可能性があります。

代替案: Forward Emailは、プログラムによるメールアクセスにおいてJMAPと同様の機能を提供する39のエンドポイントを持つ完全なREST APIを提供しています。


Email Security

Email Security Architecture

Email Message Authentication Protocols

Note

Forward Emailは、なりすまし防止とメッセージの完全性を確保するために、主要なメール認証プロトコルをすべて実装しています。

Forward Emailはメール認証にmailauthライブラリを使用しています。以下のRFCがサポートされています:

RFC タイトル 実装に関する注記
RFC 6376 DomainKeys Identified Mail (DKIM)署名 DKIM署名および検証を完全にサポート
RFC 8463 DKIMの新しい暗号署名方式(Ed25519-SHA256) RSA-SHA256およびEd25519-SHA256署名アルゴリズムの両方をサポート
RFC 7208 Sender Policy Framework (SPF) SPFレコードの検証
RFC 7489 ドメインベースメッセージ認証、報告、および適合性(DMARC) DMARCポリシーの適用
RFC 8617 Authenticated Received Chain (ARC) ARCのシーリングおよび検証

メール認証プロトコルは、メッセージが送信者のものであることを検証し、転送中に改ざんされていないことを保証します。

Authentication Protocol Support

プロトコル RFC ステータス 説明
DKIM RFC 6376 ✅ 対応済み DomainKeys Identified Mail - 暗号署名
SPF RFC 7208 ✅ 対応済み Sender Policy Framework - IPアドレス認可
DMARC RFC 7489 ✅ 対応済み ドメインベースメッセージ認証 - ポリシー適用
ARC RFC 8617 ✅ 対応済み Authenticated Received Chain - 転送間の認証情報保持

DKIM (DomainKeys Identified Mail)

DKIM はメールヘッダーに暗号署名を追加し、受信者がメッセージがドメイン所有者によって認可され、転送中に改ざんされていないことを検証できるようにします。

Forward Email は DKIM の署名と検証に mailauth を使用しています。

主な特徴:

  • すべての送信メッセージに対する自動 DKIM 署名
  • RSA および Ed25519 キーのサポート
  • 複数セレクターのサポート
  • 受信メッセージの DKIM 検証

SPF (Sender Policy Framework)

SPF はドメイン所有者が自分のドメインを代表してメールを送信することを許可された IP アドレスを指定できるようにします。

主な特徴:

  • 受信メッセージの SPF レコード検証
  • 詳細な結果を伴う自動 SPF チェック
  • include、redirect、および all メカニズムのサポート
  • ドメインごとに設定可能な SPF ポリシー

DMARC (Domain-based Message Authentication, Reporting & Conformance)

DMARC は SPF と DKIM を基にポリシーの適用とレポート機能を提供します。

主な特徴:

  • DMARC ポリシーの適用(none、quarantine、reject)
  • SPF と DKIM の整合性チェック
  • DMARC 集計レポート
  • ドメインごとの DMARC ポリシー

ARC (Authenticated Received Chain)

ARC は転送やメーリングリストの変更を経てもメール認証結果を保持します。

Forward Email は ARC の検証とシールに mailauth ライブラリを使用しています。

主な特徴:

  • 転送メッセージの ARC シール
  • 受信メッセージの ARC 検証
  • 複数ホップにわたるチェーン検証
  • 元の認証結果を保持

Authentication Flow


Email Transport Security Protocols

Important

Forward Email は転送中のメールを保護するために複数層のトランスポートセキュリティを実装しています。

Forward Email は最新のトランスポートセキュリティプロトコルを実装しています:

RFC タイトル ステータス 実装ノート
RFC 8461 SMTP MTA Strict Transport Security (MTA-STS) ✅ 対応済み IMAP、SMTP、MX サーバーで広く使用されています。詳細は create-mta-sts-cache.jsget-transporter.js を参照してください。
RFC 8460 SMTP TLS Reporting ✅ 対応済み mailauth ライブラリ経由で対応
RFC 7671 The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance ✅ 対応済み 送信 SMTP 接続に対する完全な DANE 検証。詳細は mx-connect PR #22 を参照
RFC 6698 The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA ✅ 対応済み RFC 6698 の完全対応:PKIX-TA、PKIX-EE、DANE-TA、DANE-EE 使用タイプ。詳細は mx-connect PR #22 を参照
RFC 8314 Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access ✅ 対応済み すべての接続に TLS を必須化
RFC 8689 SMTP Service Extension for Requiring TLS (REQUIRETLS) ✅ 対応済み REQUIRETLS SMTP 拡張および "TLS-Required" ヘッダーの完全対応
Transport security protocolsは、メールサーバー間の送信中にメールメッセージが暗号化および認証されることを保証します。

Transport Security Support

プロトコル RFC ステータス 説明
TLS RFC 8314 ✅ 対応済み Transport Layer Security - 暗号化された接続
MTA-STS RFC 8461 ✅ 対応済み Mail Transfer Agent Strict Transport Security
DANE RFC 7671 ✅ 対応済み DNSベースの認証された名前付きエンティティ
REQUIRETLS RFC 8689 ✅ 対応済み 配信経路全体でTLSを必須にする

TLS (Transport Layer Security)

Forward Emailはすべてのメール接続(SMTP、IMAP、POP3)に対してTLS暗号化を強制します。

主な特徴:

  • TLS 1.2およびTLS 1.3対応
  • 自動証明書管理
  • 完全前方秘匿性(PFS)
  • 強力な暗号スイートのみ

MTA-STS (Mail Transfer Agent Strict Transport Security)

MTA-STSは、HTTPS経由でポリシーを公開することで、メールがTLSで暗号化された接続のみで配信されることを保証します。

Forward EmailはMTA-STSキャッシュ作成スクリプトを使用してMTA-STSを実装しています。

主な特徴:

  • 自動MTA-STSポリシー公開
  • パフォーマンス向上のためのポリシーキャッシュ
  • ダウングレード攻撃防止
  • 証明書検証の強制

DANE (DNS-based Authentication of Named Entities)

Note

Forward Emailは現在、送信SMTP接続に対して完全なDANEサポートを提供しています。

DANEはDNSSECを利用してTLS証明書情報をDNSに公開し、メールサーバーが証明書機関に依存せずに証明書を検証できるようにします。

主な特徴:

  • ✅ 送信SMTP接続に対する完全なDANE検証
  • ✅ RFC 6698完全対応:PKIX-TA、PKIX-EE、DANE-TA、DANE-EE使用タイプ
  • ✅ TLSアップグレード時のTLSAレコードに対する証明書検証
  • ✅ 複数MXホストに対する並列TLSA解決
  • ✅ ネイティブdns.resolveTlsaの自動検出(Node.js v22.15.0+、v23.9.0+)
  • ✅ 古いNode.jsバージョン向けのカスタムリゾルバサポート(Tangerine経由)
  • DNSSEC署名済みドメインが必要

Tip

実装詳細: DANEサポートはmx-connect PR #22を通じて追加され、送信SMTP接続に対する包括的なDANE/TLSAサポートを提供します。

REQUIRETLS

Tip

Forward Emailはユーザー向けREQUIRETLSサポートを提供する数少ないプロバイダーの一つです。

REQUIRETLSは、メールメッセージが配信経路全体でTLS暗号化された接続のみで配信されることを保証します。

主な特徴:

  • メール作成画面のユーザー向けチェックボックス
  • 暗号化されていない配信の自動拒否
  • エンドツーエンドTLS強制
  • 詳細な失敗通知

Tip

ユーザー向けTLS強制: Forward EmailはMy Account > Domains > Settingsの下にすべての受信接続にTLSを強制するチェックボックスを提供しています。有効にすると、TLS暗号化されていない接続で送信された受信メールは530エラーコードで拒否され、すべての受信メールが転送中に暗号化されることを保証します。

Transport Security Flow

Email Message Encryption

Note

Forward Email はエンドツーエンドのメール暗号化に OpenPGP と S/MIME の両方をサポートしています。

Forward Email は OpenPGP と S/MIME 暗号化をサポートしています:

RFC タイトル ステータス 実装ノート
RFC 9580 OpenPGP (RFC 4880 の後継) ✅ サポート OpenPGP.js v6+ 経由の統合。詳細は FAQ を参照してください
RFC 8551 Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 メッセージ仕様 ✅ サポート RSA と ECC の両アルゴリズムをサポート。詳細は FAQ を参照してください

メッセージ暗号化プロトコルは、メッセージが転送中に傍受された場合でも、意図した受信者以外がメール内容を読むことができないように保護します。

Encryption Support

プロトコル RFC ステータス 説明
OpenPGP RFC 9580 ✅ サポート Pretty Good Privacy - 公開鍵暗号方式
S/MIME RFC 8551 ✅ サポート Secure/Multipurpose Internet Mail Extensions
WKD Draft ✅ サポート Web Key Directory - 自動鍵検出

OpenPGP (Pretty Good Privacy)

OpenPGP は公開鍵暗号を用いたエンドツーエンド暗号化を提供します。Forward Email は Web Key Directory (WKD) プロトコルを通じて OpenPGP をサポートしています。

主な特徴:

  • WKD による自動鍵検出
  • 暗号化された添付ファイルのための PGP/MIME サポート
  • メールクライアントによる鍵管理
  • GPG、Mailvelope、その他の OpenPGP ツールと互換性あり

使い方:

  1. メールクライアントで PGP 鍵ペアを生成する
  2. 公開鍵を Forward Email の WKD にアップロードする
  3. あなたの鍵は他のユーザーに自動的に検出可能になる
  4. 暗号化メールの送受信をシームレスに行う

S/MIME (Secure/Multipurpose Internet Mail Extensions)

S/MIME は X.509 証明書を用いたメール暗号化とデジタル署名を提供します。

主な特徴:

  • 証明書ベースの暗号化
  • メッセージ認証のためのデジタル署名
  • ほとんどのメールクライアントでネイティブサポート
  • エンタープライズグレードのセキュリティ

使い方:

  1. 証明書機関から S/MIME 証明書を取得する
  2. メールクライアントに証明書をインストールする
  3. メッセージの暗号化/署名をクライアントで設定する
  4. 受信者と証明書を交換する

SQLite Mailbox Encryption

Important

Forward Email は暗号化された SQLite メールボックスによる追加のセキュリティ層を提供します。

メッセージレベルの暗号化に加え、Forward Email は sqleet (ChaCha20-Poly1305) を使用してメールボックス全体を暗号化します。

主な特徴:

  • パスワードベースの暗号化 - パスワードはあなただけが知っています
  • 量子耐性 - ChaCha20-Poly1305 暗号
  • ゼロ知識 - Forward Email はあなたのメールボックスを復号できません
  • サンドボックス化 - 各メールボックスは分離されポータブル
  • 復旧不可 - パスワードを忘れるとメールボックスは失われます

暗号化比較

機能 OpenPGP S/MIME SQLite暗号化
エンドツーエンド ✅ はい ✅ はい ✅ はい
鍵管理 自己管理 CA発行 パスワードベース
クライアントサポート プラグイン必要 ネイティブ 透過的
ユースケース 個人用 企業用 ストレージ
量子耐性 ⚠️ 鍵による ⚠️ 証明書による ✅ はい

暗号化フロー


拡張機能

メールメッセージフォーマット標準

Note

Forward Emailはリッチコンテンツと国際化のための最新のメールフォーマット標準をサポートしています。

Forward Emailは標準的なメールメッセージフォーマットをサポートしています:

RFC タイトル 実装ノート
RFC 5322 インターネットメッセージフォーマット フルサポート
RFC 2045 MIME パート1: インターネットメッセージ本文のフォーマット フルMIMEサポート
RFC 2046 MIME パート2: メディアタイプ フルMIMEサポート
RFC 2047 MIME パート3: 非ASCIIテキストのためのメッセージヘッダー拡張 フルMIMEサポート
RFC 2048 MIME パート4: 登録手続き フルMIMEサポート
RFC 2049 MIME パート5: 適合基準と例 フルMIMEサポート

メールフォーマット標準は、メールメッセージの構造、エンコード、表示方法を定義します。

フォーマット標準のサポート

標準 RFC 状態 説明
MIME RFC 2045-2049 ✅ サポート マルチパーパスインターネットメール拡張
SMTPUTF8 RFC 6531 ⚠️ 部分的 国際化されたメールアドレス
EAI RFC 6530 ⚠️ 部分的 メールアドレス国際化
メッセージフォーマット RFC 5322 ✅ サポート インターネットメッセージフォーマット
MIMEセキュリティ RFC 1847 ✅ サポート MIMEのセキュリティマルチパート

MIME(マルチパーパスインターネットメール拡張)

MIMEは、メールに異なるコンテンツタイプ(テキスト、HTML、添付ファイルなど)を複数含めることを可能にします。

サポートされているMIME機能:

  • マルチパートメッセージ(mixed、alternative、related)
  • Content-Typeヘッダー
  • Content-Transfer-Encoding(7bit、8bit、quoted-printable、base64)
  • インライン画像と添付ファイル
  • リッチHTMLコンテンツ

SMTPUTF8とメールアドレス国際化

Warning

SMTPUTF8のサポートは部分的です - すべての機能が完全に実装されているわけではありません。 SMTPUTF8 は、メールアドレスに非ASCII文字(例:用户@例え.jp)を含めることを可能にします。

現在の状況:

  • ⚠️ 国際化メールアドレスの部分的サポート
  • ✅ メッセージ本文のUTF-8コンテンツ対応
  • ⚠️ 非ASCIIローカルパートの限定的サポート

カレンダーおよび連絡先プロトコル

Note

Forward Email はカレンダーおよび連絡先の同期のために完全な CalDAV と CardDAV サポートを提供します。

Forward Email は caldav-adapter ライブラリを通じて CalDAV と CardDAV をサポートしています:

RFC タイトル 状態 実装ノート
RFC 4791 WebDAV のカレンダー拡張 (CalDAV) ✅ 対応済み カレンダーのアクセスおよび管理
RFC 6352 CardDAV: WebDAV の vCard 拡張 ✅ 対応済み 連絡先のアクセスおよび管理
RFC 5545 インターネットカレンダーおよびスケジューリングコアオブジェクト仕様 (iCalendar) ✅ 対応済み iCalendar フォーマット対応
RFC 6350 vCard フォーマット仕様 ✅ 対応済み vCard 4.0 フォーマット対応
RFC 6638 CalDAV のスケジューリング拡張 ✅ 対応済み iMIP 対応の CalDAV スケジューリング。詳細は commit c4d1629 を参照
RFC 5546 iCalendar トランスポート非依存相互運用プロトコル (iTIP) ✅ 対応済み REQUEST、REPLY、CANCEL、VFREEBUSY メソッドの iTIP 対応。詳細は commit c4d1629 を参照
RFC 6047 iCalendar メッセージベース相互運用プロトコル (iMIP) ✅ 対応済み 返信リンク付きのメールベースカレンダー招待。詳細は commit c4d1629 を参照

CalDAV と CardDAV は、カレンダーおよび連絡先データをデバイス間でアクセス、共有、同期するためのプロトコルです。

CalDAV と CardDAV のサポート

プロトコル RFC 状態 説明
CalDAV RFC 4791 ✅ 対応済み カレンダーのアクセスおよび同期
CardDAV RFC 6352 ✅ 対応済み 連絡先のアクセスおよび同期
iCalendar RFC 5545 ✅ 対応済み カレンダーデータフォーマット
vCard RFC 6350 ✅ 対応済み 連絡先データフォーマット
VTODO RFC 5545 ✅ 対応済み タスク/リマインダーのサポート
CalDAV Scheduling RFC 6638 ✅ 対応済み カレンダースケジューリング拡張
iTIP RFC 5546 ✅ 対応済み トランスポート非依存の相互運用性
iMIP RFC 6047 ✅ 対応済み メールベースのカレンダー招待

CalDAV (カレンダーアクセス)

CalDAV は、任意のデバイスやアプリケーションからカレンダーにアクセスし管理することを可能にします。

主な機能:

  • 複数デバイス間の同期
  • 共有カレンダー
  • カレンダー購読
  • イベント招待と応答
  • 繰り返しイベント
  • タイムゾーン対応

対応クライアント:

  • Apple カレンダー (macOS, iOS)
  • Mozilla Thunderbird
  • Evolution
  • GNOME カレンダー
  • 任意の CalDAV 対応クライアント

CardDAV (連絡先アクセス)

CardDAV は、任意のデバイスやアプリケーションから連絡先にアクセスし管理することを可能にします。

主な機能:

  • 複数デバイス間の同期
  • 共有アドレス帳
  • 連絡先グループ
  • 写真対応
  • カスタムフィールド
  • vCard 4.0 対応

対応クライアント:

  • Apple 連絡先 (macOS, iOS)
  • Mozilla Thunderbird
  • Evolution
  • GNOME 連絡先
  • 任意の CardDAV 対応クライアント

タスクとリマインダー (CalDAV VTODO)

Tip

Forward Email は CalDAV VTODO を通じてタスクとリマインダーをサポートしています。

VTODO は iCalendar フォーマットの一部で、CalDAV を通じたタスク管理を可能にします。

主な機能:

  • タスクの作成と管理
  • 期限日と優先度
  • タスク完了の追跡
  • 繰り返しタスク
  • タスクリスト/カテゴリ

対応クライアント:

  • Apple リマインダー (macOS, iOS)
  • Mozilla Thunderbird (Lightning 付き)
  • Evolution
  • GNOME To Do
  • VTODO 対応の任意の CalDAV クライアント

CalDAV/CardDAV 同期フロー

サポートされていないカレンダー拡張機能

以下のカレンダー拡張機能はサポートされていません:

RFC タイトル 理由
RFC 4918 Web分散作成およびバージョニングのためのHTTP拡張 (WebDAV) CalDAV は WebDAV の概念を使用しますが、RFC 4918 全体は実装していません
RFC 6578 WebDAV のコレクション同期 実装されていません
RFC 3744 WebDAV アクセス制御プロトコル 実装されていません

メールメッセージフィルタリング

Important

Forward Email はサーバーサイドのメールフィルタリングに対して 完全な Sieve および ManageSieve サポート を提供します。強力なルールを作成して、受信メッセージを自動的に仕分け、フィルタリング、転送、応答できます。

Sieve (RFC 5228)

Sieve は、サーバーサイドのメールフィルタリングのための標準化された強力なスクリプト言語です。Forward Email は 24 の拡張機能を備えた包括的な Sieve サポートを実装しています。

ソースコード: helpers/sieve/

サポートされているコア Sieve RFC

RFC タイトル ステータス
RFC 5228 Sieve: メールフィルタリング言語 ✅ 完全サポート
RFC 5429 Sieve メールフィルタリング: 拒否および拡張拒否拡張 ✅ 完全サポート
RFC 5230 Sieve メールフィルタリング: バケーション拡張 ✅ 完全サポート
RFC 6131 Sieve バケーション拡張: "Seconds" パラメータ ✅ 完全サポート
RFC 5232 Sieve メールフィルタリング: Imap4flags 拡張 ✅ 完全サポート
RFC 5173 Sieve メールフィルタリング: 本文拡張 ✅ 完全サポート
RFC 5229 Sieve メールフィルタリング: 変数拡張 ✅ 完全サポート
RFC 5231 Sieve メールフィルタリング: 関係拡張 ✅ 完全サポート
RFC 4790 インターネットアプリケーションプロトコル照合レジストリ ✅ 完全サポート
RFC 3894 Sieve 拡張: 副作用なしのコピー ✅ 完全サポート
RFC 5293 Sieve メールフィルタリング: Editheader 拡張 ✅ 完全サポート
RFC 5260 Sieve メールフィルタリング: 日付およびインデックス拡張 ✅ 完全サポート
RFC 5435 Sieve メールフィルタリング: 通知のための拡張 ✅ 完全サポート
RFC 5183 Sieve メールフィルタリング: 環境拡張 ✅ 完全サポート
RFC 5490 Sieve メールフィルタリング: メールボックス状態チェック拡張 ✅ 完全サポート
RFC 8579 Sieve メールフィルタリング: 特殊用途メールボックスへの配信 ✅ 完全サポート
RFC 7352 Sieve メールフィルタリング: 重複配信の検出 ✅ 完全サポート
RFC 5463 Sieve メールフィルタリング: Ihave 拡張 ✅ 完全サポート
RFC 5233 Sieve メールフィルタリング: サブアドレス拡張 ✅ 完全サポート
draft-ietf-sieve-regex Sieve メールフィルタリング: 正規表現拡張 ✅ 完全サポート

サポートされているSieve拡張機能

拡張機能 説明 統合
fileinto メッセージを特定のフォルダーに振り分ける 指定されたIMAPフォルダーにメッセージを保存
reject / ereject エラーでメッセージを拒否する バウンスメッセージ付きのSMTP拒否
vacation 自動応答(休暇/不在通知) Emails.queue経由でキューイング、レート制限あり
vacation-seconds 細かい休暇応答間隔の指定 :secondsパラメータからTTLを取得
imap4flags IMAPフラグの設定(\Seen、\Flaggedなど) メッセージ保存時にフラグを適用
envelope エンベロープの送信者/受信者をテスト SMTPエンベロープデータへのアクセス
body メッセージ本文の内容をテスト 本文全体のテキストマッチング
variables スクリプト内で変数を保存・使用 修飾子付きの変数展開
relational 関係演算子による比較 :count :value とgt/lt/eq
comparator-i;ascii-numeric 数値比較 数値文字列の比較
copy リダイレクト時にメッセージをコピー fileinto/redirectでの:copyフラグ
editheader メッセージヘッダーの追加・削除 保存前にヘッダーを修正
date 日付/時刻の値をテスト currentdateおよびヘッダーの日付テスト
index 特定のヘッダーの出現回数にアクセス 複数値ヘッダーに対する:index
regex 正規表現マッチング テストでの完全な正規表現サポート
enotify 通知の送信 Emails.queue経由のmailto:通知
environment 環境情報へのアクセス セッションからドメイン、ホスト、リモートIPを取得
mailbox メールボックスの存在をテスト mailboxexistsテスト
special-use 特殊用途メールボックスへの振り分け \Junk、\Trashなどをフォルダーにマッピング
duplicate 重複メッセージの検出 Redisベースの重複追跡
ihave 拡張機能の利用可能性をテスト 実行時の機能チェック
subaddress user+detail形式のアドレス部分にアクセス :userおよび:detailアドレス部分

サポートされていないSieve拡張機能

拡張機能 RFC 理由
include RFC 6609 セキュリティリスク(スクリプトインジェクション)、グローバルスクリプト保存が必要
mboxmetadata / servermetadata RFC 5490 IMAP METADATA拡張が必要
fcc RFC 8580 送信済みフォルダーとの統合が必要
encoded-character RFC 5228 ${hex:}構文のためにパーサーの変更が必要
foreverypart / mime / extracttext RFC 5703 複雑なMIMEツリーの操作が必要

Sieve処理フロー

セキュリティ機能

Forward EmailのSieve実装には包括的なセキュリティ保護が含まれています:

  • CVE-2023-26430保護:リダイレクトループやメール爆撃攻撃を防止
  • レート制限:リダイレクト(10通/メッセージ、100通/日)および休暇返信の制限
  • 拒否リストチェック:リダイレクト先アドレスを拒否リストと照合
  • 保護されたヘッダー:DKIM、ARC、および認証ヘッダーはeditheaderで変更不可
  • スクリプトサイズ制限:最大スクリプトサイズを強制
  • 実行タイムアウト:実行時間が制限を超えた場合にスクリプトを終了

例:Sieveスクリプト

ニュースレターをフォルダに振り分ける:

require ["fileinto"];

if header :contains "List-Id" "newsletter" {
    fileinto "Newsletters";
}

細かいタイミング設定の休暇自動応答:

require ["vacation", "vacation-seconds"];

vacation :seconds 3600 :subject "Out of Office"
    "現在不在のため、24時間以内に返信いたします。";

フラグ付きスパムフィルタリング:

require ["fileinto", "imap4flags"];

if header :contains "X-Spam-Status" "Yes" {
    setflag "\\Seen";
    fileinto "Junk";
}

変数を使った複雑なフィルタリング:

require ["variables", "fileinto", "regex"];

if header :regex "From" "(.+)@example\\.com" {
    set :lower "sender" "${1}";
    fileinto "Contacts/${sender}";
}

Tip

完全なドキュメント、例スクリプト、設定手順については、FAQ: Do you support Sieve email filtering? をご覧ください

ManageSieve (RFC 5804)

Forward EmailはSieveスクリプトをリモート管理するためのManageSieveプロトコルを完全にサポートしています。

ソースコード: managesieve-server.js

RFC タイトル ステータス
RFC 5804 Sieveスクリプトをリモート管理するためのプロトコル ✅ フルサポート

ManageSieveサーバー設定

設定項目
サーバー imap.forwardemail.net
ポート (STARTTLS) 2190 (推奨)
ポート (Implicit TLS) 4190
認証方式 PLAIN (TLS上で)

注意: ポート2190はSTARTTLS(平文からTLSへのアップグレード)を使用し、sieve-connectを含むほとんどのManageSieveクライアントと互換性があります。ポート4190は暗黙のTLS(接続開始時からTLS)を使用し、それをサポートするクライアント向けです。

対応ManageSieveコマンド

コマンド 説明
AUTHENTICATE PLAINメカニズムによる認証
CAPABILITY サーバーの機能および拡張機能の一覧表示
HAVESPACE スクリプトを保存可能か確認
PUTSCRIPT 新しいスクリプトをアップロード
LISTSCRIPTS すべてのスクリプトとアクティブ状態の一覧
SETACTIVE スクリプトをアクティブ化
GETSCRIPT スクリプトをダウンロード
DELETESCRIPT スクリプトを削除
RENAMESCRIPT スクリプトの名前変更
CHECKSCRIPT スクリプトの構文検証
NOOP 接続を維持
LOGOUT セッション終了

対応ManageSieveクライアント

  • Thunderbird: Sieveアドオンによる組み込みSieveサポート
  • Roundcube: ManageSieveプラグイン
  • KMail: ネイティブManageSieveサポート
  • sieve-connect: コマンドラインクライアント
  • RFC 5804準拠の任意のクライアント

ManageSieveプロトコルフロー

WebインターフェースとAPI

ManageSieveに加えて、Forward Emailは以下を提供します:

  • Webダッシュボード: My Account → Domains → Aliases → Sieve Scriptsでウェブインターフェースを通じてSieveスクリプトの作成と管理が可能
  • REST API: Forward Email APIを通じたプログラムによるSieveスクリプト管理アクセス

Tip

詳細なセットアップ手順とクライアント設定については、FAQ: Sieveメールフィルタリングをサポートしていますか?をご覧ください


ストレージ最適化

Important

業界初のストレージ技術: Forward Emailは、添付ファイルの重複排除とメールコンテンツのBrotli圧縮を組み合わせた世界唯一のメールプロバイダーです。この二重の最適化により、従来のメールプロバイダーと比べて2~3倍の効果的なストレージを実現しています。

Forward Emailは、RFC準拠とメッセージの完全性を維持しつつ、メールボックスサイズを劇的に削減する2つの革新的なストレージ最適化技術を実装しています:

  1. 添付ファイルの重複排除 - すべてのメール間で重複する添付ファイルを排除
  2. Brotli圧縮 - メタデータを46~86%、添付ファイルを50%削減

アーキテクチャ:二重層ストレージ最適化


添付ファイルの重複排除

Forward Emailは、WildDuckの実績ある手法をSQLiteストレージ向けに適用した添付ファイルの重複排除を実装しています。

Note

重複排除の対象: 「添付ファイル」とは、デコードされたファイルではなく、エンコードされたMIMEノードの内容(base64またはquoted-printable)を指します。これによりDKIMおよびGPG署名の有効性が保持されます。

動作原理

WildDuckのオリジナル実装(MongoDB GridFS):

Wild Duck IMAPサーバーは添付ファイルを重複排除します。この場合の「添付ファイル」とは、base64またはquoted-printableでエンコードされたmimeノードの内容を指し、デコードされたファイルではありません。エンコードされた内容を使用することで多くの偽陰性(異なるメール内の同一ファイルが異なる添付ファイルとしてカウントされる)が発生しますが、これは異なる署名方式(DKIM、GPGなど)の有効性を保証するために必要です。Wild Duckから取得したメッセージは、メッセージをツリー状のオブジェクトに解析し取得時に再構築しているにもかかわらず、保存されたメッセージとまったく同じに見えます。 Forward EmailのSQLite実装:

Forward Emailは暗号化されたSQLiteストレージに対して以下のプロセスでこのアプローチを適用しています:

  1. ハッシュ計算: 添付ファイルが見つかった場合、添付ファイルの本文からrev-hashライブラリを使ってハッシュを計算します
  2. 照会: Attachmentsテーブルに一致するハッシュの添付ファイルが存在するか確認します
  3. 参照カウント:
    • 存在する場合: 参照カウンターを1増やし、マジックカウンターをランダムな数だけ増やします
    • 新規の場合: カウンター=1で新しい添付ファイルエントリを作成します
  4. 削除の安全性: 偽陽性を防ぐために二重カウンターシステム(参照+マジック)を使用します
  5. ガベージコレクション: 両方のカウンターがゼロになった時点で添付ファイルは即座に削除されます

ソースコード: helpers/attachment-storage.js

重複排除フロー

マジックナンバーシステム

Forward EmailはWildDuckの「マジックナンバー」システム(Mail.ruに触発)を使用して削除時の偽陽性を防いでいます:

  • すべてのメッセージにランダムな数値が割り当てられます
  • メッセージが追加されると添付ファイルのマジックカウンターはそのランダム数だけ増加します
  • メッセージが削除されると同じ数だけマジックカウンターは減少します
  • 添付ファイルは両方のカウンター(参照+マジック)がゼロになった時のみ削除されます

この二重カウンターシステムにより、削除時に問題が発生した場合(例:クラッシュ、ネットワークエラー)でも添付ファイルが早期に削除されることを防ぎます。

主な違い: WildDuck vs Forward Email

機能 WildDuck (MongoDB) Forward Email (SQLite)
ストレージバックエンド MongoDB GridFS(チャンク化) SQLite BLOB(直接)
ハッシュアルゴリズム SHA256 rev-hash(SHA-256ベース)
参照カウント ✅ あり ✅ あり
マジックナンバー ✅ あり(Mail.ru由来) ✅ あり(同じシステム)
ガベージコレクション 遅延(別ジョブ) 即時(カウンターゼロ時)
圧縮 ❌ なし ✅ Brotli(以下参照)
暗号化 ❌ 任意 ✅ 常時(ChaCha20-Poly1305)

Brotli圧縮

Important

世界初: Forward EmailはメールコンテンツにBrotli圧縮を使用する世界で唯一のメールサービスです。これにより添付ファイルの重複排除に加えて46-86%のストレージ節約が可能になります。

Forward Emailは添付ファイル本文とメッセージメタデータの両方にBrotli圧縮を実装し、大幅なストレージ節約を実現しつつ後方互換性を維持しています。

実装: helpers/msgpack-helpers.js

圧縮対象

1. 添付ファイル本文 (encodeAttachmentBody)

  • 旧フォーマット: 16進エンコードされた文字列(サイズ2倍)または生のBuffer
  • 新フォーマット: "FEBR"マジックヘッダー付きのBrotli圧縮Buffer
  • 圧縮判定: 4バイトのヘッダーを考慮し、圧縮でサイズが小さくなる場合のみ圧縮
  • ストレージ節約: 最大50%(16進→ネイティブBLOB) 2. メッセージメタデータ (encodeMetadata)

含まれるもの: mimeTreeheadersenvelopeflags

  • 旧フォーマット: JSONテキスト文字列
  • 新フォーマット: Brotli圧縮されたBuffer
  • ストレージ節約率: メッセージの複雑さにより46-86%

圧縮設定

// 速度最適化されたBrotli圧縮オプション(レベル4はバランスが良い)
const BROTLI_COMPRESS_OPTIONS = {
  params: {
    [zlib.constants.BROTLI_PARAM_QUALITY]: 4
  }
};

なぜレベル4?

  • 高速な圧縮/解凍: ミリ秒未満の処理時間
  • 良好な圧縮率: 46-86%の節約
  • バランスの取れた性能: リアルタイムメール処理に最適

マジックヘッダー: "FEBR"

Forward Emailは圧縮された添付ファイルの本文を識別するために4バイトのマジックヘッダーを使用します:

"FEBR" = Forward Email BRotli
16進数: 0x46 0x45 0x42 0x52

なぜマジックヘッダー?

  • フォーマット検出: 圧縮データか非圧縮データかを即座に識別
  • 後方互換性: 古い16進文字列や生のBufferも動作
  • 衝突回避: "FEBR"は正当な添付データの先頭に現れる可能性が低い

圧縮プロセス

解凍プロセス

後方互換性

すべてのデコード関数はストレージフォーマットを自動検出します:

フォーマット 検出方法 処理内容
Brotli圧縮 "FEBR"マジックヘッダーの有無確認 zlib.brotliDecompressSync()で解凍
生のBuffer マジックなしでBuffer.isBuffer() そのまま返す
16進文字列 偶数長かつ[0-9a-f]文字の確認 Buffer.from(value, 'hex')でデコード
JSON文字列 最初の文字が{または[か確認 JSON.parse()で解析

これにより、旧フォーマットから新フォーマットへの移行時にデータ損失ゼロを保証します。

ストレージ節約統計

本番データからの測定節約率:

データタイプ 旧フォーマット 新フォーマット 節約率
添付ファイル本文 16進エンコード文字列(2倍) Brotli圧縮BLOB 50%
メッセージメタデータ JSONテキスト Brotli圧縮BLOB 46-86%
メールボックスフラグ JSONテキスト Brotli圧縮BLOB 60-80%

出典: helpers/migrate-storage-format.js

移行プロセス

Forward Emailは旧フォーマットから新フォーマットへの自動かつ冪等な移行を提供します: // 移行統計の追跡: { attachmentsMigrated: 0, messagesMigrated: 0, mailboxesMigrated: 0, bytesSaved: 0 // 圧縮によって節約された合計バイト数 }


**移行手順:**

1. 添付ファイルの本文: 16進エンコード → ネイティブBLOB(50%節約)
2. メッセージメタデータ: JSONテキスト → Brotli圧縮BLOB(46-86%節約)
3. メールボックスフラグ: JSONテキスト → Brotli圧縮BLOB(60-80%節約)

**ソース:** [`helpers/migrate-storage-format.js`](https://github.com/forwardemail/forwardemail.net/blob/master/helpers/migrate-storage-format.js)

---

### 統合ストレージ効率 {#combined-storage-efficiency}

> \[!TIP]
> **実際の効果:** 添付ファイルの重複排除+Brotli圧縮により、Forward Emailユーザーは従来のメールプロバイダーと比べて**2〜3倍の実効ストレージ**を得られます。

**例示シナリオ:**

従来のメールプロバイダー(1GBメールボックス):

* 1GBのディスク容量 = 1GBのメール
* 重複排除なし: 同じ添付ファイルが10回保存される = 10倍のストレージ無駄遣い
* 圧縮なし: フルJSONメタデータ保存 = 2〜3倍のストレージ無駄遣い

Forward Email(1GBメールボックス):

* 1GBのディスク容量 ≈ **2〜3GBのメール**(実効ストレージ)
* 重複排除: 同じ添付ファイルは1回保存し、10回参照
* 圧縮: メタデータで46〜86%節約、添付ファイルで50%節約
* 暗号化: ChaCha20-Poly1305(ストレージオーバーヘッドなし)

**比較表:**

| プロバイダー       | ストレージ技術                              | 実効ストレージ(1GBメールボックス) |
| ----------------- | -------------------------------------------- | ------------------------------- |
| Gmail             | なし                                         | 1GB                             |
| iCloud            | なし                                         | 1GB                             |
| Outlook.com       | なし                                         | 1GB                             |
| Fastmail          | なし                                         | 1GB                             |
| ProtonMail        | 暗号化のみ                                   | 1GB                             |
| Tutanota          | 暗号化のみ                                   | 1GB                             |
| **Forward Email** | **重複排除+圧縮+暗号化**                    | **2〜3GB** ✨                   |

### 技術的実装詳細 {#technical-implementation-details}

**パフォーマンス:**

* Brotliレベル4: サブミリ秒の圧縮/解凍
* 圧縮によるパフォーマンスペナルティなし
* SQLite FTS5: NVMe SSDで50ms未満の検索

**セキュリティ:**

* 圧縮は**暗号化後**に実施(SQLiteデータベースは暗号化済み)
* ChaCha20-Poly1305暗号化+Brotli圧縮
* ゼロ知識: 復号パスワードはユーザーのみが保持

**RFC準拠:**

* 取得したメッセージは保存時と**全く同じ**
* DKIM署名は有効なまま(エンコードされた内容を保持)
* GPG署名は有効なまま(署名対象の内容は変更なし)

### なぜ他のプロバイダーはこれをしないのか {#why-no-other-provider-does-this}

**複雑さ:**

* ストレージ層との深い統合が必要
* 後方互換性の確保が困難
* 古いフォーマットからの移行が複雑

**パフォーマンスの懸念:**

* 圧縮はCPU負荷を増やす(Brotliレベル4で解決)
* 読み込みごとの解凍(SQLiteのキャッシュで解決)

**Forward Emailの強み:**

* 最初から最適化を念頭に設計
* SQLiteは直接BLOB操作を可能にする
* ユーザーごとに暗号化されたデータベースで安全な圧縮を実現

---

---


## モダンな機能 {#modern-features}


## メール管理のための完全なREST API {#complete-rest-api-for-email-management}

> \[!TIP]
> Forward Emailはプログラムによるメール管理のために39のエンドポイントを持つ包括的なREST APIを提供しています。

> \[!TIP]
> **業界唯一の特徴:** 他のどのメールサービスとも異なり、Forward Emailはメールボックス、カレンダー、連絡先、メッセージ、フォルダへの完全なプログラムアクセスを包括的なREST APIを通じて提供します。これは、すべてのデータを格納する暗号化されたSQLiteデータベースファイルへの直接操作です。

Forward Emailは、メールデータへの前例のないアクセスを提供する完全なREST APIを提供します。Gmail、iCloud、Outlook、ProtonMail、Tuta、Fastmailを含む他のどのメールサービスも、このレベルの包括的で直接的なデータベースアクセスを提供していません。
**APIドキュメント:** <https://forwardemail.net/en/email-api>

### APIカテゴリ(39エンドポイント) {#api-categories-39-endpoints}

**1. メッセージAPI**(5エンドポイント) - メールメッセージの完全なCRUD操作:

* `GET /v1/messages` - 15以上の高度な検索パラメータでメッセージを一覧表示(他のサービスにはない機能)
* `POST /v1/messages` - メッセージの作成/送信
* `GET /v1/messages/:id` - メッセージの取得
* `PUT /v1/messages/:id` - メッセージの更新(フラグ、フォルダ)
* `DELETE /v1/messages/:id` - メッセージの削除

*例:添付ファイル付きの前四半期のすべての請求書を検索する場合:*

```bash
curl -u "alias@domain.com:password" \
  "https://api.forwardemail.net/v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01"

高度な検索ドキュメントを参照してください

2. フォルダAPI(5エンドポイント) - REST経由の完全なIMAPフォルダ管理:

  • GET /v1/folders - すべてのフォルダを一覧表示
  • POST /v1/folders - フォルダを作成
  • GET /v1/folders/:id - フォルダを取得
  • PUT /v1/folders/:id - フォルダを更新
  • DELETE /v1/folders/:id - フォルダを削除

3. 連絡先API(5エンドポイント) - REST経由のCardDAV連絡先ストレージ:

  • GET /v1/contacts - 連絡先を一覧表示
  • POST /v1/contacts - 連絡先を作成(vCard形式)
  • GET /v1/contacts/:id - 連絡先を取得
  • PUT /v1/contacts/:id - 連絡先を更新
  • DELETE /v1/contacts/:id - 連絡先を削除

4. カレンダーAPI(5エンドポイント) - カレンダーコンテナ管理:

  • GET /v1/calendars - カレンダーコンテナを一覧表示
  • POST /v1/calendars - カレンダーを作成(例:「仕事用カレンダー」、「個人用カレンダー」)
  • GET /v1/calendars/:id - カレンダーを取得
  • PUT /v1/calendars/:id - カレンダーを更新
  • DELETE /v1/calendars/:id - カレンダーを削除

5. カレンダーイベントAPI(5エンドポイント) - カレンダー内のイベントスケジューリング:

  • GET /v1/calendar-events - イベントを一覧表示
  • POST /v1/calendar-events - 参加者付きイベントを作成
  • GET /v1/calendar-events/:id - イベントを取得
  • PUT /v1/calendar-events/:id - イベントを更新
  • DELETE /v1/calendar-events/:id - イベントを削除

例:カレンダーイベントを作成する場合:

curl -u "alias@domain.com:password" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"title":"チームミーティング","start":"2024-12-20T10:00:00Z","attendees":["team@example.com"],"calendar_id":"calendar123"}' \
  https://api.forwardemail.net/v1/calendar-events

技術的詳細

  • 認証: シンプルな alias:password 認証(OAuthの複雑さなし)
  • パフォーマンス: SQLite FTS5 と NVMe SSD ストレージによる50ms未満の応答時間
  • ゼロネットワーク遅延: 外部サービスを経由しない直接データベースアクセス

実際のユースケース

  • メール分析: メール量、応答時間、送信者統計を追跡するカスタムダッシュボードの構築

  • 自動化ワークフロー: メール内容に基づくアクションのトリガー(請求書処理、サポートチケット)

  • CRM連携: メール会話をCRMと自動同期

  • コンプライアンス&ディスカバリー: 法務・コンプライアンス要件のためのメール検索とエクスポート

  • カスタムメールクライアント: ワークフローに特化したメールインターフェースの構築

  • ビジネスインテリジェンス: 通信パターン、応答率、顧客エンゲージメントの分析

  • ドキュメント管理: 添付ファイルの自動抽出と分類

  • 完全なドキュメント

  • 完全なAPIリファレンス

  • 高度な検索ガイド

  • 30以上の統合例

  • 技術アーキテクチャ

Forward Emailは、メールアカウント、ドメイン、エイリアス、メッセージを完全に制御できるモダンなREST APIを提供します。このAPIはJMAPの強力な代替手段であり、従来のメールプロトコルを超えた機能を提供します。

カテゴリ エンドポイント数 説明
アカウント管理 8 ユーザーアカウント、認証、設定
ドメイン管理 12 カスタムドメイン、DNS、検証
エイリアス管理 6 メールエイリアス、転送、キャッチオール
メッセージ管理 7 メッセージの送受信、検索、削除
カレンダー&連絡先 4 CalDAV/CardDAVアクセスAPI
ログ&分析 2 メールログ、配信レポート

主要なAPI機能

高度な検索:

APIはGmailに似たクエリ構文を持つ強力な検索機能を提供します:

GET /v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01

サポートされている検索演算子:

  • from: - 送信者で検索
  • to: - 受信者で検索
  • subject: - 件名で検索
  • has:attachment - 添付ファイル付きメッセージ
  • is:unread - 未読メッセージ
  • is:starred - スター付きメッセージ
  • after: - 指定日以降のメッセージ
  • before: - 指定日以前のメッセージ
  • label: - ラベル付きメッセージ
  • filename: - 添付ファイル名

カレンダーイベント管理:

GET /v1/calendar-events
POST /v1/calendar-events
PUT /v1/calendar-events/:id
DELETE /v1/calendar-events/:id

Webhook統合:

APIはメールイベント(受信、送信、バウンスなど)のリアルタイム通知のためのWebhookをサポートします。

認証:

  • APIキー認証
  • OAuth 2.0対応
  • レート制限: 1時間あたり1000リクエスト

データ形式:

  • JSONリクエスト/レスポンス
  • RESTful設計
  • ページネーション対応

セキュリティ:

  • HTTPSのみ
  • APIキーのローテーション
  • IPホワイトリスト(オプション)
  • リクエスト署名(オプション)

APIアーキテクチャ


iOSプッシュ通知

Tip

Forward EmailはXAPPLEPUSHSERVICEを通じてネイティブのiOSプッシュ通知をサポートし、即時のメール配信を実現します。

Important

ユニークな特徴: Forward Emailは、メール、連絡先、カレンダーのネイティブiOSプッシュ通知をXAPPLEPUSHSERVICE IMAP拡張でサポートする数少ないオープンソースメールサーバーの一つです。これはAppleのプロトコルをリバースエンジニアリングしており、バッテリー消費なしにiOSデバイスへ即時配信を提供します。

Forward EmailはApple独自のXAPPLEPUSHSERVICE拡張を実装し、バックグラウンドポーリングを必要とせずiOSデバイス向けのネイティブプッシュ通知を提供します。

動作原理

XAPPLEPUSHSERVICEは非標準のIMAP拡張で、新着メール到着時にiOSのメールアプリが即時プッシュ通知を受け取ることを可能にします。

Forward EmailはIMAP向けのApple Push Notification service (APNs) 統合を実装しており、新着メール到着時にiOSメールアプリが即時プッシュ通知を受け取れます。

主な特徴

即時配信:

  • プッシュ通知は数秒以内に届く
  • バッテリーを消耗するバックグラウンドポーリングなし
  • メールアプリが閉じていても動作
  • 即時配信: メール、カレンダーイベント、連絡先がポーリングスケジュールではなく即座にiPhone/iPadに表示される

  • バッテリー効率: 常時IMAP接続を維持する代わりにAppleのプッシュインフラを利用

  • トピックベースプッシュ: INBOXだけでなく特定のメールボックス向けのプッシュ通知をサポート

  • サードパーティアプリ不要: ネイティブのiOSメール、カレンダー、連絡先アプリで動作 ネイティブ統合:

  • iOSメールアプリに組み込み済み

  • サードパーティアプリ不要

  • シームレスなユーザー体験

プライバシー重視:

  • デバイストークンは暗号化されている
  • メッセージ内容はAPNS経由で送信されない
  • 「新着メール」通知のみ送信される

バッテリー効率:

  • 常時IMAPポーリングなし
  • 通知が届くまでデバイスはスリープ状態
  • バッテリーへの影響は最小限

これが特別な理由

Important

ほとんどのメールプロバイダーはXAPPLEPUSHSERVICEをサポートしておらず、iOSデバイスは15分ごとに新着メールをポーリングする必要があります。

ほとんどのオープンソースメールサーバー(Dovecot、Postfix、Cyrus IMAPを含む)はiOSプッシュ通知をサポートしていません。ユーザーは以下のいずれかを選択する必要があります:

  • IMAP IDLEを使用(接続を維持し、バッテリーを消耗)
  • ポーリングを使用(15〜30分ごとにチェック、通知が遅延)
  • 独自のプッシュインフラを持つ専用メールアプリを使用

Forward EmailはGmail、iCloud、Fastmailなどの商用サービスと同様の即時プッシュ通知体験を提供します。

他プロバイダーとの比較:

プロバイダー プッシュ対応 ポーリング間隔 バッテリー影響
Forward Email ✅ ネイティブプッシュ 即時 最小限
Gmail ✅ ネイティブプッシュ 即時 最小限
iCloud ✅ ネイティブプッシュ 即時 最小限
Yahoo ✅ ネイティブプッシュ 即時 最小限
Outlook.com ❌ ポーリング 15分 中程度
Fastmail ❌ ポーリング 15分 中程度
ProtonMail ⚠️ ブリッジのみ ブリッジ経由 高い
Tutanota ❌ アプリのみ 該当なし 該当なし

実装の詳細

IMAP CAPABILITYレスポンス:

* CAPABILITY IMAP4rev1 ... XAPPLEPUSHSERVICE ...

登録プロセス:

  1. iOSメールアプリがXAPPLEPUSHSERVICE機能を検出
  2. アプリがForward Emailにデバイストークンを登録
  3. Forward Emailがトークンを保存しアカウントに紐付け
  4. 新着メール到着時にForward EmailがAPNS経由でプッシュ送信
  5. iOSがメールアプリを起動し新着メッセージを取得

セキュリティ:

  • デバイストークンは保存時に暗号化
  • トークンは期限切れとなり自動更新される
  • メッセージ内容はAPNSに公開されない
  • エンドツーエンド暗号化を維持
  • IMAP拡張: XAPPLEPUSHSERVICE
  • ソースコード: WildDuck Issue #711
  • セットアップ: 自動 - 設定不要でiOSメールアプリで即利用可能

他サービスとの比較

サービス iOSプッシュ対応 方法
Forward Email ✅ 対応 XAPPLEPUSHSERVICE(リバースエンジニアリング)
Gmail ✅ 対応 独自Gmailアプリ+Googleプッシュ
iCloud Mail ✅ 対応 Apple純正統合
Outlook.com ✅ 対応 独自Outlookアプリ+Microsoftプッシュ
Fastmail ✅ 対応 XAPPLEPUSHSERVICE
Dovecot ❌ 非対応 IMAP IDLEまたはポーリングのみ
Postfix ❌ 非対応 IMAP IDLEまたはポーリングのみ
Cyrus IMAP ❌ 非対応 IMAP IDLEまたはポーリングのみ

Gmailプッシュ:

GmailはGmailアプリ専用の独自プッシュシステムを使用。iOSメールアプリはGmailのIMAPサーバーをポーリングする必要があります。

iCloudプッシュ:

iCloudはForward Emailと同様のネイティブプッシュをサポートしていますが、@icloud.comアドレスのみ対応です。

Outlook.com:

Outlook.comはXAPPLEPUSHSERVICEをサポートしておらず、iOSメールは15分ごとにポーリングします。

Fastmail:

FastmailはXAPPLEPUSHSERVICEをサポートしていません。プッシュ通知にはFastmailアプリを使用するか、15分間隔のポーリング遅延を受け入れる必要があります。


テストと検証

プロトコル機能テスト

Note

このセクションでは、2026年1月22日に実施した最新のプロトコル機能テストの結果を提供します。

このセクションには、テスト対象のすべてのプロバイダーからの実際のCAPABILITY/CAPA/EHLO応答が含まれています。すべてのテストは2026年1月22日に実施されました。

これらのテストは、主要プロバイダー間でのさまざまなメールプロトコルおよび拡張機能の広告されたサポートと実際のサポートを検証するのに役立ちます。

Test Methodology

テスト環境:

  • 日付: 2026年1月22日 02:37 UTC
  • 場所: AWS EC2インスタンス
  • IPv4: 54.167.216.197
  • IPv6: 2600:4040:46da:9a00:b19e:3ad4:426c:2f48
  • ツール: OpenSSL s_client、bashスクリプト

テスト対象プロバイダー:

  • Forward Email
  • Gmail
  • Outlook.com
  • iCloud
  • Fastmail
  • Yahoo/AOL (Verizon)

Test Scripts

完全な透明性のために、これらのテストに使用された正確なスクリプトを以下に示します。

IMAP Capability Test Script

#!/bin/bash
# IMAP Capability Test Script
# Tests IMAP CAPABILITY for various email providers

echo "========================================="
echo "IMAP CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""

# Gmail
echo "--- Gmail (imap.gmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.gmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

# Outlook.com
echo "--- Outlook.com (outlook.office365.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect outlook.office365.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

# iCloud
echo "--- iCloud (imap.mail.me.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.me.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

# Fastmail
echo "--- Fastmail (imap.fastmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.fastmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

# Yahoo
echo "--- Yahoo (imap.mail.yahoo.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.yahoo.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

# Forward Email
echo "--- Forward Email (imap.forwardemail.net:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.forwardemail.net:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""

echo "========================================="
echo "Test completed"
echo "========================================="

POP3 Capability Test Script

#!/bin/bash
# POP3 Capability Test Script
# Tests POP3 CAPA for various email providers

echo "========================================="
echo "POP3 CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""

# Gmail
echo "--- Gmail (pop.gmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.gmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""

# Outlook.com
echo "--- Outlook.com (outlook.office365.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect outlook.office365.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""

# iCloud (Note: iCloud does not support POP3)
echo "--- iCloud (No POP3 support) ---"
echo "iCloudはPOP3をサポートしていません"
echo ""

# Fastmail
echo "--- Fastmail (pop.fastmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.fastmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""

# Yahoo
echo "--- Yahoo (pop.mail.yahoo.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.mail.yahoo.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""

# Forward Email
echo "--- Forward Email (pop3.forwardemail.net:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop3.forwardemail.net:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""

echo "========================================="
echo "Test completed"
echo "========================================="

SMTP機能テストスクリプト

#!/bin/bash
# SMTP Capability Test Script
# Tests SMTP EHLO for various email providers

echo "========================================="
echo "SMTP CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""

# Gmail
echo "--- Gmail (smtp.gmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.gmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

# Outlook.com
echo "--- Outlook.com (smtp.office365.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.office365.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

# iCloud
echo "--- iCloud (smtp.mail.me.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.me.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

# Fastmail
echo "--- Fastmail (smtp.fastmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.fastmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

# Yahoo
echo "--- Yahoo (smtp.mail.yahoo.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.yahoo.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

# Forward Email
echo "--- Forward Email (smtp.forwardemail.net:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.forwardemail.net:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""

echo "========================================="
echo "Test completed"
echo "========================================="

テスト結果の概要

IMAP (CAPABILITY)

Forward Email

* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN ENABLE ID IDLE NAMESPACE QUOTA SASL-IR UNSELECT XLIST XAPPLEPUSHSERVICE

Gmail

* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE

iCloud

* OK [CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2]

Outlook.com

* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+

Fastmail

* CAPABILITY IMAP4rev1 ACL ANNOTATE-EXPERIMENT-1 CATENATE CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGINDISABLED MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN X-RENAME XLIST

Yahoo/AOL (Verizon)

* CAPABILITY IMAP4rev1 IDLE NAMESPACE QUOTA ID XLIST CHILDREN UIDPLUS MOVE CONDSTORE ESEARCH ENABLE LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE UNSELECT XAPPLEPUSHSERVICE

POP3 (CAPA)

Forward Email

+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION ForwardEmail
.

Gmail

+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Gpop
.

Outlook.com

+OK
CAPA
TOP
USER
UIDL
SASL PLAIN XOAUTH2
.

Fastmail

+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Cyrus
.

SMTP (EHLO)

Forward Email

250-smtp.forwardemail.net
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING

Gmail

250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8

Outlook.com

250-SN4PR13CA0005.outlook.office365.com Hello [x.x.x.x]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8

Fastmail

250-smtp.fastmail.com
250-PIPELINING
250-SIZE 78643200
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING

Yahoo/AOL (Verizon)

250-smtp.mail.yahoo.com
250-PIPELINING
250-SIZE 41943040
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-STARTTLS

詳細なテスト結果

IMAP テスト結果

Gmail: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER

Outlook.com: * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+

iCloud: * CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2

Fastmail: 接続がタイムアウトしました。以下の注記を参照してください。

Yahoo: * CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN UNSELECT X-MSG-EXT OBJECTID IDLE ENABLE UIDONLY X-ALL-MAIL X-UIDONLY LIST-EXTENDED LIST-STATUS SPECIAL-USE PARTIAL APPENDLIMIT=41697280

Forward Email: * CAPABILITY XAPPLEPUSHSERVICE IMAP4rev1 APPENDLIMIT=52428800 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN CONDSTORE ENABLE ID IDLE MOVE NAMESPACE QUOTA SASL-IR SPECIAL-USE UIDPLUS UNSELECT UTF8=ACCEPT XLIST

POP3 テスト結果

Gmail: 認証なしではCAPAレスポンスが返されませんでした。

Outlook.com: 認証なしではCAPAレスポンスが返されませんでした。

iCloud: サポートされていません。

Fastmail: 接続がタイムアウトしました。以下の注記を参照してください。

Yahoo: +OK CAPA list follows... SASL PLAIN XOAUTH2

Forward Email: 認証なしではCAPAレスポンスが返されませんでした。

SMTP テスト結果

Gmail: 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH

Outlook.com: 250-DSN

iCloud: 250-DSN

Fastmail: 250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER

Yahoo: 250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER

Forward Email: 250-DSN, 250-REQUIRETLS

テスト結果に関する注記

Note

テスト結果からの重要な観察事項と制限事項。

  1. Fastmailのタイムアウト: Fastmailへの接続はテスト中にタイムアウトしました。これはテストサーバーのIPによるレート制限やファイアウォール制限が原因と考えられます。Fastmailはドキュメントに基づき、IMAP/POP3/SMTPのサポートが堅牢であることが知られています。

  2. POP3のCAPAレスポンス: 複数のプロバイダー(Gmail、Outlook.com、Forward Email)は認証なしではCAPAレスポンスを返しませんでした。これはPOP3サーバーの一般的なセキュリティ対策です。

  3. DSNサポート: Outlook.com、iCloud、Forward EmailのみがSMTP EHLOレスポンスで明示的にDSNサポートを広告しています。他のプロバイダーがDSNをサポートしていないわけではありませんが、広告はしていません。

  4. REQUIRETLS: Forward Emailのみがユーザー向けのチェックボックスでTLSの強制を広告しています。他のプロバイダーは内部的にサポートしている可能性がありますが、EHLOで広告はしていません。

  5. テスト環境: テストは2026年1月22日 02:37 UTCにAWS EC2インスタンス(IPv4: 54.167.216.197、IPv6: 2600:4040:46da:9a00:b19e:3ad4:426c:2f48)から実施されました。


サマリー

Forward Emailは主要なメール標準において包括的なRFCプロトコルサポートを提供しています:

  • IMAP4rev1: 16のサポートRFCと意図的な差異のドキュメント
  • POP3: 4つのサポートRFCとRFC準拠の恒久的削除
  • SMTP: SMTPUTF8、DSN、PIPELININGを含む11の拡張サポート
  • 認証: DKIM、SPF、DMARC、ARCを完全サポート
  • トランスポートセキュリティ: MTA-STSとREQUIRETLSを完全サポート、DANEは部分サポート
  • 暗号化: OpenPGP v6とS/MIMEをサポート
  • カレンダー: CalDAV、CardDAV、VTODOを完全サポート
  • APIアクセス: 39のエンドポイントを持つ完全なREST APIで直接データベースアクセス可能
  • iOSプッシュ: XAPPLEPUSHSERVICEによるメール、連絡先、カレンダーのネイティブプッシュ通知

主要な差別化ポイント

Tip

Forward Emailは他のプロバイダーにはないユニークな機能で際立っています。

Forward Emailのユニークな特徴:

  1. 量子耐性暗号化 - ChaCha20-Poly1305で暗号化されたSQLiteメールボックスを提供する唯一のプロバイダー
  2. ゼロナレッジアーキテクチャ - パスワードがメールボックスを暗号化し、当社は復号できません
  3. 無料のカスタムドメイン - カスタムドメインメールに月額料金なし
  4. REQUIRETLSサポート - 配信経路全体でTLSを強制するユーザー向けチェックボックス
  5. 包括的なAPI - 39のREST APIエンドポイントによる完全なプログラム制御
  6. iOSプッシュ通知 - 即時配信のためのネイティブXAPPLEPUSHSERVICEサポート
  7. オープンソース - GitHubで完全なソースコードを公開
  8. プライバシー重視 - データマイニングなし、広告なし、トラッキングなし
  • サンドボックス化された暗号化: 個別に暗号化されたSQLiteメールボックスを持つ唯一のメールサービス
  • RFC準拠: 使いやすさよりも標準準拠を優先(例:POP3 DELE)
  • 完全なAPI: すべてのメールデータへの直接プログラムアクセス
  • オープンソース: 完全に透明な実装

プロトコルサポート概要:

カテゴリ サポートレベル 詳細
コアプロトコル ✅ 優秀 IMAP4rev1、POP3、SMTPを完全サポート
最新プロトコル ⚠️ 部分的 IMAP4rev2部分サポート、JMAPは未対応
セキュリティ ✅ 優秀 DKIM、SPF、DMARC、ARC、MTA-STS、REQUIRETLS
暗号化 ✅ 優秀 OpenPGP、S/MIME、SQLite暗号化
CalDAV/CardDAV ✅ 優秀 カレンダーおよび連絡先の完全同期
フィルタリング ✅ 優秀 Sieve(24拡張)およびManageSieve
API ✅ 優秀 39のREST APIエンドポイント
プッシュ ✅ 優秀 ネイティブiOSプッシュ通知