Jak je to mozne? Jednoduse. SMTP protokol, ktery se stara o posilani e-mailu, zkratka moc neresi, co mu date za udaje. Co zadate, to posle. Dnes by se to mohlo zdat jako chyba, ale v roce 1982, kdyz SMTP vzniknul, to asi byla vlastnost (It’s Not a Bug, It’s a Feature!). Nekdy se to pouziva treba ve webovych redakcnich systemech. Uzivatel vyplni prihlasku/formular a ten mu prijde na jeho e-mail z adresy majitele webu. Redakcni system tedy nezna heslo k e-mailu.
SMTP server posloucha na TCP portu 25, prikazy se zadavaji ve forme „cisteho textu“ (zadne binarni ani xml blbosti). Je tedy mozne si pomoci telnetu povidat s SMTP serverem. V linuxu telnet naleznete v zakladni instalaci, ve Windows XP muzete zkusit Hyperterminal (nedoporucuju). Nejuniverzalnejsi a nejlepsi je pouzit putty.
Ukazka odeslani e-mailu pres telnet
Kratka ukazka odeslani e-mailu (zdoj wikipedia.cz): C je klient a S je server.
1234567891011121314151617181920 1. C: navázání spojení se serverem (zpravidla na TCP portu 25)2. S: 220 mail.example.com ESMTP Postfix3. C: HELO example.net4. S: 250 Hello example.net5. C: MAIL FROM: <sender@example.net>6. S: 250 Ok7. C: RCPT TO: <friend@example.com>8. S: 250 Ok9. C: DATA10. S: 354 End data with <CR><LF>.<CR><LF>11. C: Subject: test message12. C: From: sender@example.net13. C: To: friend@example.com14. C:15. C: Hello,16. C: this is a test.17. C: .18. S: 250 Ok: queued as 1234519. C: QUIT20. S: 221 Bye
Je to velice jednoduche na pochopeni:
- Navazeme spojeni pres telnet na SMTP server
- server nam odpovi 220 (ok, spojeni navazano) a posle svou verzi (na ukazce postfix)
- pozdravime server (
je to slusnenorma to vyzaduje) - server odpovi 250 (ok, cekam na pozadavky)
- e-mailova adresa odesilatele e-mailu (vubec ji nemusime vlastnit, ani k ni mit heslo!!!)
- server adresu odsouhlasil 🙂
- prijemce zpravy (komu mail poslat)
- server porad souhlasi 🙂
- a nyni budeme posilat samotny e-mail – DATA
- server nam sdeli, ze mame psat mail a vkladani ukoncit znaky <cr><lf>.<cr><lf>
- predmet e-mailu
- odesilatel, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
- prijemce, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
- nechame jeden prazdny radek, tim serveru rekneme, ze konci hlavicky e-mailu a zacina samotny mail
- text mailu
- text mailu
- . (<cr><lf>.<cr><lf>) ukonceni zadavani mailu
- server uspesne prijal zpravu ke zpracovani
- rozloucime se
- a server se s nami taky rozlouci 🙂
Veskery obsah e-mailu musi byt ve forme textu. Priloha se tak musi prevest taky na text. K tomu se pouziva base64 kodovani. Na prevod je spousta programu i online nastroju.
SMTP server potrebuje vedet MAIL FROM a RCPT TO, to mu rika od koho a komu mail je. Vsechno v sekci DATA slouzi pouze pro uzivateluv e-mailovy klient.
Server opravdu neresi adresu odesilatele. Pouze vlozi text adresy a odesle, pravy majitel e-mailove schranky se tak nikdy nedozvi, ze „odeslal“ e-mail (v odeslane poste nic mit nebude).
Problem nastane, kdyz se budete chtit vydavat z nekoho jineho budete chtit otestovat odesilani e-mailu. Cilovy uzivatel, kteremu zprava dorazi uvidi jako odesilatele falesnou adresu (to chceme). A tak kdyz klikne na odpovedet, my se odpoved nedozvime (a pravy majitel mailu se bude divit, co mu to kdo odpovida). Resenim je pridat v sekci data hlavicku Reply-To. Jakmile klikne uzivatel na odpovedet, posle se odpoved automaticky na adresu uvedenou v Reply-To – uzivatel to ale uvidi!
E-mailove hlavicky
existuje jich hodne, uvedu pouze ty zajimave:
123456789101112 Received: by 10.143.168.15 with HTTP; Mon, 2 May 2011 15:00:55 -0700 (PDT)X-Originating-IP: [1.2.3.4]Date: Tue, 3 May 2011 00:00:55 +0200Subject: =?ISO-8859-1?Q?Nasazen=ED_Ubuntu?=From: = tux <hello@world.cz>To: =linux <linus@domena.tld>Content-Type: text/plain; charset=ISO-8859-2Content-Transfer-Encoding: quoted-printableX-Original-Sender:X-Original-Authentication-Results:X-Google-Group-Id:X-Priority: 1
Vsechny hlavicky zacinajici X- jsou volitelne – muzete si dat jake chcete, pouzivaji to nektere programy.
Received – adresa a datum serveru, ktery zpravu zpracovaval. Protoze mame vsude neverejne IP (muze byt slozitejsi jednoduse vystopovat puvod).
Date – datum odeslani. Sem muzeme uvest jakekoliv datum, ale musime dodrzet spravny format. Nekteri e-mailovi klienti jsou natolik hloupi, ze se ridi timto datem. E-mail pak ukazuji jako neprecteny, ale prisel treba pred rokem. To je ale vyjimka, vetsinou toto antidatovani neprojde.
Subject – predmet mailu.
From – adresa odesilatele, co se zobrazi uzivateli v jeho klientu.
To – adresa prijemce, co se zobrazi uzivateli v jeho klientu.
X-Priority – priorita e-mailu.
Instalace vlastniho SMTP serveru
Kdyz budete chtit takto poslat mail a pouzijete SMTP server sveho poskytovatele internetoveho pripojeni, nebo e-mailove schranky, z 99,99999% se budete muset overit pres jmeno a heslo a vzdy zanechate svoji IP – anonymita tedy neni.
Mnohem lepsi je si na svuj pocitac nainstalovat vlastni SMTP server. Nebojte se vsech tech ruznych navodu, neni to slozite. Vy budete mit server pouze sami pro sebe a jeste z internetu nepristupny (nat, firewall). Proto staci nainstalovat postfix (mam s nim vyborne zkusenosti a nemusi se v zakladu vubec nastavovat – v Ubuntu). V Ubuntu:
1 sudo apt-get update && sudo apt-get install postfix
Tim ziskate vlastni smtp server na svem lokalnim pocitaci. Posloucha na adrese: localhost:25 a 127.0.0.1:25. Je to to same – proste lokalni pocitac. Jakmile z nej ale poslete mail, je mozne vas vystopovat pomoci IP adresy. Jestli chcete anonymitu pouzijte tor, nebo jineho anonymizera. Nebo vyuzijte internetovou kavarnu.
Zkusime si poslat mail:
A nyni si ukazeme, jak poslat mail ze sveho vlastniho SMTP serveru:
123456789101112131415161718192021222324252627282930 martin@eu:~$ telnet localhost 25Trying ::1...Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.220 eu.vancl.eu ESMTP Postfix (Ubuntu)HELO localhost250 eu.vancl.euMAIL FROM: bill.gates@microsoft.com250 2.1.0 OkRCPT TO: tux.martin@gmail.com250 2.1.5 OkDATA354 End data with <CR><LF>.<CR><LF>Subject: Ahoj, nechces penize?From: bill.gates@microsoft.comTo: tux.martin@gmail.comReply-To: muj.mail.pro.odpoved@seznam.czDate: Tue, 3 Jan 1999 11:09:47 +0200Ahoj,mam moc penez. Rad bych ti daroval 1 000 000 USD.Posli mi cislo uctu.Bill :-).250 2.0.0 Ok: queued as 344DB5F8CBQUIT221 2.0.0 ByeConnection closed by foreign host.martin@eu:~$
A takhle to pak vypada v e-mailovem klientovi (na ukazce je webove rozhrani gmail.com).
Kdo necetl muj clanek, bude si myslet, ze mu pise pravy Bill Gates. Dokonce i po zobrazeni podrobnosti to vypada dobre.
Odesilatel vypada verohodne, datum je zvlastni, ale zobrazuje se tak, jak jsem chtel. Jedina divna je adresa pro odpoved.
Po zobrazeni originalu (primo to, co dorucil SMTP server):
1234567891011121314151617181920212223 Delivered-To: tux.martin@gmail.comReceived: by 10.229.238.210 with SMTP id kt18cs9338qcb;<strong>Tue, 3 May 2011 01:08:17 -0700 (PDT)</strong>Received: by 10.205.24.9 with SMTP id rc9mr744450bkb.92.1304410096519;Tue, 03 May 2011 01:08:16 -0700 (PDT)Return-Path: <bill.gates<strong>@microsoft.com</strong>><strong>Received: from eu.vancl.eu ([1.2.3.4]) </strong>by mx.google.com with ESMTP id k20si24448385bku.0.2011.05.03.01.08.15;Tue, 03 May 2011 01:08:16 -0700 (PDT)<strong>Received-SPF: softfail (google.com: domain of transitioning bill.gates@microsoft.com does not designate 1.2.3.4 as permitted sender) client-ip=1.2.3.4;<br />Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning bill.gates@microsoft.com does not designate 1.2.3.4 as permitted sender) smtp.mail=bill.gates@microsoft.com</strong>Received: from localhost (localhost [127.0.0.1])by eu.vancl.eu (Postfix) with SMTP id 344DB5F8CBfor <tux.martin@gmail.com>; Tue, 3 May 2011 10:04:33 +0200 (CEST)Subject: Ahoj, nechces penize?From: bill.gates@microsoft.comTo: tux.martin@gmail.comReply-To: muj.mail.pro.odpoved@seznam.cz<strong>Date: Tue, 3 Jan 1999 11:09:47 +0200</strong>Message-Id: <20110503080444.344DB5F8CB@eu.vancl.eu>Ahoj,mam moc penez. Rad bych ti daroval �1 000 000 USD.Posli mi cislo uctu.Bill :-)
Je jasne, ze jde o podvrh. Proc by taky Microsoft posilal e-maily pres muj server (eu.vancl.eu). Zaroven si muzete vsimnout, ze i SPF (o tom pisu nize) ma vyhrady o pravosti. Vidite i udaje o casu: mail by odeslan v roce 1999 ale server ho prijal v roce 2011 – to je horsi, nez Ceska Posta
Pri psani odpovedi uzivatel vidi adresu pro odpoved
Oznameni o doruceni e-mailu
Nekdy se take muzete setkat s potvrzenim o doruceni e-mailu. SMTP protokol toto nijak neresi, proto se pouzivaji nasledujici hlavicky:
12 X-Confirm-Reading-To: mail@domena.czDisposition-Notification-To</code>: mail@domena.cz
Je dulezite si uvedomit, ze jde o nestandardni funkci. I kdyz si tedy zapnete ve svem Outlooku potvrzeni o precteni, neznamena to, ze ho dostanete. Vetsina e-mailovych klientu (treba Thunderbird) umoznuje odpoved na potvrzeni zakazat (sam to vzdycky zakazuju, nemam tuto funkci rad). Treba webovy gmail.com tuto funkci vubec nepodporuje.
Jak se branit?
Jiste vas zajima, jak se branit a jak poznat podvod. Velice tezko.
Je ale nekolik moznosti. Neco muzete ovlivnit jako uzivatel, ale neco musi implementovat spravce domeny.
Pro spravce domeny:
- Muzete pouzit SPF (Sender Policy Framework). Nadefinujete si, ze pouze server s adresou mail.seznam.cz muze posilat e-maily pro @seznam.cz. SPF je TXT zaznam v DNS domeny. Na rootu je o tom pekny clanek.
- Druhou moznosti je pouzit DKIM (DomainKeys Identified Mail). Zde se opet jedna o TXT zaznam v DNS domeny. V TXT zazamu je ulozen verejny klic. Jsou o tom pekne clanky na rootu a abclinuxu.
Na DKIM ani SPF se ale nemuzete spolehnout, musi je podporovat obe strany a pouzivani neni povinne.
Pro uzivatele:
Asi jedinym (a nejlepsim) resenim je pouzivat elektronicky podpis, nebo PGP/GPG sifrovani. Pak mate jistotu, ze odesilatel je opravdu odesilatel
Takze az vam priste prijde e-mail od banky a bude chtit poslat heslo, jeste to neznamena, ze e-mail opravdu psali v bance.
díky za článek, googlil jsem tohle téma, protože z adresy mojí sestřenice chodí … přesně takhle maily.
Dotaz na – nemůžete udělat nic:
Není nějaké policejní řešení ála normálně to napráskat. Jedná se přece o poškozováná dobrého jména (firemní mail).
Otázka je trochu mimo kódy, ale třeba znáš odpověď. Dost mě vadí to – nemůžete nic.
PS: Můžeš mi odp. pinknout i na mail?
Díky
A@
Dobry den,
muzete zkusit jit na policii ale obavam se, ze to nebude nic platne. Pokud chci posilat falesne e-maily, vyuziju nejakou anonymizacni sit (napr. TOR), nebo zavirovane Windows pocitace.
Predpokladam, ze kdyz se jedna o firemni e-mail, tak mate vlastni domenu. Pri dnesni nizke cene domen by firma s e-mailem na freemailu vypadalo dost amatersky.
U vlastni domeny doporucuji nastavit SPF a DKIM. Jednodusi asi bude nastavit SPF, je to zalezitost na 10 minut.
Nejdriv si overte aktualni nastaveni prikazem nslookup -q=TXT vancl.eu dostanete podobny vypis:
jak je videt, domena ma SPF zaznam:
v=spf1 a mx include:_spf.google.com ip4:93.89.146.5 ~all
odesilat e-maily z domeny vancl.eu tedy muzou pouze pouze pocitace s IP adresou uvedenou v A zaznamu a postovni (MX) servery, pak se zahrne nastaveni od googlu (protoze mam na domene google apps) a jeste se povoli IPv4 adresa 93.89.146.5. Zpravam od vsech ostatnich pocitacu se nastavi tzv. SOFTFAIL – zprava bude pouze oznacena. Kdyz zadate -all, tak zpravy mohou byt odmitnuty. SPF se pridava jako TXT zaznam do DNS domeny.
Neni to 100% reseni, ale prevazna vetsina antispamovych filtru (napr. spamassassin) na SPF bere ohled a zpravy automaticky oznaci jako spam. Utocnik tedy falesnou zpravu odesle, ale prijemci se oznaci jako spam.
Nastavujte opatrene, muzete si znefunkcnit postu!
Celkove pokud vim nelze zakazat falesne odesilani, jenom existuji zpusoby, jak sdelit prijemci, ze zprava je falesna.
Na urovni DNS: SPF a DKIM
Na uzivatelske urovni: PGP sifrovani a elektronicky podpis
ano, jedná se o firemní doménu a placený hosting, nic sprostého ve falešných mailech nechodí ale i tak mi vadí, že např. nabídka na hubnutí chodí naším jménem.
Pošlu odkaz na Vaši stránku hosterovi, pro mě je to v pochopení už o level výše 🙂
CMD s dotazem jsem zkusil podle návodu, výstřižek sem neumím vložit, pošlu ho mailem, pokud to někomu z googlících pomůže a pokud neobsahuje nic soukromého zveřejněte ho s tech. komentářem sem.
Laické zamyšlení – podvodné maily (mě) nechodí ze stejných domén viz. udávaná ukázka v článku (@microsoft.com), co jsem měl tu čest, pak vždy z podobné (např. @microsoft-public.com, @gemoney-survey.com …), takže jen tak posílat, co se jim zlíbí asi nejde (resp. posílat možná, ale doručit). O el. podpisech a šifrování nevím nic, pokud je to jenom to, co tomu brání, je to trochu smutné 🙁
MOC díky, minimálně jste mi pomohl objasnit záhadu.
PS: Změna hostera by nepomohla …?
Díky
Alois