Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на 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>NoneПароль для аутентификации LOGIN
imap.auth.oauth_tokenOption<String>NoneOAuth-токен для XOAUTH2

Настройки SMTP

ПолеТипПо умолчаниюОписание
smtp.hostString(обязательно)Имя хоста SMTP-сервера
smtp.portu16(обязательно)Порт SMTP-сервера (465 или 587)
smtp.userString(обязательно)SMTP-пользователь
smtp.auth.passwordOption<String>NoneПароль для PLAIN/LOGIN
smtp.auth.oauth_tokenOption<String>NoneOAuth-токен для XOAUTH2

Правила валидации

  • imap.host и smtp.host не должны быть пустыми
  • imap.user и smtp.user не должны быть пустыми
  • Должно быть установлено ровно одно из password или oauth_token для каждого протокола
  • attachment_policy.max_size_bytes должен быть больше 0
  • attachment_policy.allowed_content_types не должен быть пустым

Конфигурация хранения

StoreConfig

ПолеТипПо умолчаниюОписание
enable_walbooltrueВключить режим журнала WAL
busy_timeout_msu645000SQLite busy timeout в миллисекундах
wal_autocheckpoint_pagesi641000Страниц между автоматическими чекпойнтами
synchronousSynchronousModeNormalРежим синхронности: Full, Normal или Off

Применяемые 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 МиБ)Максимальный размер вложения
allowed_content_typesHashSet<String>см. нижеРазрешённые MIME-типы

MIME-типы по умолчанию

MIME-типОписание
application/pdfPDF-документы
image/jpegJPEG-изображения
image/pngPNG-изображения
text/plainОбычные текстовые файлы
application/zipZIP-архивы

AttachmentStoreConfig

ПолеТипПо умолчаниюОписание
enabledbool(обязательно)Включить персистентность вложений
dirString(обязательно)Корневая директория для хранимых вложений

Безопасность путей

Пути вложений проверяются на атаки обхода директорий. Любой путь, разрешающийся за пределами настроенного корня dir, отклоняется, включая обходы через симлинки.

Конфигурация sync runner

SyncRunnerConfig

ПолеТипПо умолчаниюОписание
max_concurrencyusize4Максимальное количество задач на тик планировщика
base_backoff_secondsi6410Начальный backoff при ошибке
max_backoff_secondsi64300Максимальный backoff (5 минут)

Переменные окружения

Управление OAuth-токенами

ПеременнаяОписание
{PREFIX}_IMAP_OAUTH_TOKENIMAP OAuth-токен доступа
{PREFIX}_SMTP_OAUTH_TOKENSMTP OAuth-токен доступа
{PREFIX}_IMAP_OAUTH_EXPIRES_ATИстечение IMAP-токена (Unix-секунды)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATИстечение SMTP-токена (Unix-секунды)

Префикс по умолчанию — PRX_EMAIL. Используйте reload_auth_from_env("PRX_EMAIL") для загрузки во время выполнения.

WASM-плагин

ПеременнаяПо умолчаниюОписание
PRX_EMAIL_ENABLE_REAL_NETWORKне установлено (отключено)Установите в 1 для включения реальных IMAP/SMTP из WASM-контекста

Лимиты API

ЛимитЗначениеОписание
Минимум limit для list/search1Минимальный параметр limit
Максимум limit для list/search500Максимальный параметр limit
Усечение отладочных сообщений160 символовОтладочные сообщения провайдера усекаются
Длина сниппета сообщения120 символовАвтогенерируемые сниппеты сообщений

Коды ошибок

КодОписание
ValidationОшибка валидации ввода (пустые поля, вышедшие за диапазон лимиты, неизвестные функции)
FeatureDisabledОперация заблокирована флагом функции
NetworkОшибка подключения или протокола IMAP/SMTP
ProviderПровайдер электронной почты отклонил операцию
StorageОшибка SQLite-базы данных

Константы outbox

КонстантаЗначениеОписание
Базовый backoff5 секундНачальный backoff повтора
Формула backoff5 * 2^retriesЭкспоненциальный рост
Максимум повторовНеограниченОграничен ростом backoff
Ключ идемпотентностиoutbox-{id}-{retries}Детерминированный Message-ID

Флаги функций

ФлагОписаниеУровень риска
inbox_readСписок и получение сообщенийНизкий
inbox_searchПоиск сообщений по запросуНизкий
email_sendОтправка новых писемСредний
email_replyОтвет на существующие письмаСредний
outbox_retryПовтор неудачных outbox-сообщенийНизкий

Логирование

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.