Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Referencia de Configuración

Esta página es la referencia completa de todas las opciones de configuración, variables de entorno y ajustes de runtime de PRX-Email.

Configuración de Transporte

El struct EmailTransportConfig configura tanto las conexiones IMAP como 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(),
};

Ajustes IMAP

CampoTipoPredeterminadoDescripción
imap.hostString(requerido)Nombre de host del servidor IMAP
imap.portu16(requerido)Puerto del servidor IMAP (típicamente 993)
imap.userString(requerido)Nombre de usuario IMAP
imap.auth.passwordOption<String>NoneContraseña para auth LOGIN
imap.auth.oauth_tokenOption<String>NoneToken OAuth para XOAUTH2

Ajustes SMTP

CampoTipoPredeterminadoDescripción
smtp.hostString(requerido)Nombre de host del servidor SMTP
smtp.portu16(requerido)Puerto del servidor SMTP (465 o 587)
smtp.userString(requerido)Nombre de usuario SMTP
smtp.auth.passwordOption<String>NoneContraseña para PLAIN/LOGIN
smtp.auth.oauth_tokenOption<String>NoneToken OAuth para XOAUTH2

Reglas de Validación

  • imap.host y smtp.host no deben estar vacíos
  • imap.user y smtp.user no deben estar vacíos
  • Exactamente uno de password u oauth_token debe estar establecido para cada protocolo
  • attachment_policy.max_size_bytes debe ser mayor que 0
  • attachment_policy.allowed_content_types no debe estar vacío

Configuración de Almacenamiento

StoreConfig

CampoTipoPredeterminadoDescripción
enable_walbooltrueHabilitar modo de journal WAL
busy_timeout_msu645000Timeout de ocupado de SQLite en milisegundos
wal_autocheckpoint_pagesi641000Páginas entre puntos de control automáticos
synchronousSynchronousModeNormalModo de sincronización: Full, Normal o Off

Pragmas SQLite Aplicados

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

Política de Adjuntos

AttachmentPolicy

CampoTipoPredeterminadoDescripción
max_size_bytesusize26,214,400 (25 MiB)Tamaño máximo de adjunto
allowed_content_typesHashSet<String>Ver abajoTipos MIME permitidos

Tipos MIME Permitidos por Defecto

Tipo MIMEDescripción
application/pdfDocumentos PDF
image/jpegImágenes JPEG
image/pngImágenes PNG
text/plainArchivos de texto plano
application/zipArchivos ZIP

AttachmentStoreConfig

CampoTipoPredeterminadoDescripción
enabledbool(requerido)Habilitar persistencia de adjuntos
dirString(requerido)Directorio raíz para adjuntos almacenados

Seguridad de Rutas

Las rutas de adjuntos se validan contra ataques de traversal de directorios. Cualquier ruta que se resuelva fuera de la raíz dir configurada se rechaza, incluyendo escapes basados en symlinks.

Configuración del Runner de Sincronización

SyncRunnerConfig

CampoTipoPredeterminadoDescripción
max_concurrencyusize4Trabajos máximos por ciclo del runner
base_backoff_secondsi6410Retroceso inicial en fallo
max_backoff_secondsi64300Retroceso máximo (5 minutos)

Variables de Entorno

Gestión de Tokens OAuth

VariableDescripción
{PREFIX}_IMAP_OAUTH_TOKENToken de acceso OAuth IMAP
{PREFIX}_SMTP_OAUTH_TOKENToken de acceso OAuth SMTP
{PREFIX}_IMAP_OAUTH_EXPIRES_ATExpiración del token IMAP (segundos Unix)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATExpiración del token SMTP (segundos Unix)

El prefijo predeterminado es PRX_EMAIL. Usa reload_auth_from_env("PRX_EMAIL") para cargarlos en runtime.

Plugin WASM

VariablePredeterminadoDescripción
PRX_EMAIL_ENABLE_REAL_NETWORKsin establecer (deshabilitado)Establece en 1 para habilitar IMAP/SMTP real desde el contexto WASM

Límites de API

LímiteValorDescripción
Límite mínimo de list/search1Parámetro limit mínimo
Límite máximo de list/search500Parámetro limit máximo
Truncado de mensajes de debug160 caracteresLos mensajes de debug del proveedor se truncan
Longitud del snippet del mensaje120 caracteresSnippets de mensaje auto-generados

Códigos de Error

CódigoDescripción
ValidationFallo de validación de entrada (campos vacíos, límites fuera de rango, características desconocidas)
FeatureDisabledOperación bloqueada por indicador de característica
NetworkError de conexión o protocolo IMAP/SMTP
ProviderEl proveedor de email rechazó la operación
StorageError de base de datos SQLite

Constantes del Buzón de Salida

ConstanteValorDescripción
Base de retroceso5 segundosRetroceso de reintento inicial
Fórmula de retroceso5 * 2^retriesCrecimiento exponencial
Reintentos máximosSin límiteAcotado por el crecimiento del retroceso
Clave de idempotenciaoutbox-{id}-{retries}Message-ID determinista

Indicadores de Características

IndicadorDescripciónNivel de Riesgo
inbox_readListar y obtener mensajesBajo
inbox_searchBuscar mensajes por consultaBajo
email_sendEnviar nuevos emailsMedio
email_replyResponder a emails existentesMedio
outbox_retryReintentar mensajes fallidos del buzón de salidaBajo

Registro

PRX-Email genera logs estructurados a stderr en el formato:

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

Seguridad

  • Los tokens OAuth, contraseñas y claves de API nunca se registran
  • Las direcciones de email se redactan en los logs de debug (p. ej., a***@example.com)
  • Los mensajes de debug del proveedor se sanitizan: los encabezados de autorización se redactan y la salida se trunca a 160 caracteres

Siguientes Pasos

Released under the Apache-2.0 License.