Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Konfigurationsreferenz

Diese Seite ist die vollständige Referenz für alle PRX-Email-Konfigurationsoptionen, Umgebungsvariablen und Laufzeiteinstellungen.

Transport-Konfiguration

Das EmailTransportConfig-Struct konfiguriert sowohl IMAP- als auch SMTP-Verbindungen:

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-Einstellungen

FeldTypStandardBeschreibung
imap.hostString(erforderlich)IMAP-Server-Hostname
imap.portu16(erforderlich)IMAP-Server-Port (typischerweise 993)
imap.userString(erforderlich)IMAP-Benutzername
imap.auth.passwordOption<String>NonePasswort für LOGIN-Auth
imap.auth.oauth_tokenOption<String>NoneOAuth-Token für XOAUTH2

SMTP-Einstellungen

FeldTypStandardBeschreibung
smtp.hostString(erforderlich)SMTP-Server-Hostname
smtp.portu16(erforderlich)SMTP-Server-Port (465 oder 587)
smtp.userString(erforderlich)SMTP-Benutzername
smtp.auth.passwordOption<String>NonePasswort für PLAIN/LOGIN
smtp.auth.oauth_tokenOption<String>NoneOAuth-Token für XOAUTH2

Validierungsregeln

  • imap.host und smtp.host dürfen nicht leer sein
  • imap.user und smtp.user dürfen nicht leer sein
  • Genau eines von password oder oauth_token muss für jedes Protokoll gesetzt sein
  • attachment_policy.max_size_bytes muss größer als 0 sein
  • attachment_policy.allowed_content_types darf nicht leer sein

Speicher-Konfiguration

StoreConfig

FeldTypStandardBeschreibung
enable_walbooltrueWAL-Journal-Modus aktivieren
busy_timeout_msu645000SQLite Busy-Timeout in Millisekunden
wal_autocheckpoint_pagesi641000Seiten zwischen automatischen Prüfpunkten
synchronousSynchronousModeNormalSync-Modus: Full, Normal oder Off

Angewendete SQLite-Pragmas

sql
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;        -- wenn enable_wal = true
PRAGMA synchronous = NORMAL;      -- entspricht synchronous-Einstellung
PRAGMA wal_autocheckpoint = 1000; -- entspricht wal_autocheckpoint_pages

Anhang-Richtlinie

AttachmentPolicy

FeldTypStandardBeschreibung
max_size_bytesusize26.214.400 (25 MiB)Maximale Anhangsgröße
allowed_content_typesHashSet<String>Siehe untenErlaubte MIME-Typen

Standard-erlaubte MIME-Typen

MIME-TypBeschreibung
application/pdfPDF-Dokumente
image/jpegJPEG-Bilder
image/pngPNG-Bilder
text/plainNur-Text-Dateien
application/zipZIP-Archive

AttachmentStoreConfig

FeldTypStandardBeschreibung
enabledbool(erforderlich)Anhang-Persistenz aktivieren
dirString(erforderlich)Wurzelverzeichnis für gespeicherte Anhänge

Pfadsicherheit

Anhangpfade werden gegen Directory-Traversal-Angriffe validiert. Jeder Pfad, der außerhalb des konfigurierten dir-Wurzels aufgelöst wird, wird abgelehnt, einschließlich symlink-basierter Ausbrüche.

Synchronisationsplaner-Konfiguration

SyncRunnerConfig

FeldTypStandardBeschreibung
max_concurrencyusize4Maximale Jobs pro Runner-Tick
base_backoff_secondsi6410Anfänglicher Backoff bei Fehler
max_backoff_secondsi64300Maximaler Backoff (5 Minuten)

Umgebungsvariablen

OAuth-Token-Management

VariableBeschreibung
{PREFIX}_IMAP_OAUTH_TOKENIMAP-OAuth-Zugriffstoken
{PREFIX}_SMTP_OAUTH_TOKENSMTP-OAuth-Zugriffstoken
{PREFIX}_IMAP_OAUTH_EXPIRES_ATIMAP-Token-Ablauf (Unix-Sekunden)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATSMTP-Token-Ablauf (Unix-Sekunden)

Das Standardpräfix ist PRX_EMAIL. reload_auth_from_env("PRX_EMAIL") verwenden, um diese zur Laufzeit zu laden.

WASM-Plugin

VariableStandardBeschreibung
PRX_EMAIL_ENABLE_REAL_NETWORKnicht gesetzt (deaktiviert)Auf 1 setzen, um echtes IMAP/SMTP aus dem WASM-Kontext zu aktivieren

API-Limits

LimitWertBeschreibung
List/search-Limit Minimum1Minimaler limit-Parameter
List/search-Limit Maximum500Maximaler limit-Parameter
Debug-Nachrichten-Kürzung160 ZeichenProvider-Debug-Nachrichten werden gekürzt
Nachrichten-Snippet-Länge120 ZeichenAutomatisch generierte Nachrichten-Snippets

Fehlercodes

CodeBeschreibung
ValidationEingabe-Validierungsfehler (leere Felder, außerhalb des Bereichs liegende Limits, unbekannte Features)
FeatureDisabledOperation durch Feature-Flag blockiert
NetworkIMAP/SMTP-Verbindungs- oder Protokollfehler
ProviderE-Mail-Provider hat die Operation abgelehnt
StorageSQLite-Datenbankfehler

Postausgangs-Konstanten

KonstanteWertBeschreibung
Backoff-Basis5 SekundenAnfänglicher Wiederholungs-Backoff
Backoff-Formel5 * 2^retriesExponentielles Wachstum
Max. WiederholungenUnbegrenztBegrenzt durch Backoff-Wachstum
Idempotenzschlüsseloutbox-{id}-{retries}Deterministische Message-ID

Feature-Flags

FlagBeschreibungRisikostufe
inbox_readNachrichten auflisten und abrufenNiedrig
inbox_searchNachrichten nach Abfrage durchsuchenNiedrig
email_sendNeue E-Mails sendenMittel
email_replyAuf vorhandene E-Mails antwortenMittel
outbox_retryFehlgeschlagene Postausgangs-Nachrichten erneut versuchenNiedrig

Protokollierung

PRX-Email gibt strukturierte Logs nach stderr aus im Format:

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

Sicherheit

  • OAuth-Token, Passwörter und API-Schlüssel werden niemals protokolliert
  • E-Mail-Adressen werden in Debug-Logs geschwärzt (z.B. a***@example.com)
  • Provider-Debug-Nachrichten werden bereinigt: Autorisierungs-Header werden geschwärzt und die Ausgabe auf 160 Zeichen gekürzt

Nächste Schritte

Released under the Apache-2.0 License.