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 不可为空
  • 每个协议必须且只能设置 passwordoauth_token 之一
  • attachment_policy.max_size_bytes 必须大于 0
  • attachment_policy.allowed_content_types 不可为空

存储配置

StoreConfig

字段类型默认值说明
enable_walbooltrue启用 WAL 日志模式
busy_timeout_msu645000SQLite 忙等待超时(毫秒)
wal_autocheckpoint_pagesi641000自动检查点间隔页数
synchronousSynchronousModeNormal同步模式:FullNormalOff

附件策略

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未设置(禁用)设置为 1 启用 WASM 上下文中的真实 IMAP/SMTP

API 限制

限制说明
列表/搜索最小 limit1limit 参数最小值
列表/搜索最大 limit500limit 参数最大值
调试消息截断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.