FK~

Moje odkazy

Ostatní odkazy

EFF: svoboda blogování
Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
Jsem členem EFF

Postfix: neaktuální e-mailové adresy a nové umístění

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.

Delivery report s popisem chyby

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.

Konfigurace Postfixu

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.

Využití v obraně proti spamu

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.

Odkazy a zdroje:

Témata: [e-mail]

Komentáře čtenářů

Tento článek zatím nikdo nekomentoval

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a trollům

Náhled komentáře