{"id":71,"date":"2016-03-25T02:04:21","date_gmt":"2016-03-25T02:04:21","guid":{"rendered":"http:\/\/www.smtp-server.net\/?p=71"},"modified":"2015-05-04T20:34:26","modified_gmt":"2015-05-04T20:34:26","slug":"serwer-smtp-protokol-smtp","status":"publish","type":"post","link":"https:\/\/www.smtp-server.net\/pl\/serwer-smtp-protokol-smtp\/","title":{"rendered":"Serwer SMTP \u2013 Protok\u00f3\u0142 SMTP"},"content":{"rendered":"<p>Poczta elektroniczna istnieje w takiej czy innej formie ju\u017c od lat 60. U\u017cytkownicy pozostawiali sobie nawzajem wiadomo\u015bci, korzystaj\u0105c z wielu r\u00f3\u017cnych metod na komputerach mainframe, ale dopiero w sierpniu 1982 roku, kiedy to Instytut Nauk Informacyjnych opublikowa\u0142 protok\u00f3\u0142 SMTP (Simple Mail Transfer Protocol; RFC 821), zaproponowano znormalizowan\u0105 metod\u0119 wysy\u0142ania i odbierania wiadomo\u015bci e-mail.<\/p>\n<p><!--more--><\/p>\n<p>Protok\u00f3\u0142 SMTP szybko zyska\u0142 popularno\u015b\u0107 w sieci ARPANET, zast\u0119puj\u0105c starsze, bardziej skomplikowane metody przesy\u0142ania poczty mi\u0119dzy komputerami mainframe, a po raz pierwszy zosta\u0142 obs\u0142u\u017cony pod koniec 1982 roku przez jeden z pierwszych program\u00f3w do przesy\u0142ania poczty \u2013 Sendmail \u2013 w systemie BSD 4.1c.<br \/>\nOd tamtego czasu protok\u00f3\u0142 by\u0142 do\u015b\u0107 regularnie aktualizowany i rozbudowywany, jednak podstawowa metoda wysy\u0142ania wiadomo\u015bci e-mail pozosta\u0142a w du\u017cej mierze niezmieniona.<\/p>\n<p>Protok\u00f3\u0142 ten jest protoko\u0142em tekstowym, kt\u00f3ry pierwotnie nie obs\u0142ugiwa\u0142 przesy\u0142ania danych binarnych. Jednak w\u0142a\u015bnie dzi\u0119ki temu, \u017ce jest oparty na tek\u015bcie, protok\u00f3\u0142 ten by\u0142 \u0142atwy do wdro\u017cenia i utrzymania. MIME (Multipurpose Internet Mail Extensions) sta\u0142 si\u0119 popularny pod koniec lat 80. do kodowania i wysy\u0142ania danych binarnych przez SMTP. Obecnie SMTP jest dominuj\u0105cym protoko\u0142em do wysy\u0142ania i odbierania poczty elektronicznej w Internecie, a znajomo\u015b\u0107 tego protoko\u0142u jest niezb\u0119dna dla ka\u017cdego administratora sieci.<\/p>\n<p>Poniewa\u017c protok\u00f3\u0142 SMTP opiera si\u0119 na tek\u015bcie, opanowanie go jest znacznie \u0142atwiejsze ni\u017c w przypadku wielu innych protoko\u0142\u00f3w, a do bezpo\u015bredniej komunikacji z serwerem SMTP wystarczy program umo\u017cliwiaj\u0105cy wysy\u0142anie danych ASCII przez port TCP\/IP nr 25, taki jak Telnet.<\/p>\n<p>Wiadomo\u015bci s\u0105 wysy\u0142ane za po\u015brednictwem protoko\u0142u SMTP w ramach transakcji, co oznacza, \u017ce je\u015bli wys\u0142anie wiadomo\u015bci nie zako\u0144czy si\u0119 pomy\u015blnie i bez wyst\u0105pienia b\u0142\u0119du, wiadomo\u015b\u0107 zostaje odrzucona. RFC 821 opisuje transakcj\u0119 jako sk\u0142adaj\u0105c\u0105 si\u0119 z trzech etap\u00f3w: okre\u015blenia nadawcy, podania jednego lub wi\u0119cej odbiorc\u00f3w, a nast\u0119pnie wys\u0142ania samej wiadomo\u015bci. \u0141atwiej jednak wyobrazi\u0107 sobie transakcj\u0119 SMTP jako sk\u0142adaj\u0105c\u0105 si\u0119 z 5 etap\u00f3w:<\/p>\n<ul>\n<li>U\u015bcisk d\u0142oni<\/li>\n<li>Adres zwrotny<\/li>\n<li>Wy\u015blij do odbiorc\u00f3w<\/li>\n<li>Wy\u015blij dane wiadomo\u015bci<\/li>\n<li>Zako\u0144cz transakcj\u0119<\/li>\n<\/ul>\n<p><b>U\u015bcisk d\u0142oni<\/b><\/p>\n<p>Po nawi\u0105zaniu po\u0142\u0105czenia z serwerem SMTP na porcie 25 nadawca wiadomo\u015bci musi poczeka\u0107, a\u017c odbiorca zaakceptuje po\u0142\u0105czenie i zidentyfikuje si\u0119 w nast\u0119puj\u0105cym formacie:<\/p>\n<blockquote><p>220 [domena] [Informacje o us\u0142udze]<br \/>\nPrzyk\u0142ad: 220 example.com Us\u0142uga gotowa<\/p><\/blockquote>\n<p>Nadawca musi nast\u0119pnie przedstawi\u0107 si\u0119 odbiorcy za pomoc\u0105 polecenia HELO.<\/p>\n<blockquote><p>HELO [domena]<br \/>\nPrzyk\u0142ad: HELO example.com<\/p><\/blockquote>\n<p>Serwery pocztowe b\u0119d\u0105 oczekiwa\u0107, \u017ce ka\u017cdy z nich zidentyfikuje si\u0119 za pomoc\u0105 nazwy domeny, kt\u00f3ra mo\u017ce pos\u0142u\u017cy\u0107 do weryfikacji to\u017csamo\u015bci serwera poprzez sprawdzenie rekordu MX; jednak serwer odbieraj\u0105cy nie mo\u017ce na tym etapie odrzuci\u0107 po\u0142\u0105czenia, nawet je\u015bli nie da si\u0119 zweryfikowa\u0107 to\u017csamo\u015bci nadawcy, i dlatego musi odpowiedzie\u0107:<\/p>\n<blockquote><p>250 [Wiadomo\u015b\u0107]<br \/>\nPrzyk\u0142ad: 250 example.com Cze\u015b\u0107, Bob z example.com<\/p><\/blockquote>\n<p>Kod odpowiedzi 250 to og\u00f3lna odpowied\u017a \u2018OK\u2019 wysy\u0142ana przez serwer SMTP, informuj\u0105ca o pomy\u015blnym zako\u0144czeniu ostatniej operacji.<\/p>\n<p><b>Adres zwrotny:<\/b><\/p>\n<p>Po nawi\u0105zaniu po\u0142\u0105czenia mi\u0119dzy dwoma serwerami rozpoczyna si\u0119 transakcja SMTP i mo\u017cna zacz\u0105\u0107 wysy\u0142a\u0107 polecenia do serwera. Je\u015bli chcesz sprawdzi\u0107, jakie polecenia obs\u0142uguje serwer, wy\u015blij polecenie HELP, a serwer SMTP powinien odpowiedzie\u0107 komunikatem zawieraj\u0105cym list\u0119 obs\u0142ugiwanych polece\u0144.<\/p>\n<p>Aby wys\u0142a\u0107 wiadomo\u015b\u0107 do u\u017cytkownika na tym serwerze, musimy najpierw ustawi\u0107 adres zwrotny. Adres zwrotny nale\u017cy poda\u0107 jako pierwszy, aby w razie wyst\u0105pienia b\u0142\u0119d\u00f3w podczas transakcji SMTP mog\u0142y one zosta\u0107 zg\u0142oszone w\u0142a\u015bnie na ten adres. W tym celu u\u017cywamy polecenia \u2018MAIL FROM\u2019:<\/p>\n<blockquote><p>WIADOMO\u015a\u0106 OD:<br \/>\nPrzyk\u0142ad: NADSY\u0141A:<\/p><\/blockquote>\n<p>Zwr\u00f3\u0107 uwag\u0119 na znaki \u201emniejsze ni\u017c\u201d i \u201ewi\u0119ksze ni\u017c\u201d. Zgodnie z norm\u0105 RFC 821 musz\u0105 one otacza\u0107 sam adres e-mail. Je\u015bli adres zostanie zaakceptowany, protok\u00f3\u0142 SMTP zwr\u00f3ci odpowied\u017a 250 OK.<\/p>\n<p><b>Wy\u015blij do odbiorc\u00f3w<\/b><\/p>\n<p>Po ustawieniu adresu zwrotnego protok\u00f3\u0142 SMTP umo\u017cliwi nam okre\u015blenie odbiorc\u00f3w wiadomo\u015bci. W tym celu u\u017cywamy polecenia \u2018RCPT TO:\u2019:<\/p>\n<blockquote><p>RCPT DO:<br \/>\nPrzyk\u0142ad: RCPT DO:<\/p><\/blockquote>\n<p>Aby ustawi\u0107 wielu odbiorc\u00f3w, wystarczy powt\u00f3rzy\u0107 to polecenie dla ka\u017cdego z nich. Je\u015bli serwer pocztowy obs\u0142uguj\u0105cy tego u\u017cytkownika mo\u017ce w danej chwili przyj\u0105\u0107 wiadomo\u015b\u0107, powinien wys\u0142a\u0107 odpowied\u017a 250 OK. Je\u015bli jednak wiadomo\u015b\u0107 dla tego u\u017cytkownika nie zostanie przyj\u0119ta, zostanie wys\u0142ana odpowied\u017a 550 failure lub odpowiedni kod b\u0142\u0119du. Je\u015bli otrzymamy odpowied\u017a 250 OK, mo\u017cemy kontynuowa\u0107 wysy\u0142anie danych wiadomo\u015bci.<\/p>\n<p><b>Wy\u015blij dane wiadomo\u015bci<\/b><\/p>\n<p>Wysy\u0142anie danych za po\u015brednictwem protoko\u0142u SMTP jest do\u015b\u0107 proste, jednak formaty wiadomo\u015bci mog\u0105 by\u0107 do\u015b\u0107 skomplikowane, zw\u0142aszcza w przypadku wysy\u0142ania za\u0142\u0105cznik\u00f3w binarnych. Aby rozpocz\u0105\u0107 wysy\u0142anie danych, nale\u017cy wys\u0142a\u0107 polecenie \u2018DATA\u2019, na kt\u00f3re serwer powinien odpowiedzie\u0107 komunikatem 354 Intermediate reply. Na przyk\u0142ad:<\/p>\n<blockquote><p>354 Wpisz wiadomo\u015b\u0107, ko\u0144cz\u0105c j\u0105 znakiem \u201c.\u201d w osobnym wierszu<\/p><\/blockquote>\n<p>Najprostsz\u0105 wiadomo\u015bci\u0105, jak\u0105 mo\u017cemy wys\u0142a\u0107, jest wiadomo\u015b\u0107 tekstowa, kt\u00f3ra nie wymaga stosowania wielocz\u0119\u015bciowego formatu MIME. Wszystkie wiadomo\u015bci, zar\u00f3wno tekstowe, jak i inne, ko\u0144czy si\u0119 wys\u0142aniem wiersza zawieraj\u0105cego wy\u0142\u0105cznie znak kropki. Ponadto przed wys\u0142aniem wiadomo\u015bci mo\u017cna do\u0142\u0105czy\u0107 informacje nag\u0142\u00f3wkowe, takie jak data, temat, adresat, kopia i nadawca.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<blockquote><p>DANE<br \/>\n354 Wpisz wiadomo\u015b\u0107, ko\u0144cz\u0105c j\u0105 znakiem \u201c.\u201d w osobnym wierszu<br \/>\nTemat: To jest temat wiadomo\u015bci tekstowej z planem<br \/>\nA to jest tre\u015b\u0107 wiadomo\u015bci tekstowej.<\/p><\/blockquote>\n<p>W przypadku akceptacji serwer SMTP zwr\u00f3ci odpowied\u017a 250 OK lub kod b\u0142\u0119du, je\u015bli transakcja zako\u0144czy\u0142a si\u0119 niepowodzeniem lub by\u0142a niekompletna. Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na znak kropki na ko\u0144cu wiersza tre\u015bci wiadomo\u015bci \u2013 serwer przestaje nas\u0142uchiwa\u0107 danych tylko wtedy, gdy w wierszu znajduje si\u0119 pojedynczy znak kropki. Je\u015bli serwer nadawcy wysy\u0142a wiadomo\u015b\u0107, kt\u00f3ra spowodowa\u0142aby przedwczesne zamkni\u0119cie sesji danych, poniewa\u017c wiadomo\u015b\u0107 zawiera pojedynczy znak kropki w wierszu, powinien doda\u0107 do tego wiersza dodatkowy znak kropki.<\/p>\n<p><b>Zako\u0144czenie transakcji<\/b><\/p>\n<p>Do tego momentu wszystkie dane przes\u0142ane do serwera SMTP odbiorczego s\u0105 traktowane jako tymczasowe. Je\u015bli polecenie \u2018QUIT\u2019 nie zostanie wys\u0142ane przed zamkni\u0119ciem po\u0142\u0105czenia, serwer docelowy po prostu usunie wszelkie dane wiadomo\u015bci, kt\u00f3re zosta\u0142y zapisane. Pierwotnie u\u017cywane jako elegancki spos\u00f3b na zamkni\u0119cie po\u0142\u0105czenia, obecnie jest powszechnie stosowane do oznaczenia zako\u0144czonej transakcji, przy czym wiele serwer\u00f3w pocztowych czeka na polecenie QUIT przed umieszczeniem wiadomo\u015bci w kolejce do przekierowania przez agenta transferu wiadomo\u015bci. Po wys\u0142aniu polecenia QUIT serwer docelowy powinien wys\u0142a\u0107 odpowied\u017a 221, aby potwierdzi\u0107 zako\u0144czenie transakcji i zamkni\u0119cie po\u0142\u0105czenia.<\/p>\n<p>Je\u015bli zapoznasz si\u0119 z protoko\u0142em SMTP, zalecamy przeczytanie dokument\u00f3w RFC 821, 2476 i 2554. Nale\u017cy pami\u0119ta\u0107, zw\u0142aszcza podczas lektury RFC 821, \u017ce od 1982 roku serwery pocztowe uleg\u0142y znacznym zmianom, cz\u0119\u015bciowo w odpowiedzi na nadu\u017cycia ze strony spamer\u00f3w.<\/p>","protected":false},"excerpt":{"rendered":"<p>Electronic Mail has existed in one form or another as far back as the 1960&#8217;s. People would leave messages for one another using a number of different methods on mainframe computers but it wasn&#8217;t until August 1982 when the Information Sciences Institute published The Simple Mail Transfer Protocol (SMTP; RFC 821) that a standardized method <a href=\"https:\/\/www.smtp-server.net\/pl\/serwer-smtp-protokol-smtp\/\" rel=\"nofollow\"><span class=\"sr-only\">Read more about Att SMTP Server &#8211; The SMTP Protocol<\/span>[...]<\/a><\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-smtp-servers"],"_links":{"self":[{"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":1,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":72,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/posts\/71\/revisions\/72"}],"wp:attachment":[{"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smtp-server.net\/pl\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}