Sieci Komputerowe Wykład 4 - teoria 

Część 1: SMTP - Simple Mail Transfer Protocol


Protokół jest standardowym sposobem wysyłania listów elektronicznych w sieci Intenet. Jest to protokół stanowy.
SMTP pracuje w architekturze klient-serwer.
Serwer SMTP jest przypisany do konkretnej domeny, którą obsługuje.
Serwer odbiera e- maile dla użytkowników mających konta w tej domenie, oraz wysyła e-maile od tych użytkowników.
W czasie wysyłania następuje sprawdzenie domeny adresata, połączenie się do serwera odpowiedzialnego za tą domenę i przesłanie listu.
W połączeniach między serwerami nie jest stosowane żadne zabezpieczenie (protokół ten zabezpiecza się przed nadużyciami w inny sposób).
Serwer SMTP podejmuje kilka prób wysłania listu i jeżeli wszystkie próby zawiodą odsyła list z powrotem do nadawcy (zgłaszając rodzaj napotkanego błędu).
Jeżeli serwer odbiorcy istnieje, konto nie jest zablokowane lub zapełnione, SMTP daje 100% gwarancję poprawnego przesłania wiadomości.
iestety nie gwarantuje czasu dostarczenia (kolejne próby wysłania mogą opóźnić pojawienie się listu w skrzynce adresata).
Protokół składa się z kilkunastu komend.
Najważniejsze z nich (niezbędne do wysyłania listu) to:

HELO    Hello             komunikat rozpoczynający wysłanie
EHLO    Extended Hello.   komunikat rozpoczynający wysłanie
MAIL    Mail              komunikat do wpisania nadawcy listu
QUIT    Quit              komunikat kończący wysyłanie
DATA    Insert Data       komunikat do wpisania treści listu

Serwer SMTP odpowiada użytkownikowi jednym z kodów odpowiedzi (3-znakowa liczba) oraz wyjaśnieniem kodu.
Pełna lista dostępna jest pod adresem: http://www.rfc-editor.org/rfc/rfc1893.txt.
Poniżej przedstawiona jest przykładowa sesja SMTP, w której klient kolejno: rozpoczyna połączenie z serwerem (polecenie helo) podaje adres nadawcy (polecenie mail from) podaje adres odbiorcy (polecenie rcpt to) wpisuje wiadomość (polecenie data) kończy sesję (polecenie quit) Podane nazwy i adresy użytkowników i serwerów są przykładowe.
Poniżej przedstawiona jest przykładowa sesja SMTP (z serwerem exim), w której klient kolejno:

* rozpoczyna połączenie z serwerem i przedstawia się (polecenie helo),
* podaje adres nadawcy (polecenie mail from),
* podaje adres odbiorcy (polecenie rcpt to),
* wpisuje wiadomość (polecenie data),
* kończy sesję (polecenie quit).

Podane nazwy i adresy użytkowników i serwerów są przykładowe.

01 	Connected to poczta.pjwstk.edu.pl.
02 	Escape character is '^]'.
03 	220 poczta.pjwstk.edu.pl ESMTP We report/block all spam.
04 	helo lab224-19.pjwstk.edu.pl
05 	250 poczta.pjwstk.edu.pl
06 	mail from: <nadawca@pjwstk.edu.pl>
07 	250 2.1.0 Ok
08 	rcpt to: <odbiorca@pjwstk.edu.pl>
09 	250 Accepted
10 	data
11 	354 Enter message, ending with "." on a line by itself
12 	From:  nadawca@pjwstk.edu.pl
13 	To:  odbiorca@pjwstk.edu.pl
14 	Reply-to: ktos.inny@pjwstk.edu.pl
15 	jakiś tekst
16 	.
17 	250 OK id=###########
18 	quit

Znaczenie ważniejszych linii:

  • 3. Serwer zgłasza swoją gotowość do pracy.
  • 4. Klient przedstawia się (trzeba podać nazwę domenową swojego komputera)
  • 5. Serwer akceptuje dmenę klienta. Można wpisywać mejl.
  • 6. Wisujemy adres nadawcy (przy połączeniach z niektórymi serwerami nie musimy posiadać takiego konta)
  • 7. Serwer zatwierdza adres nadawcy
  • 8. Adres odbiorcy
  • 9. Serwer zatwierdza adres odbiorcy
  • 10. Początek e-maila
  • 11. Serwer akceptuje i przesyła instrukcje (kombinacja "enter" kropka "enter" kończy e-mail
  • 12-15. Klient wpisuje treść listu. Nagłówki FROM i TO oraz REPLY-TO będą wyświetlone w kliencie poczty (mogą być zmyślone !)
  • 16. "kropka" kończąca treść listu
  • 17. Serwer kolejkuje wiadomość

Zauważyć należy, że klient nie podał nigdzie hasła ani loginu. Protokół SMTP nie ma żadnych zabezpieczeń przed wysyłaniem e-maila z dowolnego adresu (!). Co za tym idzie jest bardzo wiele osób (tzw. spamerów), które zalewają sieć niepotrzebną pocztą, reklamami i innym materiałem, który w skrócie możemy określić słowem SPAM.

Po wysłaniu do serwera całości listu możemy być pewni, że list zostanie dostarczony. Niestety nie można określić kiedy list przyjdzie do adresata. Serwer kolejkuje wszystkie wiadomości i wysyła je do docelowych serwerów. Sprawdzany jest rekord MX (Mail Exchange) odpowiedzialny za domenę wpisaną w adresie przeznaczenia, następuje połączenie z serwerem poczty i przekazanie listu. Gdy nie można połączyć się z serwerem list zostaje wysłany w kolejnej próbie (może to potrwać pół godziny lub więcej, zależnie od ustawień).
W przypadku, gdy na serwerze docelowym nie ma konta odpowiadającego adresatowi (nie ma możliwości sprawdzenia tego przed wysłaniem listu) lub gdy konto adresata jest przepełnione list zostaje odesłany do nadawcy. List zawiera powód niedostarczenia oraz załączony list oryginalny.





Część 2: SPAM - ochrona i cechy

Jak zaznaczono w poprzednim dziale istnieje bardzo duże prawdopodobieństwo, że nowoutworzony domena/e-mail zostanie wkrótce "zauważony" przez spamerów. Wtedy użytkownicy będą otrzymywać e-maile dziwnej treści (najczęściej zapraszające do zakupów, lub hazardu).
Administratorzy serwerów mają kłopot z odfiltrowaniem niechcianej poczty, gdyż nigdy nie wiadomo, z jakiego miejsca nadejdzie SPAM.
Są dwa główne podejścia: używanie "white listy" lub używanie "black listy".
White listy są to domeny i adresy komputerów zaufanych, z których serwer pocztowy przyjmuje listy. Poczta przychodząca z innych miejsc zostaje odrzucona.
Black listy (czasem nazywane też "block listami") są to domeny i adresy komputerów, z których najczęściej wysyłany jest spam.
Administrator black listy przyjmuje raporty o spamie od różnych organizacji i jeżeli ataki są poparte odpowiednimi dowodami wpisuje adres/domenę na listę.
Listy takie są publicznie dostępne i można je wykorzystać w "filtrowaniu" niechcianej poczty.
Administratorzy dbający o konta swoich użytkowników używają programów filtrujących spam w sposób automatyczny.
Programy mają zestawy reguł, według których rozpoznają spam. Reguły te są dowolnie zdefiniowane przez administratora.
Za dopasowanie poszczególnych reguł przyznawane są "spamowe punkty" i gdy ich suma przekroczy ustalony próg, list jest oznaczany jako spam. Zależnie od serwerów list jest wyrzucany, lub wchodzi do folderu "spam", gdzie nadal jest możliwe odczytanie jego treści.
Poniżej przedstawiono przykładowy rezultat działania filtru antyspamowego działającego w domenie pjwstk.edu.pl.

Spam detection software, running on the system "poczta.pjwstk.edu.pl", has
identified this incoming email as possible spam.  The original message
has been attached to this so you can view it (if it isn't spam) or label
similar future email.  If you have any questions, see
the administrator of that system for details.

Content preview:  If you cannot view this email correctly, please click here.
   This email was sent by Ikapq Inc. To unsubscribe, click here [...] 

Content analysis details:   (27.4 points, 7.5 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 4.4 HELO_DYNAMIC_IPADDR2   Relay HELO'd using suspicious hostname (IP addr
                            2)
 0.5 FH_HELO_EQ_D_D_D_D     Helo is d-d-d-d
 1.3 URI_HEX                URI: URI hostname has long hexadecimal sequence
 2.2 HTML_IMAGE_ONLY_12     BODY: HTML: images with 800-1200 bytes of words
 0.0 HTML_MESSAGE           BODY: HTML included in message
 1.7 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 1.5 RAZOR2_CF_RANGE_E8_51_100 Razor2 gives engine 8 confidence level
                            above 50%
                            [cf: 100]
 0.5 RAZOR2_CHECK           Listed in Razor2 (http://razor.sf.net/)
 0.5 RAZOR2_CF_RANGE_51_100 Razor2 gives confidence level above 50%
                            [cf: 100]
 2.0 URIBL_BLACK            Contains an URL listed in the URIBL blacklist
                            [URIs: fuxehmg.cn]
 1.6 URIBL_AB_SURBL         Contains an URL listed in the AB SURBL blocklist
                            [URIs: fuxehmg.cn]
 2.1 URIBL_WS_SURBL         Contains an URL listed in the WS SURBL blocklist
                            [URIs: fuxehmg.cn]
 2.9 URIBL_JP_SURBL         Contains an URL listed in the JP SURBL blocklist
                            [URIs: fuxehmg.cn]
 2.1 URIBL_OB_SURBL         Contains an URL listed in the OB SURBL blocklist
                            [URIs: fuxehmg.cn]
 2.5 URIBL_SC_SURBL         Contains an URL listed in the SC SURBL blocklist
                            [URIs: fuxehmg.cn]
 0.5 RCVD_IN_PBL            RBL: Received via a relay in Spamhaus PBL
                            [187.32.22.120 listed in zen.spamhaus.org]
 1.1 HTML_SHORT_LINK_IMG_1  HTML is very short with a linked image

The original message was not completely plain text, and may be unsafe to
open with some email clients; in particular, it may contain a virus,
or confirm that your address can receive spam.  If you wish to view
it, it may be safer to save it to a file and open it with an editor.


Nawet najlepsze oprogramowanie nie pozwoli uchronić się przed wysyłaniem spamu na nasze konta.
Dlatego należy bezwzględnie przestrzegać poniższych zasad.

  • Nigdy nie odpowiadać spammerom na listy (weryfikuje to tylko istnienie konta oraz jego aktywność)
  • Nigdy nie próbować wymierzać sprawiedliwości spammerom jest to niebezpieczne i nielegalne
  • Nigdy nie umieszczaj w Internecie swojego adresu e-mail w formie możliwej do odczytania przez maszynę (używać wyrażenia AT, NA, DOT, kropka w celu zmylenia systemów do eksploracji sieci)
  • Nie otwierać wiadomości spamowych w celu innym niż analiza albo raport (czasem zawierają złośliwy kod)
  • Włączyć przeglądanie poczty w trybie tekstowym (pozwoli to uchronić się przed wykonaniem kodu z załącznika html zawierającego skrypty)
  • Zwiększyć zabezpieczenia swojego programu pocztowego (np. poprzez wyłączenie automatycznego otwierania załączników)




Część 3: POP - Post Office Protocol

Protokół ten służy to obioru poczty z serwera na komputer klient. Jest to protokół stanowy działający w architekturze klient-serwer. Po połączeniu z serwerem wymagane jest podanie loginu i hasła. Dopiero po podaniu tych wartości można odbierać i zarządzać swoimi listami.
Poniższa lista opisuje najbardziej popularne polecenia protokołu POP3:

  • USER username - Przedstawia użytkownika serwerowi. To polecenie powinno być pierwszym poleceniem w czasie sesji z serwerem POP3
  • PASS password - Przesyła hasło użytkownika. Bez wydania tego polecenia nie mamy dostępu do swojej skrzynki pocztowej
  • LIST - Wyświetla spis listę oraz wielkość każdego z nich
  • RETR nr - Wyświetla wiadomość o podanym numerze
  • DELE nr - Usuwa wiadomość o podanym numerze ze skrzynki odbiorczej
  • QUIT - Kończy poczenie z serwerem POP3

Listing przedstawia typową sesję POP3: logowanie się do serwera (polecenia user i pass) wyświetlenie listy wiadomości (list), odebranie wiadomości oraz opuszczenie programu.
Serwer odpowiada komunikatem ozpoczynającym się od znaku "+" gdy komenda została zatwierdzona oraz "-" gdy nastąpi błąd

[tomek@ZUERST tomek]$ telnet pop3.poczta.onet.pl 110
Trying 213.180.130.20...
Connected to pop3.poczta.onet.pl (213.180.130.20).
Escape character is '^]'.
+OK POP3 [213.180.130.20] onet 1.20 server ready
user sxxxx
+OK User name accepted, password please
pass qwerty123
+OK Mailbox open, 1 messages, new: 1, your primary account: sxxxx@poczta.onet.pl, message quota: 0 kB
list
+OK Mailbox scan listing follows
1 745
.
retr 1
+OK 745 octets
Received: from dtf104.neoplus.adsl.tpnet.pl ([83.24.243.104]:13702 "EHLO
        zuerst") by ps4.test.onet.pl with ESMTP id <S3642721AbWJXXh3>;
        Wed, 25 Oct 2006 01:37:29 +0200
From:   "=?iso-8859-2?q?in=BF=2E_Tomasz?= Kaszuba"
        <tomasz_kaszuba@poczta.onet.pl>
Reply-To: tomasz_kaszuba@poczta.onet.pl
To:     sxxxx@poczta.onet.pl
Subject: TEST
Date:   Wed, 25 Oct 2006 01:45:43 +0200
User-Agent: KMail/1.7
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200610250145.43388.tomasz_kaszuba@poczta.onet.pl>
X-OnetAntySpam: NIE, to nie jest SPAM
X-OrigFrom: tomasz_kaszuba@poczta.onet.pl
X-ZA0: unknown (-1,0)
Status: RO

MEJL TESTOWY
CHYBA DZIALA
:)
.
quit
+OK Sayonara
Connection closed by foreign host.







Zadania 

  1. Ćwiczenie testowe: pobrać program freesmtp.zip, rozpakować w windowsie i uruchomić.
    Sprawdzić ip i numer portu na którym uruchomiliśmy serwer. Z konsoli linuksowej przeprowadzić podobną sesję smtp wysyłając do siebie list.
  2. Przeprowadzić połączenie za pomocą programu telnet ze swoim komputerem pocztowym. Odebrać wysłany w poprzednim ćwiczeniu list. Przetestować pozostałe komendy protokołu POP3

Pliki 

Ten dział zostanie uzupełniony wkrótce...

W sieci