Moje odkazy
Obsah článku:
vydáno: 3. 9. 2014 21:03, aktualizováno: 4. 9. 2014 00:04
Uživatelské účty a schránky na poštovních serverech vznikají, ale taky zanikají. Třeba když odejde zaměstnanec z firmy nebo bezplatný server zruší schránku neaktivnímu uživateli. Odesílatelé pak většinou dostávají generické oznámení o nedoručení, ze kterého nejde poznat, jestli je v adrese překlep a nikdy neexistovala, nebo jestli dříve existovala a byla zrušena, natož, aby se z ní dozvěděli aktuální kontakt na adresáta.
V následujícím článku si ukážeme, jak dostat informaci o novém kontaktu na příjemce k odesílateli.
Naším cílem je, aby místo obvyklé obecné chyby:
Recipient address rejected: User unknown in virtual mailbox table (in reply to RCPT TO command)
dostal odesílatel chybovou odpověď, ze které se dozví, kde má adresáta hledat:
Recipient address rejected: User has moved to https://blog.frantovo.cz/c/202/Kontakt (in reply to RCPT TO command)
Pro každého bývalého uživatele (případně alias) můžete samozřejmě nastavit vlastní (ASCII) text – například novou e-mailovou adresu, nebo URL odkaz na web, nebo ulici a město… to už je na vás.
Proč ASCII? Proč ne UTF-8 nebo něco jiného? Vždyť e-maily běžně píšeme s diakritikou a obecně unicodem. Protože tuhle hlášku vrací váš server v rámci SMTP protokolu jako odpověď na příkaz RCPT TO
zadaný serverem odesílatele. A až tento server (který nemáte pod kontrolou) sestaví MIME zprávu s oznámením o nedoručení (viz obrázek výše) a pošle ji odesílateli.
Tato funkcionalita se jmenuje Relocated a používá klasickou postfixovou tabulku, ve které se vyhledá hodnota podle adresy. Já používám relační databázi, ale klidně tento seznam bývalých uživatelů můžete mít uložený v obyčejném texťáku.
Do souboru main.cf
si přidáme:
# Bývalí uživatelé: relocated_maps = pgsql:/etc/postfix/pgsql/presunuti.cf
Obsah souboru presunuti.cf
:
hosts = localhost user = … password = … dbname = … query = SELECT cil FROM postfix_presunuti WHERE login = '%u' AND domena = '%d';
A vytvoříme si vhodnou tabulku v databázi. Pojmenovat si ji můžete, jak chcete, důležité je, aby SQL dotaz vracel jednu hodnotu (nový kontakt na uživatele), která se pak použije v chybové odpovědi vracené na SMTP příkaz RCPT TO
pro danou (již neexistující) adresu.
Důležité je, aby tato adresa (schránka nebo alias) skutečně neexistovala – jinak by se pošta stále doručovala navzdory existenci záznamu v „relocated“ tabulce.
Možná si taky jako já zakládáte mnoho adres/aliasů pro různé registrace nebo obecně různé účely. Dá se pak dobře sledovat, odkud kam vaše adresa putovala a kdo ji zneužil nebo neoprávněně poskytl spamerům. Když se to stane, není nic jednoduššího než nahlásit škůdce a alias smazat. Problém ale je, pokud by tuto adresu používal i nějaký legitimní odesílatel – ten už vám teď taky nenapíše a zprávy se mu budou vracet. Díky výše popsanému řešení mu můžete na sebe poslat nový kontakt, ať už e-mail nebo třeba odkaz na formulář na webu.
Teoreticky by spameři mohli číst tyto chybové hlášky a vytahovat z nich nové adresy a otravovat vás na nich – ale nepovažuji to za moc pravděpodobné (bude zajímavý experiment sledovat, jestli nějaký takový spam přijde). Pro tento případ je vhodné jako novou kontaktní adresu zvolit opět jednoúčelový alias s nějakým kódem.
Témata: [e-mail]
Tento článek zatím nikdo nekomentoval