Opravy a servis hlavicka
podpora objednat

MailboxServer

SMTP relay server pro hromadné odesílání e-mailů s odloženým zpracováním

O projektu

MailboxServer je poštovní systém, který funguje jako příchozí SMTP server a odesílací frontový procesor. Přijímá e-maily od libovolných SMTP klientů, ukládá je do databázové fronty na Microsoft SQL Serveru a v nastavitelných intervalech je odesílá přes volitelné externí SMTP relay servery (s podporou TLS/SSL a SMTP AUTH). Díky důmyslné správě fronty s prioritizací podle počtu chyb a individuálním odesíláním každému příjemci zvlášť je ideální pro rozesílku zpravodajů, notifikací a hromadných kampaní.

Architektura systému

FakeSmtpServicesc

Příchozí SMTP server běžící na konfigurovatelném portu (výchozí 25). Přijímá e-maily od libovolného odesílatele bez autentizace. Každý e-mail uloží do tabulky EmailBody jako raw EML data a pro každého obálkového příjemce (RCPT TO) vytvoří samostatnou frontovou položku v EmailQueue. Vše probíhá atomicky v jedné SQL transakci.

mailboxss

Odesílací frontový procesor. V nastavitelných intervalech vybírá z EmailQueue jednotlivé zprávy (prioritou: nejméně chyb, nejdříve příchozí) a odesílá je přes externí SMTP relay (primární/záložní, STARTTLS, SMTP AUTH). Při úspěchu zprávu z fronty odstraní, při chybě inkrementuje počítadlo ErrorCount a odsune zprávu na konec. Přesměruje Reply-To na původního odesílatele a From přepíše na SMTP uživatelské jméno, čímž předchází zamítnutí relay serverem.

fronta (dashboard)

Monitorovací dashboard pro přehled fronty. Zobrazuje aktuální počty čekajících a odeslaných zpráv a umožňuje správci přepínat mezi primárním a záložním SMTP relay serverem za běhu bez restartu služeb (změna se projeví při příštím cyklu mailboxss).

tester

Plnohodnotný administrační nástroj. Umožňuje ruční skládání e-mailů do fronty (včetně HTML obsahu a příloh s Base64 kódováním), kompletní konfiguraci všech parametrů systému (SMTP relay, porty, TLS, intervaly, limity chyb), správu Windows služeb (instalace/odinstalace/spuštění/zastavení), vytvoření databázového schématu, mazání fronty a resetování chybových počítadel.

Tok zprávy systémem

  1. E-mailový klient odešle zprávu na FakeSmtpService (např. na port 25)
  2. SMTP server přijme RAW data zprávy, uloží je do tabulky EmailBody
  3. Pro každého obálkového příjemce (RCPT TO) vytvoří záznam v EmailQueue – jeden e-mail pro tisíc příjemců = jeden EmailBody + tisíc řádků ve frontě
  4. Služba mailboxss v dalším intervalu (např. každých 60 sekund) vezme první zprávu z fronty
  5. Připojí se na primární (nebo záložní) SMTP relay server přes TLS 1.2 (Explicit TLS), autentizuje se SMTP AUTH
  6. Přepíše obálkového odesílatele, zprávu odešle a při úspěchu ji z fronty odstraní
  7. Při neúspěchu inkrementuje ErrorCount – zprávy s nižším počtem chyb mají prioritu; po překročení limitu jsou trvale přeskočeny

Příklad nasazení 1: Hromadná rozesílka s vlastním SMTP relay

Typické nasazení v podnikové infrastruktuře, kde je potřeba rozesílat stovky až tisíce e-mailů bez rizika označení za spam:

KrokPopis
1. KonfiguracePomocí testeru nastavíte parametry vašeho externího SMTP relay serveru (hostitel, port 587, TLS, přihlašovací údaje) a interval odesílání – např. 30 sekund = 2 zprávy za minutu, 120 zpráv za hodinu.
2. Příjem zprávVaše aplikace (např. poštovní program) odešle přes SMTP e-mail s tisíci příjemců do FakeSmtpService. Systém jej rozdělí – každý příjemce dostane vlastní originální kopii e-mailu, nikoli kopii s viditelnými dalšími adresáty.
3. Odesílání z frontymailboxss začne jednotlivé zprávy odesílat přes váš SMTP relay v nastaveném intervalu. Díky individuálnímu odesílání a časovým rozestupům mezi jednotlivými zprávami se snižuje riziko, že poskytovatel poštovní služby vyhodnotí rozesílku jako spam.
4. Řešení chybPokud SMTP relay dočasně odmítne zprávu (např. kvůli limitu), ErrorCount se inkrementuje a zpráva se odloží. Při příštím cyklu se systém pokusí znovu – upřednostňuje zprávy s nižším počtem chyb. Po překročení ErrorCountLimit je zpráva vyřazena.
5. Přepínání relayůBez restartu služby lze přepnout na záložní SMTP relay – mailboxss si nastavení načte z databáze při každém odesílacím cyklu (hot reload).
6. Čištění frontyPokaždé když se fronta zcela vyprázdní, mailboxss provede DBCC SHRINKDATABASE na uvolnění diskového prostoru. Zároveň průběžně maže osiřelé záznamy v EmailBody, které již nejsou odkazovány žádnou frontovou položkou.

Příklad nasazení 2: Překlenutí starších zařízení do moderního SMTP

Mnoho starších, ale stále provozuschopných zařízení – síťové skenery, multifunkční tiskárny, průmyslová čidla nebo docházkové terminály – disponuje funkcí jako například „skenování do e-mailu", avšak jejich SMTP implementace často nepodporuje moderní zabezpečení (TLS/SSL) ani autentizaci, kterou dnes komerční poštovní servery vyžadují. MailboxServer tento problém řeší elegantně:

KrokPopis
1. Příjem bez omezeníFakeSmtpService naslouchá na standardním portu 25 bez TLS a bez autentizace. Starší zařízení do něj odešle naskenovaný dokument jako běžný e-mail – bez jakýchkoli úprav nastavení.
2. Bezpečné přemostěnímailboxss zprávu vyzvedne z fronty a odešle ji přes váš moderní SMTP relay s TLS a SMTP AUTH autentizací. Staré zařízení tak nepřímo odesílá zabezpečeně, aniž by samo TLS podporovalo.
3. Transparentní provozKoncový příjemce obdrží e-mail, jehož From adresa je autentizovaným účtem na odesílacím relayi a Reply-To směřuje zpět na původního odesílatele – celý proces je pro obě strany neviditelný.

Výhoda: Nemusíte vyřazovat funkční hardware jen kvůli zastaralé SMTP implementaci. MailboxServer funguje jako adaptér mezi světem legacy zařízení a moderní e-mailovou infrastrukturou.

Příklad nasazení 3: Dávkové rozesílky s ochranou proti spamové reputaci

Odeslání stovek či tisíců e-mailů naráz je spolehlivý způsob, jak si poškodit reputaci odesílací domény a skončit ve spamových filtrech. MailboxServer umožňuje nárazový příjem celé dávky a její řízené, časově rozprostřené odeslání:

ScénářChování systému
Nárazové přijetíVaše aplikace nahraje za několik sekund 5 000 e-mailů do FakeSmtpService. Všechny se okamžitě uloží do EmailQueue a potvrdí se úspěšné přijetí.
Rozložení v časemailboxss s nastaveným intervalem např. 15 sekund odesílá 4 zprávy za minutu – celých 5 000 e-mailů tak opustí systém za cca 21 hodin rovnoměrným, nenápadným tempem.
Prevence limitůPokud SMTP relay začne odmítat zprávy kvůli překročení hodinového limitu, ErrorCount mechanismus zprávy automaticky odloží a zkusí je znovu v dalším cyklu – bez ztráty a bez nutnosti manuálního zásahu.
Prioritní opakováníZprávy s nulovým počtem chyb se odesílají přednostně. Tím je zajištěno, že čerstvě příchozí dávka nečeká za zablokovanými problematickými adresami a propustnost systému zůstává maximální.

Výhoda: Oddělujete okamžik přijetí od okamžiku odeslání. Vaše aplikace zůstává rychlá a responzivní, zatímco MailboxServer na pozadí rozprostírá zátěž v čase – čímž výrazně snižuje pravděpodobnost spamového označení a zároveň respektuje limity vašeho odesílacího serveru.