Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

設定リファレンス

このページはすべてのPRX-Email設定オプション、環境変数、ランタイム設定の完全リファレンスです。

トランスポート設定

EmailTransportConfig構造体はIMAPとSMTP接続の両方を設定します:

rust
use prx_email::plugin::{
    EmailTransportConfig, ImapConfig, SmtpConfig, AuthConfig,
    AttachmentPolicy, AttachmentStoreConfig,
};

let config = EmailTransportConfig {
    imap: ImapConfig { /* ... */ },
    smtp: SmtpConfig { /* ... */ },
    attachment_store: Some(AttachmentStoreConfig { /* ... */ }),
    attachment_policy: AttachmentPolicy::default(),
};

IMAP設定

フィールドタイプデフォルト説明
imap.hostString(必須)IMAPサーバーホスト名
imap.portu16(必須)IMAPサーバーポート(通常993)
imap.userString(必須)IMAPユーザー名
imap.auth.passwordOption<String>NoneLOGINアーカイブのパスワード
imap.auth.oauth_tokenOption<String>NoneXOAUTH2のOAuthトークン

SMTP設定

フィールドタイプデフォルト説明
smtp.hostString(必須)SMTPサーバーホスト名
smtp.portu16(必須)SMTPサーバーポート(465または587)
smtp.userString(必須)SMTPユーザー名
smtp.auth.passwordOption<String>NonePLAIN/LOGINのパスワード
smtp.auth.oauth_tokenOption<String>NoneXOAUTH2のOAuthトークン

検証ルール

  • imap.hostsmtp.hostは空であってはならない
  • imap.usersmtp.userは空であってはならない
  • 各プロトコルでpasswordまたはoauth_tokenのいずれか一方のみを設定する必要がある
  • attachment_policy.max_size_bytesは0より大きくなければならない
  • attachment_policy.allowed_content_typesは空であってはならない

ストレージ設定

StoreConfig

フィールドタイプデフォルト説明
enable_walbooltrueWALジャーナルモードを有効化
busy_timeout_msu645000SQLiteのビジータイムアウト(ミリ秒)
wal_autocheckpoint_pagesi641000自動チェックポイント間のページ数
synchronousSynchronousModeNormal同期モード:FullNormalOff

適用されるSQLiteプラグマ

sql
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;        -- when enable_wal = true
PRAGMA synchronous = NORMAL;      -- matches synchronous setting
PRAGMA wal_autocheckpoint = 1000; -- matches wal_autocheckpoint_pages

添付ファイルポリシー

AttachmentPolicy

フィールドタイプデフォルト説明
max_size_bytesusize26,214,400(25 MiB)最大添付ファイルサイズ
allowed_content_typesHashSet<String>以下を参照許可されたMIMEタイプ

デフォルトで許可されるMIMEタイプ

MIMEタイプ説明
application/pdfPDFドキュメント
image/jpegJPEG画像
image/pngPNG画像
text/plainプレーンテキストファイル
application/zipZIPアーカイブ

AttachmentStoreConfig

フィールドタイプデフォルト説明
enabledbool(必須)添付ファイルの永続化を有効化
dirString(必須)保存された添付ファイルのルートディレクトリ

パス安全性

添付ファイルのパスはディレクトリトラバーサル攻撃に対して検証されます。設定されたdirルート外で解決されるパス(シンボリックリンクベースのエスケープを含む)はすべて拒否されます。

同期ランナー設定

SyncRunnerConfig

フィールドタイプデフォルト説明
max_concurrencyusize4ランナーティックごとの最大ジョブ数
base_backoff_secondsi6410失敗時の初期バックオフ
max_backoff_secondsi64300最大バックオフ(5分)

環境変数

OAuthトークン管理

変数説明
{PREFIX}_IMAP_OAUTH_TOKENIMAPのOAuthアクセストークン
{PREFIX}_SMTP_OAUTH_TOKENSMTPのOAuthアクセストークン
{PREFIX}_IMAP_OAUTH_EXPIRES_ATIMAPトークンの期限切れ(Unix秒)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATSMTPトークンの期限切れ(Unix秒)

デフォルトのプレフィックスはPRX_EMAILです。ランタイムでこれらを読み込むにはreload_auth_from_env("PRX_EMAIL")を使用します。

WASMプラグイン

変数デフォルト説明
PRX_EMAIL_ENABLE_REAL_NETWORK未設定(無効)WASMコンテキストから実際のIMAP/SMTPを有効にするには1に設定

API制限

制限説明
一覧/検索の最小制限1最小limitパラメータ
一覧/検索の最大制限500最大limitパラメータ
デバッグメッセージの切り捨て160文字プロバイダのデバッグメッセージは切り捨てられる
メッセージスニペット長120文字自動生成されるメッセージスニペット

エラーコード

コード説明
Validation入力検証失敗(空フィールド、範囲外の制限、不明なフィーチャー)
FeatureDisabledフィーチャーフラグによりブロックされた操作
NetworkIMAP/SMTP接続またはプロトコルエラー
Providerメールプロバイダが操作を拒否
StorageSQLiteデータベースエラー

アウトボックス定数

定数説明
バックオフのベース5秒初期リトライバックオフ
バックオフの計算式5 * 2^retries指数増加
最大リトライ無制限バックオフの増加でキャップ
べき等性キーoutbox-{id}-{retries}決定論的なMessage-ID

フィーチャーフラグ

フラグ説明リスクレベル
inbox_readメッセージの一覧表示と取得
inbox_searchクエリでメッセージを検索
email_send新しいメールを送信
email_reply既存のメールに返信
outbox_retry失敗したアウトボックスメッセージをリトライ

ロギング

PRX-Emailは以下の形式で構造化ログをstderrに出力します:

[prx_email][structured] {"event":"...","account":...,"folder":...,"message_id":...,"run_id":...,"error_code":...}
[prx_email][debug] context | details

セキュリティ

  • OAuthトークン、パスワード、APIキーはログに記録されない
  • メールアドレスはデバッグログで削除される(例:a***@example.com
  • プロバイダのデバッグメッセージはサニタイズされる:認証ヘッダーが削除され、出力は160文字に切り捨てられる

次のステップ

Released under the Apache-2.0 License.