PC zone‎ > ‎

Email z jine adresy?

Jenom malo lidi si uvedomuje, ze jejich e-mail v Dorucene poste nemusi byt opravdu od toho, kdo je uveden v odesilateli. Poslat e-mail z cizi e-mailove adresy je velice jednoduche a rychle. Kdyz se to navic sikovne provede, nehrozi ani odhaleni.

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.

1. C: navázání spojení se serverem (zpravidla na TCP portu 25)
2. S: 220 mail.example.com ESMTP Postfix
3. C: HELO example.net
4. S: 250 Hello example.net
5. C: MAIL FROM: <sender@example.net>
6. S: 250 Ok
7. C: RCPT TO: <friend@example.com>
8. S: 250 Ok
9. C: DATA
10. S: 354 End data with <CR><LF>.<CR><LF>
11. C: Subject: test message
12. C: From: sender@example.net
13. C: To: friend@example.com
14. C:
15. C: Hello,
16. C: this is a test.
17. C: .
18. S: 250 Ok: queued as 12345
19. C: QUIT
20. S: 221 Bye

Je to velice jednoduche na pochopeni:

  1. Navazeme spojeni pres telnet na SMTP server
  2. server nam odpovi 220 (ok, spojeni navazano) a posle svou verzi (na ukazce postfix)
  3. pozdravime server (je to slusne norma to vyzaduje)
  4. server odpovi 250 (ok, cekam na pozadavky)
  5. e-mailova adresa odesilatele e-mailu (vubec ji nemusime vlastnit, ani k ni mit heslo!!!)
  6. server adresu odsouhlasil :-)
  7. prijemce zpravy (komu mail poslat)
  8. server porad souhlasi :-)
  9. a nyni budeme posilat samotny e-mail - DATA
  10. server nam sdeli, ze mame psat mail a vkladani ukoncit znaky <cr><lf>.<cr><lf>
  11. predmet e-mailu
  12. odesilatel, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
  13. prijemce, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
  14. nechame jeden prazdny radek, tim serveru rekneme, ze konci hlavicky e-mailu a zacina samotny mail
  15. text mailu
  16. text mailu
  17. . (<cr><lf>.<cr><lf>) ukonceni zadavani mailu
  18. server uspesne prijal zpravu ke zpracovani
  19. rozloucime se
  20. 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:

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 +0200
Subject: =?ISO-8859-1?Q?Nasazen=ED_Ubuntu?=
From: = tux <hello@world.cz>
To: =linux <linus@domena.tld>
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-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:

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:

martin@eu:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 eu.vancl.eu ESMTP Postfix (Ubuntu)
HELO localhost
250 eu.vancl.eu
MAIL FROM: bill.gates@microsoft.com
250 2.1.0 Ok
RCPT TO: tux.martin@gmail.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Ahoj, nechces penize?
From: bill.gates@microsoft.com
To: tux.martin@gmail.com
Reply-To: muj.mail.pro.odpoved@seznam.cz
Date: Tue, 3 Jan 1999 11:09:47 +0200

Ahoj,
mam moc penez. Rad bych ti daroval 1 000 000 USD.
Posli mi cislo uctu.
Bill :-)
.
250 2.0.0 Ok: queued as 344DB5F8CB
QUIT
221 2.0.0 Bye
Connection 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):

Delivered-To: tux.martin@gmail.com
Received: by 10.229.238.210 with SMTP id kt18cs9338qcb;
Tue, 3 May 2011 01:08:17 -0700 (PDT)
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@microsoft.com>
Received: from eu.vancl.eu ([1.2.3.4]) by mx.google.com with ESMTP id k20si24448385bku.0.2011.05.03.01.08.15;
Tue, 03 May 2011 01:08:16 -0700 (PDT)
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;
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
Received: from localhost (localhost [127.0.0.1]) by eu.vancl.eu (Postfix) with SMTP id 344DB5F8CB for <tux.martin@gmail.com>; Tue, 3 May 2011 10:04:33 +0200 (CEST) Subject: Ahoj, nechces penize? From: bill.gates@microsoft.com To: tux.martin@gmail.com Reply-To: muj.mail.pro.odpoved@seznam.cz Date: Tue, 3 Jan 1999 11:09:47 +0200 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:

X-Confirm-Reading-To: mail@domena.cz
Disposition-Notification-To: 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:

  1. 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.
  2. 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.


http://contact.xf.cz/

Comments