2008.10.09.
Backscatter ellen
A spammerek eléggé rossz szokása az, hogy időnként visszapattanó (bounce) levelekben küldik el a spamet a címzettnek. Ez azért kellemetlen, mert a bounce levelek – eredetileg – arról tudósítanak, hogy az üzenetünk nem ért célba, pl. azért, mert elgépeltük a címzett email címét. Valamit azonban tenni kell a backscatter (bounce levelekben érkező spam) ellen.
A clapf 0.3.31-rc1-ben kísérleteztem egy backscatter elleni védelmet, ami úgy működik, hogy a fejlécbe beletesz egy extra sort, pl. ‘X-Anti-Backscatter: valamiszöveg’. Ha ezek után egy visszapattanó levélben ez nincs benne, akkor világos, hogy az nem egy legitim bounce levél. Vagy az is lehet, hogy a túloldalon olyan MTA dolgozik, ami kivágja a neki nem tetsző fejléceket a levélből.
Ezért az lenne igazán bolond-MTA-biztos módszer, ha a titkos információnkat a feladó email címébe rejtenénk el valahogyan. Ehhez azonban címfordítás kell, azaz pl. a bela@aaa.fu címet át kell írni az SMTP párbeszéd során pl. aajakajka@aaaa.fu-ra, majd ha valaki az aajakajka@aaaa.fu címre küld visszapattanó levelet, akkor azt vissza kell írni bela@aaa.fu-ra.
Ezeket a cím átírásokat egy elosztott adatbázisba kell tenni, hogy az összes mail szerver minden átírást ismerjen. Valaki pl. memcached-et használ erre a célra. Azon gondolkozom, hogy ha kriptográfiát használnánk, akkor minden MTA önmagában is képes lehet erre a címfordításra, és megspórolhatnánk a külső adabázist.
Tehát egy f(user, timestamp, secret) alakú függvényre van szükségünk, ami tipikusan egy szimmetrikus kulcsú titkosítás után kiált. Az időbélyeg azért kell, hogy ne lehessen egy érvényes összekavart címet akármeddig felhasználni.
Azonban a kriptográfia eléggé számításigényes művelet, és noha elég csak a MAILER-DAEMON, vagy a <> feladótól érkező leveleket megvizsgálni, hiszen csak a bounce levelekkel vannak gondjaink, de lehet ezt még egyszerűbbé is tenni.
Írjuk át a bela@aaaa.fu-t címet egy fix formára, amit a spammerek kevés eséllyel találnak ki, pl. bela-secret-timestamp@aaaa.fu. Ez eléggé egyszerű és lightweight megoldás, mégis – reményeim szerint – 98-99+%-ban megvédene a backscatter-től.




