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

インストール

PRX-EmailはRustライブラリ依存関係として使用するか、スタンドアロン使用のためにソースからビルドするか、PRXランタイム用のWASMプラグインとしてコンパイルできます。

推奨

ほとんどのユーザーにとって、PRX-EmailをCargo依存関係として追加することがRustプロジェクトにメール機能を統合する最も速い方法です。

前提条件

要件最小備考
Rust1.85.0 (2024 edition)すべてのインストール方法に必要
Git2.30+リポジトリをクローンするため
SQLitebundledrusqlite bundledフィーチャーで含まれる。システムSQLiteは不要
wasm32-wasip1ターゲットlatestWASMプラグインのコンパイルにのみ必要

方法1:Cargo依存関係(推奨)

プロジェクトのCargo.tomlにPRX-Emailを追加します:

toml
[dependencies]
prx_email = { git = "https://github.com/openprx/prx_email.git" }

これはライブラリとすべての依存関係(rusqlite(bundled SQLite)、imaplettremail-parser)を取得します。

ビルド依存関係

rusqlite bundledフィーチャーはCソースからSQLiteをコンパイルします。Debian/Ubuntuでは以下が必要な場合があります:

bash
sudo apt install -y build-essential pkg-config

macOSではXcode Command Line Toolsが必要です:

bash
xcode-select --install

方法2:ソースからビルド

リポジトリをクローンしてリリースモードでビルドします:

bash
git clone https://github.com/openprx/prx_email.git
cd prx_email
cargo build --release

すべてが動作することを確認するためにテストスイートを実行します:

bash
cargo test

lint検証のためにclippyを実行します:

bash
cargo clippy -- -D warnings

方法3:WASMプラグイン

WASMプラグインにより、PRX-EmailはPRXランタイム内でサンドボックス化されたWebAssemblyモジュールとして実行できます。プラグインはWIT(WebAssembly Interface Types)を使用してホスト呼び出しインターフェースを定義します。

WASMプラグインをビルドする

bash
cd prx_email

# Add the WASM target
rustup target add wasm32-wasip1

# Build the plugin
cd wasm-plugin
cargo build --release --target wasm32-wasip1

コンパイルされたプラグインはwasm-plugin/target/wasm32-wasip1/release/prx_email_plugin.wasmにあります。

または、ビルドスクリプトを使用します:

bash
chmod +x scripts/build_wasm_plugin.sh
./scripts/build_wasm_plugin.sh

プラグイン設定

WASMプラグインにはwasm-plugin/ディレクトリにプラグインメタデータと機能を定義するplugin.tomlマニフェストが含まれています。

ネットワーク安全スイッチ

デフォルトでは、WASMプラグインは実際のネットワーク操作が無効な状態で実行されます。WASMコンテキストから実際のIMAP/SMTP接続を有効にするには:

bash
export PRX_EMAIL_ENABLE_REAL_NETWORK=1

無効な場合、ネットワーク依存の操作(email.syncemail.sendemail.reply)はガードヒント付きの制御されたエラーを返します。これはサンドボックス化されたプラグインからの意図しないネットワークアクセスを防ぐための安全措置です。

依存関係

PRX-Emailは以下の主要な依存関係を使用します:

クレートバージョン目的
rusqlite0.31bundled Cコンパイルを持つSQLiteデータベース
imap2.4受信トレイ同期用IMAPクライアント
lettre0.11メール送信用SMTPクライアント
mail-parser0.10MIMEメッセージパース
rustls0.23IMAP接続用TLS
rustls-connector0.20TLSストリームラッパー
serde / serde_json1.0モデルとAPIレスポンスのシリアライゼーション
sha20.10フォールバックメッセージIDのためのSHA-256
base640.22添付ファイルのBase64エンコード
thiserror1.0エラー型の導出

すべてのTLS接続はrustls(Pure Rust)を使用します。OpenSSLの依存関係なし。

インストールの確認

ビルド後、ライブラリがコンパイルされてテストが通ることを確認します:

bash
cargo check
cargo test

期待される出力:

running 7 tests
test plugin::email_plugin::tests::parse_mime_extracts_text_html_and_attachments ... ok
test plugin::email_plugin::tests::references_chain_appends_parent_message_id ... ok
test plugin::email_plugin::tests::reply_sets_in_reply_to_header_on_outbox ... ok
test plugin::email_plugin::tests::parse_mime_fallback_message_id_is_stable_and_unique ... ok
test plugin::email_plugin::tests::list_search_reject_out_of_range_limit ... ok
test plugin::email_plugin::tests::run_sync_runner_respects_max_concurrency_cap ... ok
test plugin::email_plugin::tests::reload_auth_from_env_updates_tokens ... ok

test result: ok. 7 passed; 0 failed; 0 ignored

次のステップ

Released under the Apache-2.0 License.