Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

კონფიგურაციის ცნობარი

ეს გვერდი PRX-Email-ის ყველა კონფიგურაციის პარამეტრის, გარემოს ცვლადის და runtime პარამეტრის სრული ცნობარია.

ტრანსპორტის კონფიგურაცია

EmailTransportConfig struct-ი 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 სერვერის hostname
imap.portu16(სავალდებულო)IMAP სერვერის პორტი (ჩვეულებრივ 993)
imap.userString(სავალდებულო)IMAP მომხმარებელი
imap.auth.passwordOption<String>NoneLOGIN ავთენტიფიკაციისთვის პაროლი
imap.auth.oauth_tokenOption<String>NoneXOAUTH2-ისთვის OAuth token

SMTP პარამეტრები

ველიტიპინაგულისხმევიაღწერა
smtp.hostString(სავალდებულო)SMTP სერვერის hostname
smtp.portu16(სავალდებულო)SMTP სერვერის პორტი (465 ან 587)
smtp.userString(სავალდებულო)SMTP მომხმარებელი
smtp.auth.passwordOption<String>NonePLAIN/LOGIN-ისთვის პაროლი
smtp.auth.oauth_tokenOption<String>NoneXOAUTH2-ისთვის OAuth token

ვალიდაციის წესები

  • imap.host და smtp.host ცარიელი არ უნდა იყოს
  • imap.user და smtp.user ცარიელი არ უნდა იყოს
  • ყოველი პროტოკოლისთვის ზუსტად ერთი password ან oauth_token უნდა იყოს დაყენებული
  • attachment_policy.max_size_bytes 0-ზე მეტი უნდა იყოს
  • attachment_policy.allowed_content_types ცარიელი არ უნდა იყოს

შენახვის კონფიგურაცია

StoreConfig

ველიტიპინაგულისხმევიაღწერა
enable_walbooltrueWAL journal რეჟიმის ჩართვა
busy_timeout_msu645000SQLite busy timeout მილიწამებში
wal_autocheckpoint_pagesi641000ავტომატური checkpoint-ებს შორის გვერდები
synchronousSynchronousModeNormalსინქ რეჟიმი: Full, Normal ან Off

SQLite Pragmas-ების გამოყენება

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

დანართის Policy

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(სავალდებულო)დანართის persistence-ის ჩართვა
dirString(სავალდებულო)შენახული დანართების root დირექტორია

Path უსაფრთხოება

დანართის path-ები directory traversal შეტევების მიმართ ვალიდაციას გადიან. კონფიგურირებული dir root-ის გარეთ გადამისამართებული ნებისმიერი path, სიმლინკ-ზე დაფუძნებული escape-ების ჩათვლით, უარყოფილია.

Sync Runner კონფიგურაცია

SyncRunnerConfig

ველიტიპინაგულისხმევიაღწერა
max_concurrencyusize4runner tick-ზე მაქსიმალური ამოცანები
base_backoff_secondsi6410საწყისი backoff წარუმატებლობისას
max_backoff_secondsi64300მაქსიმალური backoff (5 წუთი)

გარემოს ცვლადები

OAuth Token-ის მართვა

ცვლადიაღწერა
{PREFIX}_IMAP_OAUTH_TOKENIMAP OAuth access token
{PREFIX}_SMTP_OAUTH_TOKENSMTP OAuth access token
{PREFIX}_IMAP_OAUTH_EXPIRES_ATIMAP token-ის ვადის გასვლა (Unix წამები)
{PREFIX}_SMTP_OAUTH_EXPIRES_ATSMTP token-ის ვადის გასვლა (Unix წამები)

ნაგულისხმევი პრეფიქსია PRX_EMAIL. ამ runtime-ში ჩასატვირთად გამოიყენეთ reload_auth_from_env("PRX_EMAIL").

WASM Plugin

ცვლადინაგულისხმევიაღწერა
PRX_EMAIL_ENABLE_REAL_NETWORKდაუდგენელი (გამორთული)1-ზე დაყენება WASM კონტექსტიდან ფაქტობრივ IMAP/SMTP-ს ჩასართავად

API ლიმიტები

ლიმიტიმნიშვნელობააღწერა
List/search limit მინიმუმი1limit პარამეტრის მინიმუმი
List/search limit მაქსიმუმი500limit პარამეტრის მაქსიმუმი
Debug შეტყობინების შეჭრა160 სიმბოლოპროვაიდერის debug შეტყობინებები შეჭრილია
შეტყობინების snippet სიგრძე120 სიმბოლოავტო-გენერირებული შეტყობინების snippets

შეცდომის კოდები

კოდიაღწერა
Validationშეყვანის ვალიდაციის წარუმატებლობა (ცარიელი ველები, დიაპაზონის მიღმა ლიმიტები, უცნობი ფუნქციები)
FeatureDisabledოპერაცია ფუნქციის ნიშნით დაბლოკილია
NetworkIMAP/SMTP კავშირის ან პროტოკოლის შეცდომა
Providerელ.ფოსტის პროვაიდერმა ოპერაცია უარყო
StorageSQLite მონაცემთა ბაზის შეცდომა

Outbox კონსტანტები

კონსტანტამნიშვნელობააღწერა
Backoff base5 წამისაწყისი retry backoff
Backoff ფორმულა5 * 2^retriesექსპონენციური ზრდა
მაქსიმალური retry-ებიშეუზღუდავიbackoff ზრდით შეზღუდული
Idempotency გასაღებიoutbox-{id}-{retries}დეტერმინირებული Message-ID

ფუნქციის ნიშნები

ნიშანიაღწერაRisk დონე
inbox_readშეტყობინებების ჩამოთვლა და მიღებადაბალი
inbox_searchშეტყობინებების ძიება მოთხოვნითდაბალი
email_sendახალი ელ.ფოსტის გაგზავნასაშუალო
email_replyარსებული ელ.ფოსტების პასუხისაშუალო
outbox_retryვერ გაგზავნილი outbox შეტყობინებების retryდაბალი

ლოგირება

PRX-Email სტრუქტურირებულ ლოგებს stderr-ზე ასე გამოაქვს:

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

უსაფრთხოება

  • OAuth token-ები, პაროლები და API გასაღებები არასოდეს ილოგება
  • ელ.ფოსტის მისამართები debug ლოგებში ანონიმიზდება (მაგ., a***@example.com)
  • პროვაიდერის debug შეტყობინებები სანიტაციას გადიან: ავტორიზაციის header-ები იმალება და გამოტანა 160 სიმბოლომდე შეჭრილია

შემდეგი ნაბიჯები

Released under the Apache-2.0 License.