Wsparcie protokołów RFC dla poczty e-mail - Kompletny przewodnik po standardach i specyfikacjach
O tym dokumencie
Ten dokument opisuje wsparcie protokołu RFC (Request for Comments) dla Forward Email. Ponieważ Forward Email korzysta pod spodem z WildDuck do funkcjonalności IMAP/POP3, wsparcie protokołu i ograniczenia opisane tutaj odzwierciedlają implementację WildDuck.
Important
Forward Email używa SQLite do przechowywania wiadomości zamiast MongoDB (którego pierwotnie używał WildDuck). Ma to wpływ na niektóre szczegóły implementacji opisane poniżej.
Kod źródłowy: https://github.com/forwardemail/forwardemail.net
Przegląd architektury
Porównanie usług e-mail – wsparcie protokołów i zgodność ze standardami RFC
Important
Szyfrowanie w piaskownicy i odporne na komputery kwantowe: Forward Email to jedyna usługa e-mail, która przechowuje indywidualnie zaszyfrowane skrzynki SQLite za pomocą Twojego hasła (które znasz tylko Ty). Każda skrzynka jest szyfrowana za pomocą sqleet (ChaCha20-Poly1305), samodzielna, odizolowana i przenośna. Jeśli zapomnisz hasła, tracisz skrzynkę – nawet Forward Email nie może jej odzyskać. Szczegóły znajdziesz w Quantum-Safe Encrypted Email.
Porównaj wsparcie protokołów e-mail i implementację standardów RFC wśród głównych dostawców e-mail:
| Funkcja | Forward Email | Postfix/Dovecot | Gmail | iCloud Mail | Outlook.com | Fastmail | Yahoo/AOL (Verizon) | ProtonMail | Tutanota |
|---|---|---|---|---|---|---|---|---|---|
| Cena domeny niestandardowej | Darmowa | Darmowa | $7.20/mies | $0.99/mies | $7.20/mies | $5/mies | $3.19/mies | $4.99/mies | $3.27/mies |
| IMAP4rev1 (RFC 3501) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| IMAP4rev2 (RFC 9051) | ⚠️ Częściowo | ⚠️ Częściowo | ⚠️ 31% | ⚠️ 92% | ⚠️ 46% | ⚠️ 69% | ⚠️ 85% | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| POP3 (RFC 1939) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| SMTP (RFC 5321) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| JMAP (RFC 8620) | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany |
| DKIM (RFC 6376) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| SPF (RFC 7208) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| DMARC (RFC 7489) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| ARC (RFC 8617) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany |
| MTA-STS (RFC 8461) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| DANE (RFC 7671) | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| DSN (RFC 3461) | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Nieznany | ❌ Nieobsługiwany | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| REQUIRETLS (RFC 8689) | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Nieznany | ⚠️ Nieznany | ⚠️ Nieznany | ⚠️ Nieznany | ⚠️ Nieznany | ⚠️ Przez Bridge | ❌ Nieobsługiwany |
| ManageSieve (RFC 5804) | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany |
| OpenPGP (RFC 9580) | ✅ Obsługiwany | ⚠️ Przez wtyczki | ⚠️ Zewnętrzny | ⚠️ Zewnętrzny | ⚠️ Zewnętrzny | ⚠️ Zewnętrzny | ⚠️ Zewnętrzny | ✅ Natywny | ❌ Nieobsługiwany |
| S/MIME (RFC 8551) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ⚠️ Częściowo | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany |
| CalDAV (RFC 4791) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Przez Bridge | ❌ Nieobsługiwany |
| CardDAV (RFC 6352) | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Przez Bridge | ❌ Nieobsługiwany |
| Zadania (VTODO) | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany |
| Sieve (RFC 5228) | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany |
| Catch-All | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany |
| Nieograniczona liczba aliasów | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| Uwierzytelnianie dwuskładnikowe | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| Powiadomienia push | ✅ Obsługiwany | ⚠️ Przez wtyczki | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| Kalendarz/Kontakty na komputerze | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany |
| Zaawansowane wyszukiwanie | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ✅ Obsługiwany |
| API/Integracje | ✅ 39 punktów końcowych | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany | ✅ Obsługiwany | ❌ Nieobsługiwany |
Wizualizacja wsparcia protokołów
Podstawowe protokoły e-mail
Przepływ protokołu e-mail
Protokół e-mail IMAP4 i rozszerzenia
Note
Forward Email obsługuje IMAP4rev1 (RFC 3501) z częściowym wsparciem funkcji IMAP4rev2 (RFC 9051).
Forward Email zapewnia solidne wsparcie IMAP4 dzięki implementacji serwera pocztowego WildDuck. Serwer implementuje IMAP4rev1 (RFC 3501) z częściowym wsparciem rozszerzeń IMAP4rev2 (RFC 9051).
Funkcjonalność IMAP w Forward Email jest zapewniana przez zależność WildDuck. Obsługiwane są następujące RFC dotyczące poczty e-mail:
| RFC | Tytuł | Uwagi dotyczące implementacji |
|---|---|---|
| RFC 3501 | Internet Message Access Protocol (IMAP) - Wersja 4rev1 | Pełne wsparcie z celowymi różnicami (patrz poniżej) |
| RFC 2177 | Komenda IMAP4 IDLE | Powiadomienia push |
| RFC 2342 | Przestrzeń nazw IMAP4 | Wsparcie przestrzeni nazw skrzynek |
| RFC 2087 | Rozszerzenie IMAP4 QUOTA | Zarządzanie limitami przestrzeni |
| RFC 2971 | Rozszerzenie IMAP4 ID | Identyfikacja klienta/serwera |
| RFC 5161 | Rozszerzenie IMAP4 ENABLE | Włączanie rozszerzeń IMAP |
| RFC 4959 | Rozszerzenie IMAP dla początkowej odpowiedzi klienta SASL (SASL-IR) | Początkowa odpowiedź klienta |
| RFC 3691 | Komenda IMAP4 UNSELECT | Zamknięcie skrzynki bez EXPUNGE |
| RFC 4315 | Rozszerzenie IMAP UIDPLUS | Rozszerzone komendy UID |
| RFC 7162 | Rozszerzenia IMAP: Szybka synchronizacja zmian flag (CONDSTORE) | Conditional STORE |
| RFC 6154 | Rozszerzenie IMAP LIST dla skrzynek specjalnego przeznaczenia | Specjalne atrybuty skrzynek |
| RFC 6851 | Rozszerzenie IMAP MOVE | Atomowa komenda MOVE |
| RFC 6855 | Wsparcie IMAP dla UTF-8 | Wsparcie UTF-8 |
| RFC 3348 | Rozszerzenie IMAP4 dla skrzynek podrzędnych | Informacje o skrzynkach podrzędnych |
| RFC 7889 | Rozszerzenie IMAP4 dla reklamowania maksymalnego rozmiaru przesyłanego pliku (APPENDLIMIT) | Maksymalny rozmiar przesyłanego pliku |
| Obsługiwane rozszerzenia IMAP: |
| Rozszerzenie | RFC | Status | Opis |
|---|---|---|---|
| IDLE | RFC 2177 | ✅ Obsługiwane | Powiadomienia push |
| NAMESPACE | RFC 2342 | ✅ Obsługiwane | Obsługa przestrzeni nazw skrzynek |
| QUOTA | RFC 2087 | ✅ Obsługiwane | Zarządzanie limitem pamięci |
| ID | RFC 2971 | ✅ Obsługiwane | Identyfikacja klient/serwer |
| ENABLE | RFC 5161 | ✅ Obsługiwane | Włączanie rozszerzeń IMAP |
| SASL-IR | RFC 4959 | ✅ Obsługiwane | Początkowa odpowiedź klienta |
| UNSELECT | RFC 3691 | ✅ Obsługiwane | Zamknięcie skrzynki bez EXPUNGE |
| UIDPLUS | RFC 4315 | ✅ Obsługiwane | Rozszerzone polecenia UID |
| CONDSTORE | RFC 7162 | ✅ Obsługiwane | Warunkowy STORE |
| SPECIAL-USE | RFC 6154 | ✅ Obsługiwane | Specjalne atrybuty skrzynek |
| MOVE | RFC 6851 | ✅ Obsługiwane | Atomowe polecenie MOVE |
| UTF8=ACCEPT | RFC 6855 | ✅ Obsługiwane | Obsługa UTF-8 |
| CHILDREN | RFC 3348 | ✅ Obsługiwane | Informacje o podfolderach |
| APPENDLIMIT | RFC 7889 | ✅ Obsługiwane | Maksymalny rozmiar przesyłanego pliku |
| XLIST | Niestandardowe | ✅ Obsługiwane | Lista folderów kompatybilna z Gmailem |
| XAPPLEPUSHSERVICE | Niestandardowe | ✅ Obsługiwane | Usługa powiadomień push Apple |
Różnice protokołu IMAP względem specyfikacji RFC
Warning
Poniższe różnice względem specyfikacji RFC mogą wpływać na kompatybilność klienta.
Forward Email celowo odbiega od niektórych specyfikacji IMAP RFC. Różnice te są dziedziczone po WildDuck i zostały opisane poniżej:
- Brak flagi \Recent: Flaga
\Recentnie jest zaimplementowana. Wszystkie wiadomości zwracane są bez tej flagi. - RENAME nie wpływa na podfoldery: Podczas zmiany nazwy folderu podfoldery nie są automatycznie zmieniane. Hierarchia folderów jest płaska w bazie danych.
- INBOX nie może być zmieniony: RFC 3501 dopuszcza zmianę nazwy INBOX, ale Forward Email wyraźnie tego zabrania. Zobacz kod źródłowy WildDuck.
- Brak niezamówionych odpowiedzi FLAGS: Po zmianie flag nie są wysyłane niezamówione odpowiedzi FLAGS do klienta.
- STORE zwraca NO dla usuniętych wiadomości: Próba modyfikacji flag usuniętych wiadomości zwraca NO zamiast ignorować ją cicho.
- CHARSET ignorowany w SEARCH: Argument
CHARSETw poleceniach SEARCH jest ignorowany. Wszystkie wyszukiwania używają UTF-8. - Metadane MODSEQ ignorowane: Metadane
MODSEQw poleceniach STORE są ignorowane. - SEARCH TEXT i SEARCH BODY: Forward Email używa SQLite FTS5 (pełnotekstowe wyszukiwanie) zamiast wyszukiwania
$textw MongoDB. Zapewnia to:- Obsługę operatora
NOT(MongoDB tego nie wspiera) - Wyniki wyszukiwania z rankingiem
- Wydajność wyszukiwania poniżej 100 ms na dużych skrzynkach
- Obsługę operatora
- Zachowanie autoexpunge: Wiadomości oznaczone jako
\Deletedsą automatycznie usuwane po zamknięciu skrzynki. - Wierność wiadomości: Niektóre modyfikacje wiadomości mogą nie zachować dokładnej oryginalnej struktury wiadomości.
Częściowe wsparcie IMAP4rev2:
Forward Email implementuje IMAP4rev1 (RFC 3501) z częściowym wsparciem IMAP4rev2 (RFC 9051). Następujące funkcje IMAP4rev2 nie są jeszcze obsługiwane:
- LIST-STATUS - Połączone polecenia LIST i STATUS
- LITERAL- - Literały niesynchronizujące (wariant minus)
- OBJECTID - Unikalne identyfikatory obiektów
- SAVEDATE - Atrybut daty zapisu
- REPLACE - Atomowa zamiana wiadomości
- UNAUTHENTICATE - Zamknięcie uwierzytelnienia bez zamykania połączenia
Luźne przetwarzanie struktury treści:
Forward Email stosuje „luźne” przetwarzanie struktury treści dla niepoprawnych struktur MIME, co może różnić się od ścisłej interpretacji RFC. Poprawia to kompatybilność z rzeczywistymi wiadomościami, które nie zawsze idealnie spełniają standardy. Rozszerzenie METADATA (RFC 5464):
Rozszerzenie IMAP METADATA nie jest obsługiwane. Więcej informacji o tym rozszerzeniu znajduje się w RFC 5464. Dyskusję na temat dodania tej funkcji można znaleźć w WildDuck Issue #937.
Rozszerzenia IMAP NIEOBSŁUGIWANE
Następujące rozszerzenia IMAP z IANA IMAP Capabilities Registry NIE są obsługiwane:
| RFC | Tytuł | Powód |
|---|---|---|
| RFC 2086 | Rozszerzenie IMAP4 ACL | Foldery współdzielone niezaimplementowane. Zobacz WildDuck Issue #427 |
| RFC 5256 | Rozszerzenia IMAP SORT i THREAD | Wątkowanie zaimplementowane wewnętrznie, ale nie przez protokół RFC 5256. Zobacz WildDuck Issue #12 |
| RFC 5162 | Rozszerzenia IMAP4 dla szybkiej resynchronizacji skrzynek (QRESYNC) | Niezaimplementowane |
| RFC 5464 | Rozszerzenie IMAP METADATA | Operacje na metadanych ignorowane. Zobacz dokumentację WildDuck |
| RFC 5258 | Rozszerzenia polecenia IMAP4 LIST | Niezaimplementowane |
| RFC 5267 | Konteksty dla IMAP4 | Niezaimplementowane |
| RFC 5465 | Rozszerzenie IMAP NOTIFY | Niezaimplementowane |
| RFC 5466 | Rozszerzenie IMAP4 FILTERS | Niezaimplementowane |
| RFC 6203 | Rozszerzenie IMAP4 dla wyszukiwania rozmytego | Niezaimplementowane |
| RFC 6785 | Rekomendacje dotyczące implementacji IMAP4 | Rekomendacje nie są w pełni przestrzegane |
| RFC 7162 | Rozszerzenia IMAP: szybka resynchronizacja zmian flag (CONDSTORE) i szybka resynchronizacja skrzynek (QRESYNC) | Niezaimplementowane |
| RFC 8437 | Rozszerzenie IMAP UNAUTHENTICATE dla ponownego użycia połączenia | Niezaimplementowane |
| RFC 8438 | Rozszerzenie IMAP dla STATUS=SIZE | Niezaimplementowane |
| RFC 8457 | IMAP "$Important" Keyword i specjalny atrybut użycia "\Important" | Niezaimplementowane |
| RFC 8474 | Rozszerzenie IMAP dla identyfikatorów obiektów | Niezaimplementowane |
| RFC 9051 | Protokół dostępu do wiadomości internetowych (IMAP) - wersja 4rev2 | Forward Email implementuje IMAP4rev1 (RFC 3501) |
Protokół POP3 i rozszerzenia
Note
Forward Email obsługuje POP3 (RFC 1939) ze standardowymi rozszerzeniami do pobierania poczty.
Funkcjonalność POP3 w Forward Email jest zapewniona przez zależność WildDuck. Obsługiwane są następujące RFC dotyczące poczty:
| RFC | Tytuł | Uwagi dotyczące implementacji |
|---|---|---|
| RFC 1939 | Protokół pocztowy - wersja 3 (POP3) | Pełne wsparcie z celowymi różnicami (patrz poniżej) |
| RFC 2595 | Używanie TLS z IMAP, POP3 i ACAP | Wsparcie STARTTLS |
| RFC 2449 | Mechanizm rozszerzeń POP3 | Wsparcie polecenia CAPA |
Forward Email zapewnia wsparcie POP3 dla klientów, którzy wolą ten prostszy protokół zamiast IMAP. POP3 jest idealny dla użytkowników, którzy chcą pobrać wiadomości na jedno urządzenie i usunąć je z serwera.
Obsługiwane rozszerzenia POP3:
| Rozszerzenie | RFC | Status | Opis |
|---|---|---|---|
| TOP | RFC 1939 | ✅ Obsługiwane | Pobieranie nagłówków wiadomości |
| USER | RFC 1939 | ✅ Obsługiwane | Uwierzytelnianie nazwy użytkownika |
| UIDL | RFC 1939 | ✅ Obsługiwane | Unikalne identyfikatory wiadomości |
| EXPIRE | RFC 2449 | ✅ Obsługiwane | Polityka wygasania wiadomości |
Różnice protokołu POP3 względem specyfikacji RFC
Warning
POP3 ma wrodzone ograniczenia w porównaniu do IMAP.
Important
Kluczowa różnica: zachowanie polecenia DELE w Forward Email vs WildDuck POP3
Forward Email implementuje zgodne z RFC trwałe usuwanie wiadomości dla poleceń POP3 DELE, w przeciwieństwie do WildDuck, który przenosi wiadomości do Kosza.
Zachowanie Forward Email (kod źródłowy):
DELE→QUITtrwale usuwa wiadomości- Dokładne przestrzeganie specyfikacji RFC 1939
- Zachowanie zgodne z serwerami Dovecot (domyślny), Postfix i innymi zgodnymi ze standardami
Zachowanie WildDuck (dyskusja):
DELE→QUITprzenosi wiadomości do Kosza (podobnie jak Gmail)- Świadoma decyzja projektowa dla bezpieczeństwa użytkownika
- Niezgodne z RFC, ale zapobiega przypadkowej utracie danych
Dlaczego Forward Email różni się:
- Zgodność z RFC: Przestrzega specyfikacji RFC 1939
- Oczekiwania użytkowników: Przepływ pracy pobierz-i-usun oczekuje trwałego usunięcia
- Zarządzanie przestrzenią dyskową: Właściwe zwalnianie miejsca na dysku
- Interoperacyjność: Spójne z innymi serwerami zgodnymi z RFC
Note
Lista wiadomości POP3: Forward Email wyświetla WSZYSTKIE wiadomości z INBOX bez limitu. Różni się to od WildDuck, który domyślnie ogranicza do 250 wiadomości. Zobacz kod źródłowy.
Dostęp z pojedynczego urządzenia:
POP3 jest zaprojektowany do dostępu z pojedynczego urządzenia. Wiadomości są zazwyczaj pobierane i usuwane z serwera, co czyni go nieodpowiednim do synchronizacji na wielu urządzeniach.
Brak wsparcia dla folderów:
POP3 uzyskuje dostęp tylko do folderu INBOX. Inne foldery (Wysłane, Robocze, Kosz itp.) nie są dostępne przez POP3.
Ograniczone zarządzanie wiadomościami:
POP3 zapewnia podstawowe pobieranie i usuwanie wiadomości. Zaawansowane funkcje, takie jak oznaczanie, przenoszenie czy wyszukiwanie wiadomości, nie są dostępne.
Rozszerzenia POP3 NIEOBSŁUGIWANE
Następujące rozszerzenia POP3 z Rejestru mechanizmu rozszerzeń POP3 IANA NIE są obsługiwane:
| RFC | Tytuł | Powód |
|---|---|---|
| RFC 6856 | Post Office Protocol Version 3 (POP3) Support for UTF-8 | Niezaimplementowane w serwerze WildDuck POP3 |
| RFC 2595 | Komenda STLS | Obsługiwany tylko STARTTLS, nie STLS |
| RFC 3206 | Kody odpowiedzi SYS i AUTH POP | Niezaimplementowane |
Protokół SMTP i rozszerzenia
Note
Forward Email obsługuje SMTP (RFC 5321) z nowoczesnymi rozszerzeniami dla bezpiecznej i niezawodnej dostawy e-maili.
Funkcjonalność SMTP w Forward Email zapewniają różne komponenty: smtp-server (nodemailer), zone-mta oraz własne implementacje. Obsługiwane są następujące RFC dotyczące e-maili:
| RFC | Tytuł | Uwagi dotyczące implementacji |
|---|---|---|
| RFC 5321 | Simple Mail Transfer Protocol (SMTP) | Pełne wsparcie |
| RFC 3207 | SMTP Service Extension for Secure SMTP over Transport Layer Security (STARTTLS) | Wsparcie TLS/SSL |
| RFC 4954 | SMTP Service Extension for Authentication (AUTH) | PLAIN, LOGIN, CRAM-MD5, XOAUTH2 |
| RFC 6531 | SMTP Extension for Internationalized Email (SMTPUTF8) | Wsparcie natywnych adresów e-mail Unicode |
| RFC 3461 | SMTP Service Extension for Delivery Status Notifications (DSN) | Pełne wsparcie DSN |
| RFC 3463 | Enhanced Mail System Status Codes | Rozszerzone kody statusu w odpowiedziach |
| RFC 1870 | SMTP Service Extension for Message Size Declaration (SIZE) | Reklama maksymalnego rozmiaru wiadomości |
| RFC 2920 | SMTP Service Extension for Command Pipelining (PIPELINING) | Wsparcie pipeliningu komend |
| RFC 1652 | SMTP Service Extension for 8bit-MIMEtransport (8BITMIME) | Wsparcie 8-bitowego MIME |
| RFC 6152 | SMTP Service Extension for 8-bit MIME Transport | Wsparcie 8-bitowego MIME |
| RFC 2034 | SMTP Service Extension for Returning Enhanced Error Codes (ENHANCEDSTATUSCODES) | Rozszerzone kody statusu |
Forward Email implementuje w pełni funkcjonalny serwer SMTP z obsługą nowoczesnych rozszerzeń zwiększających bezpieczeństwo, niezawodność i funkcjonalność.
Obsługiwane rozszerzenia SMTP:
| Rozszerzenie | RFC | Status | Opis |
|---|---|---|---|
| PIPELINING | RFC 2920 | ✅ Obsługiwane | Pipelining komend |
| SIZE | RFC 1870 | ✅ Obsługiwane | Deklaracja rozmiaru wiadomości (limit 52MB) |
| ETRN | RFC 1985 | ✅ Obsługiwane | Zdalne przetwarzanie kolejki |
| STARTTLS | RFC 3207 | ✅ Obsługiwane | Uaktualnienie do TLS |
| ENHANCEDSTATUSCODES | RFC 2034 | ✅ Obsługiwane | Rozszerzone kody statusu |
| 8BITMIME | RFC 6152 | ✅ Obsługiwane | Transport 8-bitowego MIME |
| DSN | RFC 3461 | ✅ Obsługiwane | Powiadomienia o statusie dostarczenia |
| CHUNKING | RFC 3030 | ✅ Obsługiwane | Transfer wiadomości w kawałkach |
| SMTPUTF8 | RFC 6531 | ⚠️ Częściowo | Adresy e-mail w UTF-8 (częściowo) |
| REQUIRETLS | RFC 8689 | ✅ Obsługiwane | Wymaganie TLS dla dostarczenia |
Powiadomienia o statusie dostarczenia (DSN)
Tip
DSN dostarcza szczegółowe informacje o statusie dostarczenia wysłanych wiadomości e-mail.
Forward Email w pełni obsługuje DSN (RFC 3461), które pozwala nadawcom na żądanie powiadomień o statusie dostarczenia. Ta funkcja zapewnia:
- Powiadomienia o sukcesie gdy wiadomości zostaną dostarczone
- Powiadomienia o błędzie z szczegółowymi informacjami o błędach
- Powiadomienia o opóźnieniu gdy dostarczenie jest tymczasowo opóźnione
DSN jest szczególnie przydatne do:
- Potwierdzania dostarczenia ważnych wiadomości
- Rozwiązywania problemów z dostarczeniem
- Zautomatyzowanych systemów przetwarzania e-maili
- Wymagań zgodności i audytu
Wsparcie REQUIRETLS
Important
Forward Email jest jednym z nielicznych dostawców, którzy wyraźnie reklamują i wymuszają REQUIRETLS.
Forward Email obsługuje REQUIRETLS (RFC 8689), które zapewnia, że wiadomości e-mail są dostarczane wyłącznie przez połączenia szyfrowane TLS. Zapewnia to:
- Szyfrowanie end-to-end na całej ścieżce dostarczenia
- Wymuszanie widoczne dla użytkownika poprzez pole wyboru w komponencie wiadomości e-mail
- Odrzucanie prób dostarczenia bez szyfrowania
- Zwiększone bezpieczeństwo dla wrażliwych komunikacji
Nieobsługiwane rozszerzenia SMTP
Następujące rozszerzenia SMTP z IANA SMTP Service Extensions Registry NIE są obsługiwane:
| RFC | Tytuł | Powód |
|---|---|---|
| RFC 4865 | SMTP Submission Service Extension for Future Message Release (FUTURERELEASE) | Niezaimplementowane |
| RFC 6710 | SMTP Extension for Message Transfer Priorities (MT-PRIORITY) | Niezaimplementowane |
| RFC 7293 | The Require-Recipient-Valid-Since Header Field and SMTP Service Extension | Niezaimplementowane |
| RFC 7372 | Email Auth Status Codes | Nie w pełni zaimplementowane |
| RFC 4468 | Message Submission BURL Extension | Niezaimplementowane |
| RFC 3030 | SMTP Service Extensions for Transmission of Large and Binary MIME Messages (CHUNKING, BINARYMIME) | Niezaimplementowane |
| RFC 2852 | Deliver By SMTP Service Extension | Niezaimplementowane |
Protokół e-mail JMAP
Caution
JMAP nie jest obecnie obsługiwany przez Forward Email.
| RFC | Tytuł | Status | Powód |
|---|---|---|---|
| RFC 8620 | The JSON Meta Application Protocol (JMAP) | ❌ Nieobsługiwany | Forward Email używa zamiast tego IMAP/POP3/SMTP oraz kompleksowego REST API |
JMAP (JSON Meta Application Protocol) to nowoczesny protokół e-mail zaprojektowany jako zamiennik IMAP.
Dlaczego JMAP nie jest obsługiwany:
"JMAP to bestia, której nie powinno się było wynajdywać. Próbuje przekształcić TCP/IMAP (już zły protokół według dzisiejszych standardów) w HTTP/JSON, po prostu używając innego transportu, zachowując ducha." — Andris Reinman, HN Discussion "JMAP ma ponad 10 lat i prawie wcale nie jest stosowany" – Andris Reinman, GitHub Discussion
Zobacz także dodatkowe komentarze na https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=jmap andris&sort=byDate&type=comment.
Forward Email obecnie koncentruje się na zapewnieniu doskonałego wsparcia dla IMAP, POP3 i SMTP oraz kompleksowego REST API do zarządzania pocztą elektroniczną. Wsparcie dla JMAP może być rozważone w przyszłości w zależności od zapotrzebowania użytkowników i adopcji w ekosystemie.
Alternatywa: Forward Email oferuje Kompletny REST API z 39 punktami końcowymi, który zapewnia podobną funkcjonalność do JMAP dla programowego dostępu do poczty.
Bezpieczeństwo poczty elektronicznej
Architektura bezpieczeństwa poczty elektronicznej
Protokoły uwierzytelniania wiadomości e-mail
Note
Forward Email implementuje wszystkie główne protokoły uwierzytelniania poczty elektronicznej, aby zapobiegać podszywaniu się i zapewnić integralność wiadomości.
Forward Email korzysta z biblioteki mailauth do uwierzytelniania poczty elektronicznej. Obsługiwane są następujące RFC:
| RFC | Tytuł | Uwagi dotyczące implementacji |
|---|---|---|
| RFC 6376 | DomainKeys Identified Mail (DKIM) Signatures | Pełne podpisywanie i weryfikacja DKIM |
| RFC 8463 | Nowa metoda podpisu kryptograficznego dla DKIM (Ed25519-SHA256) | Obsługuje algorytmy podpisu RSA-SHA256 i Ed25519-SHA256 |
| RFC 7208 | Sender Policy Framework (SPF) | Walidacja rekordów SPF |
| RFC 7489 | Domain-based Message Authentication, Reporting, and Conformance (DMARC) | Egzekwowanie polityki DMARC |
| RFC 8617 | Authenticated Received Chain (ARC) | Uszczelnianie i weryfikacja ARC |
Protokoły uwierzytelniania poczty elektronicznej weryfikują, czy wiadomości rzeczywiście pochodzą od deklarowanego nadawcy i nie zostały zmienione podczas przesyłania.
Wsparcie protokołów uwierzytelniania
| Protokół | RFC | Status | Opis |
|---|---|---|---|
| DKIM | RFC 6376 | ✅ Obsługiwany | DomainKeys Identified Mail - podpisy kryptograficzne |
| SPF | RFC 7208 | ✅ Obsługiwany | Sender Policy Framework - autoryzacja adresu IP |
| DMARC | RFC 7489 | ✅ Obsługiwany | Domain-based Message Authentication - egzekwowanie polityki |
| ARC | RFC 8617 | ✅ Obsługiwany | Authenticated Received Chain - zachowanie uwierzytelnienia przy przekazywaniu |
DKIM (DomainKeys Identified Mail)
DKIM dodaje kryptograficzny podpis do nagłówków e-mail, pozwalając odbiorcom zweryfikować, że wiadomość została autoryzowana przez właściciela domeny i nie została zmodyfikowana podczas przesyłania.
Forward Email używa mailauth do podpisywania i weryfikacji DKIM.
Kluczowe funkcje:
- Automatyczne podpisywanie DKIM dla wszystkich wychodzących wiadomości
- Obsługa kluczy RSA i Ed25519
- Obsługa wielu selektorów
- Weryfikacja DKIM dla wiadomości przychodzących
SPF (Sender Policy Framework)
SPF pozwala właścicielom domen określić, które adresy IP są uprawnione do wysyłania e-maili w imieniu ich domeny.
Kluczowe funkcje:
- Walidacja rekordu SPF dla wiadomości przychodzących
- Automatyczne sprawdzanie SPF z szczegółowymi wynikami
- Obsługa mechanizmów include, redirect i all
- Konfigurowalne polityki SPF dla każdej domeny
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC opiera się na SPF i DKIM, aby zapewnić egzekwowanie polityk i raportowanie.
Kluczowe funkcje:
- Egzekwowanie polityki DMARC (none, quarantine, reject)
- Sprawdzanie wyrównania dla SPF i DKIM
- Raportowanie zbiorcze DMARC
- Polityki DMARC dla poszczególnych domen
ARC (Authenticated Received Chain)
ARC zachowuje wyniki uwierzytelniania e-maili podczas przekazywania i modyfikacji na listach mailingowych.
Forward Email używa biblioteki mailauth do weryfikacji i zabezpieczania ARC.
Kluczowe funkcje:
- Zabezpieczanie ARC dla przekazywanych wiadomości
- Weryfikacja ARC dla wiadomości przychodzących
- Weryfikacja łańcucha przez wiele przeskoków
- Zachowuje oryginalne wyniki uwierzytelniania
Authentication Flow
Email Transport Security Protocols
Important
Forward Email implementuje wielowarstwowe zabezpieczenia transportu, aby chronić e-maile podczas przesyłania.
Forward Email implementuje nowoczesne protokoły zabezpieczeń transportu:
| RFC | Tytuł | Status | Uwagi dotyczące implementacji |
|---|---|---|---|
| RFC 8461 | SMTP MTA Strict Transport Security (MTA-STS) | ✅ Obsługiwany | Szeroko stosowany na serwerach IMAP, SMTP i MX. Zobacz create-mta-sts-cache.js oraz get-transporter.js |
| RFC 8460 | SMTP TLS Reporting | ✅ Obsługiwany | Poprzez bibliotekę mailauth |
| RFC 7671 | The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance | ✅ Obsługiwany | Pełna weryfikacja DANE dla wychodzących połączeń SMTP. Zobacz mx-connect PR #22 |
| RFC 6698 | The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA | ✅ Obsługiwany | Pełne wsparcie RFC 6698: typy użycia PKIX-TA, PKIX-EE, DANE-TA, DANE-EE. Zobacz mx-connect PR #22 |
| RFC 8314 | Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access | ✅ Obsługiwany | TLS wymagany dla wszystkich połączeń |
| RFC 8689 | SMTP Service Extension for Requiring TLS (REQUIRETLS) | ✅ Obsługiwany | Pełne wsparcie rozszerzenia SMTP REQUIRETLS oraz nagłówka "TLS-Required" |
| Protokoły bezpieczeństwa transportu zapewniają, że wiadomości e-mail są szyfrowane i uwierzytelniane podczas przesyłania między serwerami pocztowymi. |
Transport Security Support
| Protocol | RFC | Status | Description |
|---|---|---|---|
| TLS | RFC 8314 | ✅ Supported | Transport Layer Security - Połączenia szyfrowane |
| MTA-STS | RFC 8461 | ✅ Supported | Mail Transfer Agent Strict Transport Security |
| DANE | RFC 7671 | ✅ Supported | DNS-based Authentication of Named Entities |
| REQUIRETLS | RFC 8689 | ✅ Supported | Wymagaj TLS dla całej ścieżki dostarczenia |
TLS (Transport Layer Security)
Forward Email wymusza szyfrowanie TLS dla wszystkich połączeń e-mail (SMTP, IMAP, POP3).
Kluczowe cechy:
- Obsługa TLS 1.2 i TLS 1.3
- Automatyczne zarządzanie certyfikatami
- Perfect Forward Secrecy (PFS)
- Tylko silne zestawy szyfrów
MTA-STS (Mail Transfer Agent Strict Transport Security)
MTA-STS zapewnia, że e-mail jest dostarczany wyłącznie przez połączenia szyfrowane TLS, publikując politykę przez HTTPS.
Forward Email implementuje MTA-STS za pomocą create-mta-sts-cache.js.
Kluczowe cechy:
- Automatyczna publikacja polityki MTA-STS
- Buforowanie polityki dla wydajności
- Zapobieganie atakom downgrade
- Wymuszanie walidacji certyfikatów
DANE (DNS-based Authentication of Named Entities)
Note
Forward Email zapewnia teraz pełne wsparcie DANE dla wychodzących połączeń SMTP.
DANE wykorzystuje DNSSEC do publikowania informacji o certyfikatach TLS w DNS, umożliwiając serwerom pocztowym weryfikację certyfikatów bez polegania na urzędach certyfikacji.
Kluczowe cechy:
- ✅ Pełna weryfikacja DANE dla wychodzących połączeń SMTP
- ✅ Pełne wsparcie RFC 6698: typy użycia PKIX-TA, PKIX-EE, DANE-TA, DANE-EE
- ✅ Weryfikacja certyfikatów względem rekordów TLSA podczas aktualizacji TLS
- ✅ Równoległe rozwiązywanie TLSA dla wielu hostów MX
- ✅ Automatyczne wykrywanie natywnego
dns.resolveTlsa(Node.js v22.15.0+, v23.9.0+) - ✅ Wsparcie niestandardowego resolvera dla starszych wersji Node.js przez Tangerine
- Wymaga domen podpisanych DNSSEC
Tip
Szczegóły implementacji: Wsparcie DANE zostało dodane przez mx-connect PR #22, który zapewnia kompleksowe wsparcie DANE/TLSA dla wychodzących połączeń SMTP.
REQUIRETLS
Tip
Forward Email jest jednym z nielicznych dostawców oferujących wsparcie REQUIRETLS widoczne dla użytkownika.
REQUIRETLS zapewnia, że wiadomości e-mail są dostarczane wyłącznie przez połączenia szyfrowane TLS na całej ścieżce dostarczenia.
Kluczowe cechy:
- Widoczny dla użytkownika checkbox w komponencie wiadomości e-mail
- Automatyczne odrzucanie nieszyfrowanego dostarczenia
- Wymuszanie TLS end-to-end
- Szczegółowe powiadomienia o błędach
Tip
Wymuszanie TLS widoczne dla użytkownika: Forward Email udostępnia checkbox w sekcji Moje konto > Domeny > Ustawienia do wymuszania TLS dla wszystkich połączeń przychodzących. Po włączeniu funkcji, każde przychodzące e-mail nie wysłane przez połączenie szyfrowane TLS jest odrzucane z kodem błędu 530, zapewniając, że cała poczta przychodząca jest szyfrowana w tranzycie.
Transport Security Flow
Szyfrowanie wiadomości e-mail
Note
Forward Email obsługuje zarówno OpenPGP, jak i S/MIME do szyfrowania wiadomości e-mail end-to-end.
Forward Email obsługuje szyfrowanie OpenPGP i S/MIME:
| RFC | Tytuł | Status | Uwagi dotyczące implementacji |
|---|---|---|---|
| RFC 9580 | OpenPGP (zastępuje RFC 4880) | ✅ Obsługiwany | Poprzez integrację z OpenPGP.js v6+. Zobacz FAQ |
| RFC 8551 | Secure/Multipurpose Internet Mail Extensions (S/MIME) Wersja 4.0 Specyfikacja wiadomości | ✅ Obsługiwany | Obsługa zarówno algorytmów RSA, jak i ECC. Zobacz FAQ |
Protokoły szyfrowania wiadomości chronią zawartość e-maila przed odczytaniem przez kogokolwiek poza zamierzonym odbiorcą, nawet jeśli wiadomość zostanie przechwycona podczas przesyłania.
Obsługa szyfrowania
| Protokół | RFC | Status | Opis |
|---|---|---|---|
| OpenPGP | RFC 9580 | ✅ Obsługiwany | Pretty Good Privacy - szyfrowanie kluczem publicznym |
| S/MIME | RFC 8551 | ✅ Obsługiwany | Secure/Multipurpose Internet Mail Extensions |
| WKD | Draft | ✅ Obsługiwany | Web Key Directory - automatyczne wykrywanie kluczy |
OpenPGP (Pretty Good Privacy)
OpenPGP zapewnia szyfrowanie end-to-end z wykorzystaniem kryptografii klucza publicznego. Forward Email obsługuje OpenPGP poprzez protokół Web Key Directory (WKD).
Kluczowe cechy:
- Automatyczne wykrywanie kluczy przez WKD
- Obsługa PGP/MIME dla zaszyfrowanych załączników
- Zarządzanie kluczami przez klienta poczty
- Kompatybilność z GPG, Mailvelope i innymi narzędziami OpenPGP
Jak używać:
- Wygeneruj parę kluczy PGP w swoim kliencie poczty
- Prześlij swój klucz publiczny do WKD Forward Email
- Twój klucz jest automatycznie wykrywalny przez innych użytkowników
- Wysyłaj i odbieraj zaszyfrowane e-maile bezproblemowo
S/MIME (Secure/Multipurpose Internet Mail Extensions)
S/MIME zapewnia szyfrowanie e-maili i podpisy cyfrowe z wykorzystaniem certyfikatów X.509.
Kluczowe cechy:
- Szyfrowanie oparte na certyfikatach
- Podpisy cyfrowe do uwierzytelniania wiadomości
- Wsparcie natywne w większości klientów poczty
- Bezpieczeństwo klasy korporacyjnej
Jak używać:
- Uzyskaj certyfikat S/MIME od Urzędu Certyfikacji
- Zainstaluj certyfikat w swoim kliencie poczty
- Skonfiguruj klienta do szyfrowania/podpisywania wiadomości
- Wymień certyfikaty z odbiorcami
Szyfrowanie skrzynki pocztowej SQLite
Important
Forward Email zapewnia dodatkową warstwę bezpieczeństwa dzięki szyfrowanym skrzynkom pocztowym SQLite.
Poza szyfrowaniem na poziomie wiadomości, Forward Email szyfruje całe skrzynki pocztowe za pomocą sqleet (ChaCha20-Poly1305).
Kluczowe cechy:
- Szyfrowanie oparte na haśle - Tylko Ty znasz hasło
- Odporność na komputery kwantowe - szyfr ChaCha20-Poly1305
- Zero-knowledge - Forward Email nie może odszyfrować Twojej skrzynki
- Izolacja - Każda skrzynka jest odizolowana i przenośna
- Nieodwracalność - Jeśli zapomnisz hasło, skrzynka zostanie utracona
Porównanie szyfrowania
| Funkcja | OpenPGP | S/MIME | Szyfrowanie SQLite |
|---|---|---|---|
| End-to-End | ✅ Tak | ✅ Tak | ✅ Tak |
| Zarządzanie kluczami | Samodzielne | Wydane przez CA | Oparte na haśle |
| Wsparcie klienta | Wymaga wtyczki | Natywne | Przezroczyste |
| Zastosowanie | Osobiste | Korporacyjne | Przechowywanie |
| Odporność na kwanty | ⚠️ Zależy od klucza | ⚠️ Zależy od certyfikatu | ✅ Tak |
Przebieg szyfrowania
Rozszerzona funkcjonalność
Standardy formatu wiadomości email
Note
Forward Email obsługuje nowoczesne standardy formatu wiadomości email dla bogatej zawartości i internacjonalizacji.
Forward Email obsługuje standardowe formaty wiadomości email:
| RFC | Tytuł | Uwagi dotyczące implementacji |
|---|---|---|
| RFC 5322 | Format wiadomości internetowej | Pełne wsparcie |
| RFC 2045 | MIME Część pierwsza: Format ciał wiadomości internetowych | Pełne wsparcie MIME |
| RFC 2046 | MIME Część druga: Typy mediów | Pełne wsparcie MIME |
| RFC 2047 | MIME Część trzecia: Rozszerzenia nagłówków dla tekstu nie-ASCII | Pełne wsparcie MIME |
| RFC 2048 | MIME Część czwarta: Procedury rejestracji | Pełne wsparcie MIME |
| RFC 2049 | MIME Część piąta: Kryteria zgodności i przykłady | Pełne wsparcie MIME |
Standardy formatu wiadomości definiują, jak wiadomości email są strukturyzowane, kodowane i wyświetlane.
Wsparcie standardów formatu
| Standard | RFC | Status | Opis |
|---|---|---|---|
| MIME | RFC 2045-2049 | ✅ Obsługiwany | Rozszerzenia wielozadaniowej poczty internetowej |
| SMTPUTF8 | RFC 6531 | ⚠️ Częściowe | Internacjonalizacja adresów email |
| EAI | RFC 6530 | ⚠️ Częściowe | Internacjonalizacja adresów email |
| Format wiadomości | RFC 5322 | ✅ Obsługiwany | Format wiadomości internetowej |
| Bezpieczeństwo MIME | RFC 1847 | ✅ Obsługiwany | Bezpieczne części MIME |
MIME (Rozszerzenia wielozadaniowej poczty internetowej)
MIME pozwala na zawieranie w emailach wielu części o różnych typach zawartości (tekst, HTML, załączniki itp.).
Obsługiwane funkcje MIME:
- Wiadomości wieloczęściowe (mixed, alternative, related)
- Nagłówki Content-Type
- Kodowanie Content-Transfer-Encoding (7bit, 8bit, quoted-printable, base64)
- Obrazy i załączniki w linii
- Bogata zawartość HTML
SMTPUTF8 i internacjonalizacja adresów email
Warning
Wsparcie SMTPUTF8 jest częściowe - nie wszystkie funkcje są w pełni zaimplementowane.
SMTPUTF8 pozwala na używanie w adresach e-mail znaków spoza ASCII (np. 用户@例え.jp).
Aktualny status:
- ⚠️ Częściowe wsparcie dla internacjonalizowanych adresów e-mail
- ✅ Treść w UTF-8 w ciałach wiadomości
- ⚠️ Ograniczone wsparcie dla części lokalnych spoza ASCII
Protokoły kalendarzy i kontaktów
Note
Forward Email zapewnia pełne wsparcie CalDAV i CardDAV do synchronizacji kalendarzy i kontaktów.
Forward Email obsługuje CalDAV i CardDAV za pomocą biblioteki caldav-adapter:
| RFC | Tytuł | Status | Uwagi dotyczące implementacji |
|---|---|---|---|
| RFC 4791 | Rozszerzenia kalendarza do WebDAV (CalDAV) | ✅ Obsługiwany | Dostęp i zarządzanie kalendarzem |
| RFC 6352 | CardDAV: rozszerzenia vCard do WebDAV | ✅ Obsługiwany | Dostęp i zarządzanie kontaktami |
| RFC 5545 | Internetowy format kalendarza i harmonogramu (iCalendar) | ✅ Obsługiwany | Wsparcie formatu iCalendar |
| RFC 6350 | Specyfikacja formatu vCard | ✅ Obsługiwany | Wsparcie formatu vCard 4.0 |
| RFC 6638 | Rozszerzenia harmonogramu do CalDAV | ✅ Obsługiwany | Harmonogramowanie CalDAV z obsługą iMIP. Zobacz commit c4d1629 |
| RFC 5546 | Protokół interoperacyjności niezależny od transportu iCalendar (iTIP) | ✅ Obsługiwany | Wsparcie iTIP dla metod REQUEST, REPLY, CANCEL i VFREEBUSY. Zobacz commit c4d1629 |
| RFC 6047 | Protokół interoperacyjności iCalendar oparty na wiadomościach (iMIP) | ✅ Obsługiwany | Zaproszenia kalendarzowe oparte na e-mail z linkami do odpowiedzi. Zobacz commit c4d1629 |
CalDAV i CardDAV to protokoły umożliwiające dostęp, udostępnianie i synchronizację danych kalendarza i kontaktów na różnych urządzeniach.
Wsparcie CalDAV i CardDAV
| Protokół | RFC | Status | Opis |
|---|---|---|---|
| CalDAV | RFC 4791 | ✅ Obsługiwany | Dostęp i synchronizacja kalendarza |
| CardDAV | RFC 6352 | ✅ Obsługiwany | Dostęp i synchronizacja kontaktów |
| iCalendar | RFC 5545 | ✅ Obsługiwany | Format danych kalendarza |
| vCard | RFC 6350 | ✅ Obsługiwany | Format danych kontaktów |
| VTODO | RFC 5545 | ✅ Obsługiwany | Wsparcie zadań/przypomnień |
| Harmonogramowanie CalDAV | RFC 6638 | ✅ Obsługiwany | Rozszerzenia harmonogramowania |
| iTIP | RFC 5546 | ✅ Obsługiwany | Interoperacyjność niezależna od transportu |
| iMIP | RFC 6047 | ✅ Obsługiwany | Zaproszenia kalendarzowe oparte na e-mail |
CalDAV (Dostęp do kalendarza)
CalDAV pozwala na dostęp i zarządzanie kalendarzami z dowolnego urządzenia lub aplikacji.
Kluczowe funkcje:
- Synchronizacja na wielu urządzeniach
- Wspólne kalendarze
- Subskrypcje kalendarzy
- Zaproszenia na wydarzenia i odpowiedzi
- Wydarzenia cykliczne
- Obsługa stref czasowych
Kompatybilni klienci:
- Apple Calendar (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Calendar
- Każdy klient zgodny z CalDAV
CardDAV (Dostęp do kontaktów)
CardDAV pozwala na dostęp i zarządzanie kontaktami z dowolnego urządzenia lub aplikacji.
Kluczowe funkcje:
- Synchronizacja na wielu urządzeniach
- Wspólne książki adresowe
- Grupy kontaktów
- Obsługa zdjęć
- Pola niestandardowe
- Obsługa vCard 4.0
Kompatybilni klienci:
- Apple Contacts (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Contacts
- Każdy klient zgodny z CardDAV
Zadania i przypomnienia (CalDAV VTODO)
Tip
Forward Email obsługuje zadania i przypomnienia przez CalDAV VTODO.
VTODO jest częścią formatu iCalendar i pozwala na zarządzanie zadaniami przez CalDAV.
Kluczowe funkcje:
- Tworzenie i zarządzanie zadaniami
- Terminy i priorytety
- Śledzenie ukończenia zadań
- Zadania cykliczne
- Listy/kategorie zadań
Kompatybilni klienci:
- Apple Reminders (macOS, iOS)
- Mozilla Thunderbird (z Lightning)
- Evolution
- GNOME To Do
- Każdy klient CalDAV z obsługą VTODO
Przepływ synchronizacji CalDAV/CardDAV
Rozszerzenia kalendarza NIEOBSŁUGIWANE
Następujące rozszerzenia kalendarza NIE są obsługiwane:
| RFC | Tytuł | Powód |
|---|---|---|
| RFC 4918 | HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) | CalDAV używa koncepcji WebDAV, ale nie implementuje pełnego RFC 4918 |
| RFC 6578 | Collection Synchronization for WebDAV | Nie zaimplementowano |
| RFC 3744 | WebDAV Access Control Protocol | Nie zaimplementowano |
Filtrowanie wiadomości e-mail
Important
Forward Email zapewnia pełne wsparcie dla Sieve i ManageSieve do filtrowania wiadomości po stronie serwera. Twórz potężne reguły do automatycznego sortowania, filtrowania, przekazywania i odpowiadania na przychodzące wiadomości.
Sieve (RFC 5228)
Sieve to ustandaryzowany, potężny język skryptowy do filtrowania wiadomości po stronie serwera. Forward Email implementuje kompleksowe wsparcie Sieve z 24 rozszerzeniami.
Kod źródłowy: helpers/sieve/
Obsługiwane podstawowe RFC Sieve
| RFC | Tytuł | Status |
|---|---|---|
| RFC 5228 | Sieve: Język filtrowania wiadomości e-mail | ✅ Pełne wsparcie |
| RFC 5429 | Sieve Email Filtering: Reject and Extended Reject Extensions | ✅ Pełne wsparcie |
| RFC 5230 | Sieve Email Filtering: Vacation Extension | ✅ Pełne wsparcie |
| RFC 6131 | Sieve Vacation Extension: "Seconds" Parameter | ✅ Pełne wsparcie |
| RFC 5232 | Sieve Email Filtering: Imap4flags Extension | ✅ Pełne wsparcie |
| RFC 5173 | Sieve Email Filtering: Body Extension | ✅ Pełne wsparcie |
| RFC 5229 | Sieve Email Filtering: Variables Extension | ✅ Pełne wsparcie |
| RFC 5231 | Sieve Email Filtering: Relational Extension | ✅ Pełne wsparcie |
| RFC 4790 | Internet Application Protocol Collation Registry | ✅ Pełne wsparcie |
| RFC 3894 | Sieve Extension: Copying Without Side Effects | ✅ Pełne wsparcie |
| RFC 5293 | Sieve Email Filtering: Editheader Extension | ✅ Pełne wsparcie |
| RFC 5260 | Sieve Email Filtering: Date and Index Extensions | ✅ Pełne wsparcie |
| RFC 5435 | Sieve Email Filtering: Extension for Notifications | ✅ Pełne wsparcie |
| RFC 5183 | Sieve Email Filtering: Environment Extension | ✅ Pełne wsparcie |
| RFC 5490 | Sieve Email Filtering: Extensions for Checking Mailbox Status | ✅ Pełne wsparcie |
| RFC 8579 | Sieve Email Filtering: Delivering to Special-Use Mailboxes | ✅ Pełne wsparcie |
| RFC 7352 | Sieve Email Filtering: Detecting Duplicate Deliveries | ✅ Pełne wsparcie |
| RFC 5463 | Sieve Email Filtering: Ihave Extension | ✅ Pełne wsparcie |
| RFC 5233 | Sieve Email Filtering: Subaddress Extension | ✅ Pełne wsparcie |
| draft-ietf-sieve-regex | Sieve Email Filtering: Regular Expression Extension | ✅ Pełne wsparcie |
Obsługiwane rozszerzenia Sieve
| Rozszerzenie | Opis | Integracja |
|---|---|---|
fileinto |
Przenoszenie wiadomości do określonych folderów | Wiadomości przechowywane w wskazanym folderze IMAP |
reject / ereject |
Odrzucanie wiadomości z komunikatem o błędzie | Odrzucenie SMTP z wiadomością zwrotną |
vacation |
Automatyczne odpowiedzi urlopowe/poza biurem | Kolejkowane przez Emails.queue z ograniczeniem szybkości |
vacation-seconds |
Dokładne interwały odpowiedzi urlopowej | TTL z parametru :seconds |
imap4flags |
Ustawianie flag IMAP (\Seen, \Flagged itd.) | Flagi stosowane podczas przechowywania wiadomości |
envelope |
Testowanie nadawcy/odbiorcy koperty | Dostęp do danych koperty SMTP |
body |
Testowanie zawartości treści wiadomości | Dopasowanie pełnego tekstu treści |
variables |
Przechowywanie i używanie zmiennych w skryptach | Rozwijanie zmiennych z modyfikatorami |
relational |
Porównania relacyjne | :count, :value z gt/lt/eq |
comparator-i;ascii-numeric |
Porównania numeryczne | Porównanie ciągów numerycznych |
copy |
Kopiowanie wiadomości podczas przekierowywania | Flaga :copy przy fileinto/redirect |
editheader |
Dodawanie lub usuwanie nagłówków wiadomości | Modyfikacja nagłówków przed przechowywaniem |
date |
Testowanie wartości daty/czasu | Testy currentdate i daty nagłówka |
index |
Dostęp do konkretnych wystąpień nagłówków | :index dla nagłówków wielowartościowych |
regex |
Dopasowywanie wyrażeń regularnych | Pełne wsparcie regex w testach |
enotify |
Wysyłanie powiadomień | Powiadomienia mailto: przez Emails.queue |
environment |
Dostęp do informacji o środowisku | Domeny, host, remote-ip z sesji |
mailbox |
Testowanie istnienia skrzynki pocztowej | Test mailboxexists |
special-use |
Przenoszenie do specjalnych skrzynek pocztowych | Mapowanie \Junk, \Trash itd. na foldery |
duplicate |
Wykrywanie zduplikowanych wiadomości | Śledzenie duplikatów oparte na Redis |
ihave |
Testowanie dostępności rozszerzenia | Sprawdzanie możliwości w czasie wykonywania |
subaddress |
Dostęp do części adresu user+detail | Części adresu :user i :detail |
Rozszerzenia Sieve NIEOBSŁUGIWANE
| Rozszerzenie | RFC | Powód |
|---|---|---|
include |
RFC 6609 | Ryzyko bezpieczeństwa (wstrzyknięcie skryptu), wymaga globalnego przechowywania skryptów |
mboxmetadata / servermetadata |
RFC 5490 | Wymaga rozszerzenia IMAP METADATA |
fcc |
RFC 8580 | Wymaga integracji z folderem Wysłane |
encoded-character |
RFC 5228 | Wymaga zmian w parserze dla składni $ |
foreverypart / mime / extracttext |
RFC 5703 | Złożona manipulacja drzewem MIME |
Przepływ przetwarzania Sieve
Funkcje bezpieczeństwa
Implementacja Sieve w Forward Email zawiera kompleksowe zabezpieczenia:
- Ochrona przed CVE-2023-26430: Zapobiega pętlom przekierowań i atakom mail bombing
- Ograniczenia szybkości: Limity przekierowań (10/wiadomość, 100/dzień) oraz odpowiedzi wakacyjnych
- Sprawdzanie denylisty: Adresy przekierowań sprawdzane względem denylisty
- Chronione nagłówki: Nagłówki DKIM, ARC i uwierzytelniania nie mogą być modyfikowane przez editheader
- Limity rozmiaru skryptu: Wymuszany maksymalny rozmiar skryptu
- Limity czasu wykonania: Skrypty przerywane, jeśli przekroczą limit czasu wykonania
Przykładowe skrypty Sieve
Przenoszenie newsletterów do folderu:
require ["fileinto"];
if header :contains "List-Id" "newsletter" {
fileinto "Newsletters";
}
Automatyczna odpowiedź wakacyjna z precyzyjnym czasem:
require ["vacation", "vacation-seconds"];
vacation :seconds 3600 :subject "Out of Office"
"I'm currently away and will respond within 24 hours.";
Filtrowanie spamu z flagami:
require ["fileinto", "imap4flags"];
if header :contains "X-Spam-Status" "Yes" {
setflag "\\Seen";
fileinto "Junk";
}
Złożone filtrowanie z użyciem zmiennych:
require ["variables", "fileinto", "regex"];
if header :regex "From" "(.+)@example\\.com" {
set :lower "sender" "${1}";
fileinto "Contacts/${sender}";
}
Tip
Pełną dokumentację, przykładowe skrypty oraz instrukcje konfiguracji znajdziesz w FAQ: Czy obsługujecie filtrowanie wiadomości Sieve?
ManageSieve (RFC 5804)
Forward Email zapewnia pełne wsparcie protokołu ManageSieve do zdalnego zarządzania skryptami Sieve.
Kod źródłowy: managesieve-server.js
| RFC | Tytuł | Status |
|---|---|---|
| RFC 5804 | Protokół do zdalnego zarządzania skryptami Sieve | ✅ Pełne wsparcie |
Konfiguracja serwera ManageSieve
| Ustawienie | Wartość |
|---|---|
| Serwer | imap.forwardemail.net |
| Port (STARTTLS) | 2190 (zalecany) |
| Port (Implicit TLS) | 4190 |
| Uwierzytelnianie | PLAIN (przez TLS) |
Uwaga: Port 2190 używa STARTTLS (upgrade z plain do TLS) i jest kompatybilny z większością klientów ManageSieve, w tym z sieve-connect. Port 4190 używa implicit TLS (TLS od początku połączenia) dla klientów, którzy to obsługują.
Obsługiwane polecenia ManageSieve
| Polecenie | Opis |
|---|---|
AUTHENTICATE |
Uwierzytelnianie za pomocą mechanizmu PLAIN |
CAPABILITY |
Lista możliwości i rozszerzeń serwera |
HAVESPACE |
Sprawdzenie, czy skrypt może zostać zapisany |
PUTSCRIPT |
Przesłanie nowego skryptu |
LISTSCRIPTS |
Lista wszystkich skryptów z aktywnym statusem |
SETACTIVE |
Aktywacja skryptu |
GETSCRIPT |
Pobranie skryptu |
DELETESCRIPT |
Usunięcie skryptu |
RENAMESCRIPT |
Zmiana nazwy skryptu |
CHECKSCRIPT |
Walidacja składni skryptu |
NOOP |
Utrzymanie połączenia przy życiu |
LOGOUT |
Zakończenie sesji |
Kompatybilni klienci ManageSieve
- Thunderbird: Wbudowane wsparcie dla Sieve za pomocą dodatku Sieve
- Roundcube: wtyczka ManageSieve
- KMail: Natywne wsparcie ManageSieve
- sieve-connect: Klient wiersza poleceń
- Każdy klient zgodny z RFC 5804
Przebieg protokołu ManageSieve
Interfejs webowy i API
Oprócz ManageSieve, Forward Email oferuje:
- Panel webowy: Twórz i zarządzaj skryptami Sieve przez interfejs webowy w Moje konto → Domeny → Aliasy → Skrypty Sieve
- REST API: Programowy dostęp do zarządzania skryptami Sieve przez Forward Email API
Tip
Szczegółowe instrukcje konfiguracji i ustawień klienta znajdziesz w FAQ: Czy obsługujecie filtrowanie emaili za pomocą Sieve?
Optymalizacja przechowywania
Important
Pierwsza w branży technologia przechowywania: Forward Email jest jedynym dostawcą poczty na świecie, który łączy deduplikację załączników z kompresją Brotli zawartości emaili. Ta dwuwarstwowa optymalizacja daje Ci 2-3 razy więcej efektywnej przestrzeni dyskowej w porównaniu do tradycyjnych dostawców poczty.
Forward Email wdraża dwie rewolucyjne techniki optymalizacji przechowywania, które drastycznie zmniejszają rozmiar skrzynki pocztowej, zachowując pełną zgodność z RFC i integralność wiadomości:
- Deduplikacja załączników – eliminuje duplikaty załączników we wszystkich emailach
- Kompresja Brotli – zmniejsza zajętość miejsca o 46-86% dla metadanych i 50% dla załączników
Architektura: Dwuwarstwowa optymalizacja przechowywania
Deduplikacja załączników
Forward Email wdraża deduplikację załączników opartą na sprawdzonym podejściu WildDuck, dostosowanym do przechowywania w SQLite.
Note
Co jest deduplikowane: „Załącznik” odnosi się do zakodowanej zawartości węzła MIME (base64 lub quoted-printable), a nie do zdekodowanego pliku. Zapewnia to zachowanie ważności podpisów DKIM i GPG.
Jak to działa
Oryginalna implementacja WildDuck (MongoDB GridFS):
Serwer IMAP Wild Duck deduplikuje załączniki. „Załącznik” w tym przypadku oznacza zawartość węzła MIME zakodowaną base64 lub quoted-printable, a nie zdekodowany plik. Chociaż użycie zakodowanej zawartości powoduje wiele fałszywych negatywów (ten sam plik w różnych emailach może być liczony jako różne załączniki), jest to konieczne, aby zagwarantować ważność różnych schematów podpisów (DKIM, GPG itd.). Wiadomość pobrana z Wild Duck wygląda dokładnie tak samo jak wiadomość, która została zapisana, mimo że Wild Duck parsuje wiadomość do struktury drzewiastej i odbudowuje wiadomość podczas pobierania. Implementacja SQLite w Forward Email:
Forward Email adaptuje to podejście dla zaszyfrowanego przechowywania SQLite według następującego procesu:
- Obliczanie hasha: Gdy zostanie znaleziony załącznik, hash jest obliczany za pomocą biblioteki
rev-hashna podstawie treści załącznika - Wyszukiwanie: Sprawdzenie, czy załącznik o pasującym hashu istnieje w tabeli
Attachments - Liczenie referencji:
- Jeśli istnieje: Zwiększ licznik referencji o 1 oraz licznik magiczny o losową liczbę
- Jeśli nowy: Utwórz nowy wpis załącznika z licznikiem = 1
- Bezpieczeństwo usuwania: Używa systemu podwójnych liczników (referencyjny + magiczny), aby zapobiec fałszywym trafieniom
- Zbieranie śmieci: Załączniki są usuwane natychmiast, gdy oba liczniki osiągną zero
Kod źródłowy: helpers/attachment-storage.js
Przebieg deduplikacji
System liczb magicznych
Forward Email używa systemu "liczb magicznych" WildDuck (zainspirowanego przez Mail.ru) aby zapobiec fałszywym trafieniom podczas usuwania:
- Każdej wiadomości przypisywana jest losowa liczba
- Licznik magiczny załącznika jest zwiększany o tę losową liczbę, gdy wiadomość jest dodawana
- Licznik magiczny jest zmniejszany o tę samą liczbę, gdy wiadomość jest usuwana
- Załącznik jest usuwany tylko wtedy, gdy oba liczniki (referencyjny + magiczny) osiągną zero
Ten system podwójnych liczników zapewnia, że jeśli coś pójdzie nie tak podczas usuwania (np. awaria, błąd sieci), załącznik nie zostanie usunięty przedwcześnie.
Kluczowe różnice: WildDuck vs Forward Email
| Funkcja | WildDuck (MongoDB) | Forward Email (SQLite) |
|---|---|---|
| Backend przechowywania | MongoDB GridFS (dzielony na kawałki) | SQLite BLOB (bezpośredni) |
| Algorytm haszujący | SHA256 | rev-hash (oparty na SHA-256) |
| Liczenie referencji | ✅ Tak | ✅ Tak |
| Liczby magiczne | ✅ Tak (Mail.ru zainspirowane) | ✅ Tak (ten sam system) |
| Zbieranie śmieci | Opóźnione (osobne zadanie) | Natychmiastowe (przy zerowych licznikach) |
| Kompresja | ❌ Brak | ✅ Brotli (patrz niżej) |
| Szyfrowanie | ❌ Opcjonalne | ✅ Zawsze (ChaCha20-Poly1305) |
Kompresja Brotli
Important
Pierwszy na świecie: Forward Email jest jedyną usługą e-mail na świecie, która używa kompresji Brotli na zawartości e-maili. Zapewnia to 46-86% oszczędności miejsca oprócz deduplikacji załączników.
Forward Email implementuje kompresję Brotli zarówno dla treści załączników, jak i metadanych wiadomości, zapewniając ogromne oszczędności miejsca przy zachowaniu kompatybilności wstecznej.
Implementacja: helpers/msgpack-helpers.js
Co jest kompresowane
1. Treści załączników (encodeAttachmentBody)
- Stare formaty: ciąg znaków zakodowany w hex (2x rozmiar) lub surowy Buffer
- Nowy format: Buffer skompresowany Brotli z nagłówkiem magicznym "FEBR"
- Decyzja o kompresji: Kompresuje tylko jeśli oszczędza miejsce (uwzględnia 4-bajtowy nagłówek)
- Oszczędności miejsca: Do 50% (hex → natywny BLOB)
2. Metadane wiadomości (
encodeMetadata)
Zawiera: mimeTree, headers, envelope, flags
- Stary format: tekst JSON
- Nowy format: bufor skompresowany Brotli
- Oszczędność miejsca: 46-86% w zależności od złożoności wiadomości
Konfiguracja kompresji
// Opcje kompresji Brotli zoptymalizowane pod kątem szybkości (poziom 4 to dobry kompromis)
const BROTLI_COMPRESS_OPTIONS = {
params: {
[zlib.constants.BROTLI_PARAM_QUALITY]: 4
}
};
Dlaczego poziom 4?
- Szybka kompresja/dekompresja: przetwarzanie poniżej milisekundy
- Dobry współczynnik kompresji: oszczędność 46-86%
- Zrównoważona wydajność: optymalna dla operacji e-mail w czasie rzeczywistym
Magiczny nagłówek: "FEBR"
Forward Email używa 4-bajtowego magicznego nagłówka do identyfikacji skompresowanych treści załączników:
"FEBR" = Forward Email BRotli
Hex: 0x46 0x45 0x42 0x52
Dlaczego magiczny nagłówek?
- Wykrywanie formatu: natychmiastowa identyfikacja danych skompresowanych i nieskompresowanych
- Zachowanie kompatybilności wstecznej: stare ciągi hex i surowe bufory nadal działają
- Unikanie kolizji: "FEBR" jest mało prawdopodobne, aby pojawiło się na początku prawidłowych danych załącznika
Proces kompresji
Proces dekompresji
Kompatybilność wsteczna
Wszystkie funkcje dekodujące automatycznie wykrywają format przechowywania:
| Format | Metoda wykrywania | Obsługa |
|---|---|---|
| Skompresowany Brotli | Sprawdzenie magicznego nagłówka "FEBR" | Dekompresja za pomocą zlib.brotliDecompressSync() |
| Surowy bufor | Buffer.isBuffer() bez nagłówka |
Zwrócenie bez zmian |
| Ciąg hex | Sprawdzenie parzystej długości + znaki [0-9a-f] | Dekodowanie Buffer.from(value, 'hex') |
| Ciąg JSON | Sprawdzenie pierwszego znaku { lub [ |
Parsowanie JSON.parse() |
Zapewnia to brak utraty danych podczas migracji ze starych do nowych formatów przechowywania.
Statystyki oszczędności miejsca
Zmierzona oszczędność na podstawie danych produkcyjnych:
| Typ danych | Stary format | Nowy format | Oszczędność |
|---|---|---|---|
| Treści załączników | ciąg hex (2x) | skompresowany BLOB Brotli | 50% |
| Metadane wiadomości | tekst JSON | skompresowany BLOB Brotli | 46-86% |
| Flagi skrzynki | tekst JSON | skompresowany BLOB Brotli | 60-80% |
Źródło: helpers/migrate-storage-format.js
Proces migracji
Forward Email zapewnia automatyczną, idempotentną migrację ze starych do nowych formatów przechowywania: // Statystyki migracji śledzone: { attachmentsMigrated: 0, messagesMigrated: 0, mailboxesMigrated: 0, bytesSaved: 0 // Całkowita liczba bajtów zaoszczędzonych dzięki kompresji }
**Kroki migracji:**
1. Treści załączników: kodowanie szesnastkowe → natywny BLOB (50% oszczędności)
2. Metadane wiadomości: tekst JSON → BLOB skompresowany Brotli (46-86% oszczędności)
3. Flagi skrzynki pocztowej: tekst JSON → BLOB skompresowany Brotli (60-80% oszczędności)
**Źródło:** [`helpers/migrate-storage-format.js`](https://github.com/forwardemail/forwardemail.net/blob/master/helpers/migrate-storage-format.js)
---
### Wydajność połączonego przechowywania {#combined-storage-efficiency}
> \[!TIP]
> **Rzeczywisty wpływ:** Dzięki deduplikacji załączników + kompresji Brotli użytkownicy Forward Email uzyskują **2-3x bardziej efektywne przechowywanie** w porównaniu do tradycyjnych dostawców poczty.
**Przykładowy scenariusz:**
Tradycyjny dostawca poczty (skrzynka 1GB):
* 1GB miejsca na dysku = 1GB wiadomości
* Brak deduplikacji: Ten sam załącznik przechowywany 10 razy = 10x marnotrawstwo miejsca
* Brak kompresji: Pełne metadane JSON przechowywane = 2-3x marnotrawstwo miejsca
Forward Email (skrzynka 1GB):
* 1GB miejsca na dysku ≈ **2-3GB wiadomości** (efektywne przechowywanie)
* Deduplikacja: Ten sam załącznik przechowywany raz, odwoływany 10 razy
* Kompresja: 46-86% oszczędności na metadanych, 50% na załącznikach
* Szyfrowanie: ChaCha20-Poly1305 (bez narzutu na miejsce)
**Tabela porównawcza:**
| Dostawca | Technologia przechowywania | Efektywne przechowywanie (skrzynka 1GB) |
| ----------------- | -------------------------------------------- | --------------------------------------- |
| Gmail | Brak | 1GB |
| iCloud | Brak | 1GB |
| Outlook.com | Brak | 1GB |
| Fastmail | Brak | 1GB |
| ProtonMail | Tylko szyfrowanie | 1GB |
| Tutanota | Tylko szyfrowanie | 1GB |
| **Forward Email** | **Deduplikacja + Kompresja + Szyfrowanie** | **2-3GB** ✨ |
### Szczegóły technicznej implementacji {#technical-implementation-details}
**Wydajność:**
* Brotli poziom 4: kompresja/dekompresja poniżej milisekundy
* Brak spadku wydajności z powodu kompresji
* SQLite FTS5: wyszukiwanie poniżej 50ms na NVMe SSD
**Bezpieczeństwo:**
* Kompresja odbywa się **po** szyfrowaniu (baza SQLite jest zaszyfrowana)
* Szyfrowanie ChaCha20-Poly1305 + kompresja Brotli
* Zero-knowledge: tylko użytkownik posiada hasło do odszyfrowania
**Zgodność z RFC:**
* Pobierane wiadomości wyglądają **dokładnie tak samo** jak przechowywane
* Podpisy DKIM pozostają ważne (zachowana zakodowana zawartość)
* Podpisy GPG pozostają ważne (brak modyfikacji podpisanej zawartości)
### Dlaczego żaden inny dostawca tego nie robi {#why-no-other-provider-does-this}
**Złożoność:**
* Wymaga głębokiej integracji z warstwą przechowywania
* Trudna kompatybilność wsteczna
* Migracja ze starych formatów jest skomplikowana
**Obawy dotyczące wydajności:**
* Kompresja dodaje obciążenie CPU (rozwiązane dzięki Brotli poziom 4)
* Dekompresja przy każdym odczycie (rozwiązane dzięki cache SQLite)
**Przewaga Forward Email:**
* Zbudowany od podstaw z myślą o optymalizacji
* SQLite pozwala na bezpośrednią manipulację BLOB
* Zaszyfrowane bazy danych na użytkownika umożliwiają bezpieczną kompresję
---
---
## Nowoczesne funkcje {#modern-features}
## Kompletny REST API do zarządzania pocztą {#complete-rest-api-for-email-management}
> \[!TIP]
> Forward Email oferuje kompleksowe REST API z 39 endpointami do programowego zarządzania pocztą.
> \[!TIP]
> **Unikalna cecha branżowa:** W przeciwieństwie do wszystkich innych usług e-mail, Forward Email zapewnia pełny programowy dostęp do Twojej skrzynki, kalendarza, kontaktów, wiadomości i folderów za pomocą kompleksowego REST API. To bezpośrednia interakcja z zaszyfrowanym plikiem bazy SQLite przechowującym wszystkie Twoje dane.
Forward Email oferuje kompletny REST API, który zapewnia bezprecedensowy dostęp do Twoich danych e-mail. Żadna inna usługa e-mail (w tym Gmail, iCloud, Outlook, ProtonMail, Tuta czy Fastmail) nie oferuje takiego poziomu kompleksowego, bezpośredniego dostępu do bazy danych.
**Dokumentacja API:** <https://forwardemail.net/en/email-api>
### Kategorie API (39 punktów końcowych) {#api-categories-39-endpoints}
**1. API Wiadomości** (5 punktów końcowych) - Pełne operacje CRUD na wiadomościach e-mail:
* `GET /v1/messages` - Lista wiadomości z 15+ zaawansowanymi parametrami wyszukiwania (żaden inny serwis tego nie oferuje)
* `POST /v1/messages` - Tworzenie/wysyłanie wiadomości
* `GET /v1/messages/:id` - Pobierz wiadomość
* `PUT /v1/messages/:id` - Aktualizuj wiadomość (flagi, foldery)
* `DELETE /v1/messages/:id` - Usuń wiadomość
*Przykład: Znajdź wszystkie faktury z ostatniego kwartału z załącznikami:*
```bash
curl -u "alias@domain.com:password" \
"https://api.forwardemail.net/v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01"
Zobacz Dokumentację Zaawansowanego Wyszukiwania
2. API Folderów (5 punktów końcowych) - Pełne zarządzanie folderami IMAP przez REST:
GET /v1/folders- Lista wszystkich folderówPOST /v1/folders- Utwórz folderGET /v1/folders/:id- Pobierz folderPUT /v1/folders/:id- Aktualizuj folderDELETE /v1/folders/:id- Usuń folder
3. API Kontaktów (5 punktów końcowych) - Przechowywanie kontaktów CardDAV przez REST:
GET /v1/contacts- Lista kontaktówPOST /v1/contacts- Utwórz kontakt (format vCard)GET /v1/contacts/:id- Pobierz kontaktPUT /v1/contacts/:id- Aktualizuj kontaktDELETE /v1/contacts/:id- Usuń kontakt
4. API Kalendarzy (5 punktów końcowych) - Zarządzanie kontenerami kalendarzy:
GET /v1/calendars- Lista kontenerów kalendarzyPOST /v1/calendars- Utwórz kalendarz (np. "Kalendarz Pracy", "Kalendarz Osobisty")GET /v1/calendars/:id- Pobierz kalendarzPUT /v1/calendars/:id- Aktualizuj kalendarzDELETE /v1/calendars/:id- Usuń kalendarz
5. API Wydarzeń Kalendarza (5 punktów końcowych) - Planowanie wydarzeń w kalendarzach:
GET /v1/calendar-events- Lista wydarzeńPOST /v1/calendar-events- Utwórz wydarzenie z uczestnikamiGET /v1/calendar-events/:id- Pobierz wydarzeniePUT /v1/calendar-events/:id- Aktualizuj wydarzenieDELETE /v1/calendar-events/:id- Usuń wydarzenie
Przykład: Utwórz wydarzenie w kalendarzu:
curl -u "alias@domain.com:password" \
-X POST \
-H "Content-Type: application/json" \
-d '{"title":"Spotkanie zespołu","start":"2024-12-20T10:00:00Z","attendees":["team@example.com"],"calendar_id":"calendar123"}' \
https://api.forwardemail.net/v1/calendar-events
Szczegóły techniczne
- Uwierzytelnianie: Proste uwierzytelnianie
alias:password(bez złożoności OAuth) - Wydajność: Czas odpowiedzi poniżej 50 ms dzięki SQLite FTS5 i pamięci NVMe SSD
- Brak opóźnień sieciowych: Bezpośredni dostęp do bazy danych, bez pośrednictwa zewnętrznych usług
Przykłady zastosowań w praktyce
-
Analiza e-maili: Twórz niestandardowe pulpity śledzące wolumen e-maili, czasy odpowiedzi, statystyki nadawców
-
Automatyczne przepływy pracy: Wyzwalaj akcje na podstawie treści e-maili (przetwarzanie faktur, zgłoszenia wsparcia)
-
Integracja CRM: Automatyczna synchronizacja rozmów e-mail z CRM
-
Zgodność i odkrywanie: Wyszukiwanie i eksport e-maili dla wymagań prawnych/zgodności
-
Niestandardowe klienty e-mail: Twórz specjalistyczne interfejsy e-mail dla swojego workflow
-
Business Intelligence: Analizuj wzorce komunikacji, wskaźniki odpowiedzi, zaangażowanie klientów
-
Zarządzanie dokumentami: Automatyczne wyodrębnianie i kategoryzacja załączników
Forward Email oferuje nowoczesne REST API, które zapewnia pełną kontrolę nad kontami e-mail, domenami, aliasami i wiadomościami. To API stanowi potężną alternatywę dla JMAP i oferuje funkcjonalności wykraczające poza tradycyjne protokoły e-mail.
| Kategoria | Punkty końcowe | Opis |
|---|---|---|
| Zarządzanie kontem | 8 | Konta użytkowników, uwierzytelnianie, ustawienia |
| Zarządzanie domeną | 12 | Domeny niestandardowe, DNS, weryfikacja |
| Zarządzanie aliasami | 6 | Aliasy e-mail, przekierowania, catch-all |
| Zarządzanie wiadomościami | 7 | Wysyłanie, odbieranie, wyszukiwanie, usuwanie wiadomości |
| Kalendarze i kontakty | 4 | Dostęp CalDAV/CardDAV przez API |
| Logi i analityka | 2 | Logi e-mail, raporty dostarczenia |
Kluczowe funkcje API
Zaawansowane wyszukiwanie:
API oferuje potężne możliwości wyszukiwania z składnią zapytań podobną do Gmail:
GET /v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01
Obsługiwane operatory wyszukiwania:
from:- Wyszukiwanie po nadawcyto:- Wyszukiwanie po odbiorcysubject:- Wyszukiwanie po temaciehas:attachment- Wiadomości z załącznikamiis:unread- Nieprzeczytane wiadomościis:starred- Oznaczone gwiazdką wiadomościafter:- Wiadomości po daciebefore:- Wiadomości przed datąlabel:- Wiadomości z etykietąfilename:- Nazwa pliku załącznika
Zarządzanie wydarzeniami kalendarza:
GET /v1/calendar-events
POST /v1/calendar-events
PUT /v1/calendar-events/:id
DELETE /v1/calendar-events/:id
Integracje Webhook:
API obsługuje webhooki do powiadomień w czasie rzeczywistym o zdarzeniach e-mail (odebrane, wysłane, zwrócone itp.).
Uwierzytelnianie:
- Uwierzytelnianie kluczem API
- Obsługa OAuth 2.0
- Ograniczenie liczby zapytań: 1000 zapytań/godzinę
Format danych:
- Żądania/odpowiedzi w formacie JSON
- Projekt RESTful
- Obsługa paginacji
Bezpieczeństwo:
- Tylko HTTPS
- Rotacja kluczy API
- Biała lista adresów IP (opcjonalnie)
- Podpisywanie żądań (opcjonalnie)
Architektura API
Powiadomienia push iOS
Tip
Forward Email obsługuje natywne powiadomienia push iOS przez XAPPLEPUSHSERVICE dla natychmiastowej dostawy e-maili.
Important
Unikalna funkcja: Forward Email jest jednym z nielicznych otwartoźródłowych serwerów e-mail, które obsługują natywne powiadomienia push iOS dla e-maili, kontaktów i kalendarzy za pomocą rozszerzenia IMAP XAPPLEPUSHSERVICE. Zostało to odtworzone na podstawie protokołu Apple i zapewnia natychmiastową dostawę na urządzenia iOS bez zużycia baterii.
Forward Email implementuje własnościowe rozszerzenie Apple XAPPLEPUSHSERVICE, zapewniając natywne powiadomienia push dla urządzeń iOS bez konieczności tła odpytywania.
Jak to działa
XAPPLEPUSHSERVICE to niestandardowe rozszerzenie IMAP, które pozwala aplikacji Mail na iOS otrzymywać natychmiastowe powiadomienia push, gdy pojawią się nowe e-maile.
Forward Email implementuje własnościową integrację Apple Push Notification service (APNs) dla IMAP, umożliwiając aplikacji Mail na iOS otrzymywanie natychmiastowych powiadomień push o nowych wiadomościach.
Kluczowe funkcje
Natychmiastowa dostawa:
- Powiadomienia push przychodzą w ciągu sekund
- Brak energochłonnego odpytywania w tle
- Działa nawet gdy aplikacja Mail jest zamknięta
-
Natychmiastowa dostawa: E-maile, wydarzenia kalendarza i kontakty pojawiają się na iPhonie/iPadzie natychmiast, a nie według harmonogramu odpytywania
-
Oszczędność baterii: Wykorzystuje infrastrukturę push Apple zamiast utrzymywania stałych połączeń IMAP
-
Push oparte na tematach: Obsługuje powiadomienia push dla konkretnych skrzynek, nie tylko INBOX
-
Brak potrzeby aplikacji firm trzecich: Działa z natywnymi aplikacjami Mail, Kalendarz i Kontakty na iOS Natychmiastowa integracja:
-
Wbudowana w aplikację Mail na iOS
-
Nie wymaga aplikacji firm trzecich
-
Płynne doświadczenie użytkownika
Skoncentrowane na prywatności:
- Tokeny urządzeń są szyfrowane
- Żadna treść wiadomości nie jest przesyłana przez APNS
- Wysyłane jest tylko powiadomienie o "nowej poczcie"
Efektywność baterii:
- Brak ciągłego odpytywania IMAP
- Urządzenie śpi do momentu nadejścia powiadomienia
- Minimalny wpływ na baterię
Co czyni to wyjątkowym
Important
Większość dostawców poczty nie obsługuje XAPPLEPUSHSERVICE, zmuszając urządzenia iOS do odpytywania o nową pocztę co 15 minut.
Większość serwerów pocztowych open-source (w tym Dovecot, Postfix, Cyrus IMAP) NIE obsługuje powiadomień push na iOS. Użytkownicy muszą albo:
- Korzystać z IMAP IDLE (utrzymuje otwarte połączenie, zużywa baterię)
- Korzystać z odpytywania (sprawdza co 15-30 minut, opóźnione powiadomienia)
- Korzystać z własnych aplikacji pocztowych z własną infrastrukturą push
Forward Email zapewnia takie samo natychmiastowe powiadomienie push jak usługi komercyjne, takie jak Gmail, iCloud i Fastmail.
Porównanie z innymi dostawcami:
| Dostawca | Obsługa push | Interwał odpytywania | Wpływ na baterię |
|---|---|---|---|
| Forward Email | ✅ Natychmiastowy push | Natychmiastowy | Minimalny |
| Gmail | ✅ Natychmiastowy push | Natychmiastowy | Minimalny |
| iCloud | ✅ Natychmiastowy push | Natychmiastowy | Minimalny |
| Yahoo | ✅ Natychmiastowy push | Natychmiastowy | Minimalny |
| Outlook.com | ❌ Odpytywanie | 15 minut | Umiarkowany |
| Fastmail | ❌ Odpytywanie | 15 minut | Umiarkowany |
| ProtonMail | ⚠️ Tylko przez Bridge | Przez Bridge | Wysoki |
| Tutanota | ❌ Tylko aplikacja | N/D | N/D |
Szczegóły implementacji
Odpowiedź CAPABILITY IMAP:
* CAPABILITY IMAP4rev1 ... XAPPLEPUSHSERVICE ...
Proces rejestracji:
- Aplikacja Mail na iOS wykrywa możliwość XAPPLEPUSHSERVICE
- Aplikacja rejestruje token urządzenia w Forward Email
- Forward Email przechowuje token i kojarzy go z kontem
- Gdy nadejdzie nowa poczta, Forward Email wysyła powiadomienie push przez APNS
- iOS budzi aplikację Mail, aby pobrała nowe wiadomości
Bezpieczeństwo:
- Tokeny urządzeń są szyfrowane w stanie spoczynku
- Tokeny wygasają i są automatycznie odnawiane
- Żadna treść wiadomości nie jest ujawniana APNS
- Zachowane jest szyfrowanie end-to-end
- Rozszerzenie IMAP:
XAPPLEPUSHSERVICE - Kod źródłowy: WildDuck Issue #711
- Konfiguracja: Automatyczna - brak potrzeby konfiguracji, działa od razu z aplikacją Mail na iOS
Porównanie z innymi usługami
| Usługa | Obsługa push na iOS | Metoda |
|---|---|---|
| Forward Email | ✅ Tak | XAPPLEPUSHSERVICE (odwrotna inżynieria) |
| Gmail | ✅ Tak | Własna aplikacja Gmail + push Google |
| iCloud Mail | ✅ Tak | Natywna integracja Apple |
| Outlook.com | ✅ Tak | Własna aplikacja Outlook + push Microsoft |
| Fastmail | ✅ Tak | XAPPLEPUSHSERVICE |
| Dovecot | ❌ Nie | Tylko IMAP IDLE lub odpytywanie |
| Postfix | ❌ Nie | Tylko IMAP IDLE lub odpytywanie |
| Cyrus IMAP | ❌ Nie | Tylko IMAP IDLE lub odpytywanie |
Push Gmail:
Gmail używa własnego systemu push, który działa tylko z aplikacją Gmail. Aplikacja Mail na iOS musi odpytywać serwery IMAP Gmaila.
Push iCloud:
iCloud ma natywną obsługę push podobną do Forward Email, ale tylko dla adresów @icloud.com.
Outlook.com nie obsługuje XAPPLEPUSHSERVICE, co wymaga od aplikacji Mail na iOS odpytywania co 15 minut.
Fastmail:
Fastmail nie obsługuje XAPPLEPUSHSERVICE. Użytkownicy muszą korzystać z aplikacji Fastmail, aby otrzymywać powiadomienia push lub zaakceptować opóźnienia wynikające z odpytywania co 15 minut.
Testowanie i weryfikacja
Testy możliwości protokołu
Note
Ta sekcja zawiera wyniki naszych najnowszych testów możliwości protokołu, przeprowadzonych 22 stycznia 2026 roku.
Ta sekcja zawiera rzeczywiste odpowiedzi CAPABILITY/CAPA/EHLO od wszystkich testowanych dostawców. Wszystkie testy zostały przeprowadzone 22 stycznia 2026 roku.
Testy te pomagają zweryfikować deklarowane i rzeczywiste wsparcie dla różnych protokołów i rozszerzeń poczty elektronicznej wśród głównych dostawców.
Metodologia testów
Środowisko testowe:
- Data: 22 stycznia 2026 o 02:37 UTC
- Lokalizacja: instancja AWS EC2
- IPv4: 54.167.216.197
- IPv6: 2600:4040:46da:9a00:b19e:3ad4:426c:2f48
- Narzędzia: OpenSSL s_client, skrypty bash
Testowani dostawcy:
- Forward Email
- Gmail
- Outlook.com
- iCloud
- Fastmail
- Yahoo/AOL (Verizon)
Skrypty testowe
Dla pełnej przejrzystości poniżej podano dokładne skrypty użyte do tych testów.
Skrypt testu możliwości IMAP
#!/bin/bash
# IMAP Capability Test Script
# Tests IMAP CAPABILITY for various email providers
echo "========================================="
echo "IMAP CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (imap.gmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.gmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect outlook.office365.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# iCloud
echo "--- iCloud (imap.mail.me.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.me.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Fastmail
echo "--- Fastmail (imap.fastmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.fastmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Yahoo
echo "--- Yahoo (imap.mail.yahoo.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.yahoo.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Forward Email
echo "--- Forward Email (imap.forwardemail.net:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.forwardemail.net:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
Skrypt testu możliwości POP3
#!/bin/bash
# POP3 Capability Test Script
# Tests POP3 CAPA for various email providers
echo "========================================="
echo "POP3 CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (pop.gmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.gmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect outlook.office365.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# iCloud (Uwaga: iCloud nie obsługuje POP3)
echo "--- iCloud (No POP3 support) ---"
echo "iCloud nie obsługuje POP3"
echo ""
# Fastmail
echo "--- Fastmail (pop.fastmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.fastmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Yahoo
echo "--- Yahoo (pop.mail.yahoo.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.mail.yahoo.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Forward Email
echo "--- Forward Email (pop3.forwardemail.net:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop3.forwardemail.net:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
Skrypt testowy możliwości SMTP
#!/bin/bash
# Skrypt testowy możliwości SMTP
# Testuje SMTP EHLO dla różnych dostawców poczty
echo "========================================="
echo "TEST MOŻLIWOŚCI SMTP"
echo "Data: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (smtp.gmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.gmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Outlook.com
echo "--- Outlook.com (smtp.office365.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.office365.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# iCloud
echo "--- iCloud (smtp.mail.me.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.me.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Fastmail
echo "--- Fastmail (smtp.fastmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.fastmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Yahoo
echo "--- Yahoo (smtp.mail.yahoo.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.yahoo.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Forward Email
echo "--- Forward Email (smtp.forwardemail.net:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.forwardemail.net:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
echo "========================================="
echo "Test zakończony"
echo "========================================="
Podsumowanie wyników testu
IMAP (MOŻLIWOŚCI)
Forward Email
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN ENABLE ID IDLE NAMESPACE QUOTA SASL-IR UNSELECT XLIST XAPPLEPUSHSERVICE
Gmail
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE
iCloud
* OK [CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2]
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
Fastmail
* CAPABILITY IMAP4rev1 ACL ANNOTATE-EXPERIMENT-1 CATENATE CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGINDISABLED MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN X-RENAME XLIST
Yahoo/AOL (Verizon)
* CAPABILITY IMAP4rev1 IDLE NAMESPACE QUOTA ID XLIST CHILDREN UIDPLUS MOVE CONDSTORE ESEARCH ENABLE LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE UNSELECT XAPPLEPUSHSERVICE
POP3 (CAPA)
Forward Email
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION ForwardEmail
.
Gmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Gpop
.
+OK
CAPA
TOP
USER
UIDL
SASL PLAIN XOAUTH2
.
Fastmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Cyrus
.
SMTP (EHLO)
Forward Email
250-smtp.forwardemail.net
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Gmail
250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
250-SN4PR13CA0005.outlook.office365.com Hello [x.x.x.x]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8
Fastmail
250-smtp.fastmail.com
250-PIPELINING
250-SIZE 78643200
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Yahoo/AOL (Verizon)
250-smtp.mail.yahoo.com
250-PIPELINING
250-SIZE 41943040
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-STARTTLS
Szczegółowe Wyniki Testów
Wyniki Testów IMAP
Gmail:
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER
Outlook.com:
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
iCloud:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2
Fastmail: Połączenie przekroczyło limit czasu. Zobacz uwagi poniżej.
Yahoo:
* CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN UNSELECT X-MSG-EXT OBJECTID IDLE ENABLE UIDONLY X-ALL-MAIL X-UIDONLY LIST-EXTENDED LIST-STATUS SPECIAL-USE PARTIAL APPENDLIMIT=41697280
Forward Email:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4rev1 APPENDLIMIT=52428800 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN CONDSTORE ENABLE ID IDLE MOVE NAMESPACE QUOTA SASL-IR SPECIAL-USE UIDPLUS UNSELECT UTF8=ACCEPT XLIST
Wyniki Testów POP3
Gmail: Połączenie nie zwróciło odpowiedzi CAPA bez uwierzytelnienia.
Outlook.com: Połączenie nie zwróciło odpowiedzi CAPA bez uwierzytelnienia.
iCloud: Nieobsługiwane.
Fastmail: Połączenie przekroczyło limit czasu. Zobacz uwagi poniżej.
Yahoo:
+OK CAPA list follows... SASL PLAIN XOAUTH2
Forward Email: Połączenie nie zwróciło odpowiedzi CAPA bez uwierzytelnienia.
Wyniki Testów SMTP
Gmail:
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
Outlook.com:
250-DSN
iCloud:
250-DSN
Fastmail:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Yahoo:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Forward Email:
250-DSN, 250-REQUIRETLS
Uwagi do Wyników Testów
Note
Ważne obserwacje i ograniczenia wynikające z testów.
-
Timeouty Fastmail: Połączenia z Fastmail przekroczyły limit czasu podczas testów, prawdopodobnie z powodu ograniczeń szybkości lub zapór sieciowych na IP serwera testowego. Fastmail jest znany z solidnego wsparcia IMAP/POP3/SMTP na podstawie ich dokumentacji.
-
Odpowiedzi CAPA POP3: Kilku dostawców (Gmail, Outlook.com, Forward Email) nie zwróciło odpowiedzi CAPA bez uwierzytelnienia. Jest to powszechna praktyka bezpieczeństwa dla serwerów POP3.
-
Wsparcie DSN: Tylko Outlook.com, iCloud i Forward Email wyraźnie reklamują wsparcie DSN w odpowiedziach SMTP EHLO. Nie oznacza to, że inni dostawcy nie obsługują DSN, ale nie reklamują tego.
-
REQUIRETLS: Tylko Forward Email wyraźnie reklamuje wsparcie REQUIRETLS z widocznym dla użytkownika polem wyboru wymuszającym TLS. Inni dostawcy mogą to wspierać wewnętrznie, ale nie reklamują tego w EHLO.
-
Środowisko testowe: Testy przeprowadzono z instancji AWS EC2 (IP: 54.167.216.197 IPv4, 2600:4040:46da:9a00:b19e:3ad4:426c:2f48 IPv6) 22 stycznia 2026 o 02:37 UTC.
Podsumowanie
Forward Email zapewnia kompleksowe wsparcie protokołów RFC dla wszystkich głównych standardów pocztowych:
- IMAP4rev1: 16 obsługiwanych RFC z udokumentowanymi celowymi różnicami
- POP3: 4 obsługiwane RFC z usuwaniem trwałym zgodnym z RFC
- SMTP: 11 obsługiwanych rozszerzeń, w tym SMTPUTF8, DSN i PIPELINING
- Uwierzytelnianie: Pełne wsparcie DKIM, SPF, DMARC, ARC
- Bezpieczeństwo transportu: Pełne wsparcie MTA-STS i REQUIRETLS, częściowe wsparcie DANE
- Szyfrowanie: Wsparcie OpenPGP v6 i S/MIME
- Kalendarze: Pełne wsparcie CalDAV, CardDAV i VTODO
- Dostęp API: Kompletny REST API z 39 punktami końcowymi do bezpośredniego dostępu do bazy danych
- Push iOS: Natychmiastowe powiadomienia push dla poczty, kontaktów i kalendarzy przez
XAPPLEPUSHSERVICE
Kluczowe Cechy Wyróżniające
Tip
Forward Email wyróżnia się unikalnymi funkcjami, których nie znajdziesz u innych dostawców.
Co wyróżnia Forward Email:
- Szyfrowanie Quantum-Safe – jedyny dostawca z zaszyfrowanymi skrzynkami SQLite ChaCha20-Poly1305
- Architektura Zero-Knowledge – Twoje hasło szyfruje skrzynkę; nie możemy jej odszyfrować
- Darmowe domeny niestandardowe – brak miesięcznych opłat za e-mail na własnej domenie
- Wsparcie REQUIRETLS – widoczne dla użytkownika pole wyboru wymuszające TLS na całej ścieżce dostarczenia
- Kompleksowe API – 39 punktów końcowych REST API do pełnej kontroli programistycznej
- Powiadomienia push iOS – natywne wsparcie XAPPLEPUSHSERVICE dla natychmiastowej dostawy
- Open Source – pełny kod źródłowy dostępny na GitHub
- Skupienie na prywatności – brak analizy danych, brak reklam, brak śledzenia
- Szyfrowanie w piaskownicy: Jedyna usługa e-mail z indywidualnie szyfrowanymi skrzynkami SQLite
- Zgodność z RFC: Priorytetem jest zgodność ze standardami nad wygodą (np. POP3 DELE)
- Kompletny API: Bezpośredni dostęp programistyczny do wszystkich danych e-mail
- Open Source: W pełni przejrzysta implementacja
Podsumowanie wsparcia protokołów:
| Kategoria | Poziom wsparcia | Szczegóły |
|---|---|---|
| Protokoły podstawowe | ✅ Doskonałe | Pełne wsparcie IMAP4rev1, POP3, SMTP |
| Protokoły nowoczesne | ⚠️ Częściowe | Częściowe wsparcie IMAP4rev2, brak wsparcia JMAP |
| Bezpieczeństwo | ✅ Doskonałe | DKIM, SPF, DMARC, ARC, MTA-STS, REQUIRETLS |
| Szyfrowanie | ✅ Doskonałe | OpenPGP, S/MIME, szyfrowanie SQLite |
| CalDAV/CardDAV | ✅ Doskonałe | Pełna synchronizacja kalendarza i kontaktów |
| Filtrowanie | ✅ Doskonałe | Sieve (24 rozszerzenia) oraz ManageSieve |
| API | ✅ Doskonałe | 39 punktów końcowych REST API |
| Push | ✅ Doskonałe | Natywne powiadomienia push na iOS |