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
- E-mailový klient odešle zprávu na FakeSmtpService (např. na port 25)
- SMTP server přijme RAW data zprávy, uloží je do tabulky
EmailBody - 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ě - Služba mailboxss v dalším intervalu (např. každých 60 sekund) vezme první zprávu z fronty
- Připojí se na primární (nebo záložní) SMTP relay server přes TLS 1.2 (Explicit TLS), autentizuje se SMTP AUTH
- Přepíše obálkového odesílatele, zprávu odešle a při úspěchu ji z fronty odstraní
- 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:
| Krok | Popis |
|---|---|
| 1. Konfigurace | Pomocí 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áv | Vaš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 fronty | mailboxss 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í chyb | Pokud 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í fronty | Pokaž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ě:
| Krok | Popis |
|---|---|
| 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í provoz | Koncový 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 čase | mailboxss 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.
