Skip to content
Cette page a été générée et traduite avec l'aide de l'IA. Si vous remarquez des inexactitudes, n'hésitez pas à contribuer. Modifier sur GitHub

Référence de configuration

Cette page est la référence complète de toutes les options de configuration, variables d'environnement et paramètres runtime de PRX-Email.

Configuration du transport

La struct EmailTransportConfig configure les connexions IMAP et 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(),
};

Paramètres IMAP

ChampTypeDéfautDescription
imap.hostString(requis)Nom d'hôte du serveur IMAP
imap.portu16(requis)Port du serveur IMAP (typiquement 993)
imap.userString(requis)Nom d'utilisateur IMAP
imap.auth.passwordOption<String>NoneMot de passe pour l'auth LOGIN
imap.auth.oauth_tokenOption<String>NoneJeton OAuth pour XOAUTH2

Paramètres SMTP

ChampTypeDéfautDescription
smtp.hostString(requis)Nom d'hôte du serveur SMTP
smtp.portu16(requis)Port du serveur SMTP (465 ou 587)
smtp.userString(requis)Nom d'utilisateur SMTP
smtp.auth.passwordOption<String>NoneMot de passe pour PLAIN/LOGIN
smtp.auth.oauth_tokenOption<String>NoneJeton OAuth pour XOAUTH2

Règles de validation

  • imap.host et smtp.host ne doivent pas être vides
  • imap.user et smtp.user ne doivent pas être vides
  • Exactement l'un de password ou oauth_token doit être défini pour chaque protocole
  • attachment_policy.max_size_bytes doit être supérieur à 0
  • attachment_policy.allowed_content_types ne doit pas être vide

Configuration du stockage

StoreConfig

ChampTypeDéfautDescription
enable_walbooltrueActiver le mode journal WAL
busy_timeout_msu645000Délai d'expiration d'occupation SQLite en millisecondes
wal_autocheckpoint_pagesi641000Pages entre les checkpoints automatiques
synchronousSynchronousModeNormalMode de sync : Full, Normal ou Off

Pragmas SQLite appliqués

sql
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;        -- quand enable_wal = true
PRAGMA synchronous = NORMAL;      -- correspond au paramètre synchronous
PRAGMA wal_autocheckpoint = 1000; -- correspond à wal_autocheckpoint_pages

Politique des pièces jointes

AttachmentPolicy

ChampTypeDéfautDescription
max_size_bytesusize26 214 400 (25 MiO)Taille maximale des pièces jointes
allowed_content_typesHashSet<String>Voir ci-dessousTypes MIME autorisés

Types MIME autorisés par défaut

Type MIMEDescription
application/pdfDocuments PDF
image/jpegImages JPEG
image/pngImages PNG
text/plainFichiers texte brut
application/zipArchives ZIP

AttachmentStoreConfig

ChampTypeDéfautDescription
enabledbool(requis)Activer la persistance des pièces jointes
dirString(requis)Répertoire racine pour les pièces jointes stockées

Sécurité des chemins

Les chemins de pièces jointes sont validés contre les attaques de traversée de répertoire. Tout chemin se résolvant hors de la racine dir configurée est rejeté, y compris les échappements basés sur les liens symboliques.

Configuration du Sync Runner

SyncRunnerConfig

ChampTypeDéfautDescription
max_concurrencyusize4Nombre maximum de tâches par tick du runner
base_backoff_secondsi6410Backoff initial en cas d'échec
max_backoff_secondsi64300Backoff maximum (5 minutes)

Variables d'environnement

Gestion des jetons OAuth

VariableDescription
{PREFIX}_IMAP_OAUTH_TOKENJeton d'accès OAuth IMAP
{PREFIX}_SMTP_OAUTH_TOKENJeton d'accès OAuth SMTP
{PREFIX}_IMAP_OAUTH_EXPIRES_ATExpiration du jeton IMAP (secondes Unix)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATExpiration du jeton SMTP (secondes Unix)

Le préfixe par défaut est PRX_EMAIL. Utilisez reload_auth_from_env("PRX_EMAIL") pour charger ces variables au runtime.

Plugin WASM

VariableDéfautDescription
PRX_EMAIL_ENABLE_REAL_NETWORKnon défini (désactivé)Définir à 1 pour activer IMAP/SMTP réels depuis le contexte WASM

Limites de l'API

LimiteValeurDescription
Limite min de list/search1Paramètre limit minimum
Limite max de list/search500Paramètre limit maximum
Troncature des messages de débogage160 caractèresLes messages de débogage du fournisseur sont tronqués
Longueur des extraits de message120 caractèresExtraits de message auto-générés

Codes d'erreur

CodeDescription
ValidationÉchec de validation des entrées (champs vides, limites hors plage, fonctionnalités inconnues)
FeatureDisabledOpération bloquée par un flag de fonctionnalité
NetworkErreur de connexion ou de protocole IMAP/SMTP
ProviderLe fournisseur email a rejeté l'opération
StorageErreur de base de données SQLite

Constantes de la boîte d'envoi

ConstanteValeurDescription
Backoff de base5 secondesBackoff initial avant nouvelle tentative
Formule de backoff5 * 2^retriesCroissance exponentielle
Nouvelles tentatives maxNon bornéLimité par la croissance du backoff
Clé d'idempotenceoutbox-{id}-{retries}Message-ID déterministe

Flags de fonctionnalité

FlagDescriptionNiveau de risque
inbox_readLister et obtenir les messagesFaible
inbox_searchRechercher les messages par requêteFaible
email_sendEnvoyer de nouveaux emailsMoyen
email_replyRépondre aux emails existantsMoyen
outbox_retryRelancer les messages de boîte d'envoi échouésFaible

Journalisation

PRX-Email écrit les journaux structurés vers stderr au format :

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

Sécurité

  • Les jetons OAuth, mots de passe et clés API ne sont jamais journalisés
  • Les adresses email sont redactées dans les journaux de débogage (ex. a***@example.com)
  • Les messages de débogage du fournisseur sont assainis : les en-têtes d'autorisation sont redactés et la sortie est tronquée à 160 caractères

Étapes suivantes

Released under the Apache-2.0 License.