メインコンテンツまでスキップ
バージョン: 0.3.1

Dicksでメールを扱う

@dicks/email@0.2.0 はDicks Language 0.3.1向けのCloudflare Email Serviceアダプターです。ソースは email。MIME、暗号検証、R2、プラットフォームイベントをJavaScriptへ置き、HTTPルーティング、SQL、所有者判定、再送ポリシーはDicksで書きます。本番設定は別操作で、インストールだけでは有効になりません。

必要な構成と移行​

対応する言語実装、@dicks/cloudflare@0.3.0、D1、非公開R2、送信元を限定したEMAIL bindingを使います。Workerにpostal-mime@4.0.11、html-to-text@10.0.1、jose@6.2.12を固定してインストールします。Dicksパッケージはnpmスクリプトやpeerの自動インストールを実行しません。既存アプリへの変更は不要です。導入時はcompiler/runtime/library/lockfileを同じソース組へ更新します。

createMailWorkerがfetch/email/scheduledをDicksへ渡します。inboundとscheduledは信頼したライフサイクル情報で区別し、HTTPメソッド名を真似ても権限は得られません。実行はserverプロファイルを選び、email.inbound/email.send/storage/crypto/networkのeffectも明示します。

受信・送信・認証​

readはMIMEを解析し、persistは原本をR2へ保存します。ストリーム一時エラーと解析不能な恒久エラーを区別できます。アプリは原本とDB保存を確認するまで受信をackしないでください。HTMLは文字に変換し、画像・scriptを表示しません。最大20MiB、128 parts、深さ32、合計header256KiB。表示本文はUTF-8境界の65536bytesまでで、truncatedと原本ダウンロードを用意します。

sendはプロバイダーを一度だけ呼び、受け付けたmessageId、確実なrejected、結果不明のunknownを区別します。messageIdは配信完了や受信箱到着の保証ではありません。DBのatomic claim、本文hash、安定した操作IDで二重実行を防ぎ、unknownは自動再送しないでください。画面を閉じた時には既に送信済みの場合があります。

verifyAccessはRS256、issuer、audience、exp、iat、subを検証します。その後にアプリが許可する所有者emailを厳密に比較します。有効なトークンだけを理由に他人へメールを公開しないでください。

検証範囲と制約​

Dicks Mailは実際のローカルD1/R2とコンパイルしたDicksで、同時送信一回、同一IDの変更拒否、unknown/rejectedの再送防止、重複受信、添付の強制ダウンロード、JWT/Origin、長い日本語、サイズ/parts上限、画面の下書き保存・送信を検証しています。自動試験の送信プロバイダーは合成した試験用です。加えて2026-10-19 UTCに、本番Dicks MailでWorkspace限定ログイン・送信受付・受信保存を確認しました。対象のアプリソースは 6e71969 です。配送先の受信箱分類や認証ヘッダーの実確認は含みません。

Cloudflareは非空の本文を要求します。件名だけのメールではアプリが送信時にCRLFを渡し、下書きには空本文を保持できます。拒否・結果不明のメールを自動再送せず、新しい操作IDでの再送を利用者が判断します。

IMAP/SMTPサーバー、連絡先・カレンダー同期、送信添付アップロード、自動spam判定、ウイルス検査、配信結果照合は未実装です。SPF/DKIM/DMARCとドメイン評価を整えても迷惑メール入りを完全には防げません。本番メール、DNS、Access、課金は対象を確認してから有効化します。ホスト一覧と境界は 固定したライブラリの説明 に記載しています。