sk2:mail
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| sk2:mail [2025/01/14 14:08] – jkonczak | sk2:mail [2026/01/14 14:36] (current) – jkonczak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | < | ||
| + | < | ||
| + | code {white-space: | ||
| + | pre.compact {line-height: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === Wyłączanie echo w terminalu === | === Wyłączanie echo w terminalu === | ||
| Możesz dowiedzieć się który terminal jest używany przez twoją powłokę wykonując: | Możesz dowiedzieć się który terminal jest używany przez twoją powłokę wykonując: | ||
| - | \\ | ||
| '' | '' | ||
| + | \\ | ||
| W dowolnym momencie możesz z innego terminala wykonać komendę która spowoduje | W dowolnym momencie możesz z innego terminala wykonać komendę która spowoduje | ||
| wyłączenie bądź włączenie wyświetlania wpisanych przez znaków: | wyłączenie bądź włączenie wyświetlania wpisanych przez znaków: | ||
| Line 24: | Line 30: | ||
| < | < | ||
| - | <pre style=" | + | < |
| < | < | ||
| < | < | ||
| Line 105: | Line 111: | ||
| === Wysłanie === | === Wysłanie === | ||
| - | < | + | < |
| - | | + | |
| - | (mail) → │ MUA │-→-→-→│ MSA │-→-→-→│ MTA │-→-→-→│ MTA │-→-→-→│ MDA │ → (skrzynka) | + | (mail) → │ MUA │-→-→-→│ MSA │-→-→-→│ MTA │-→-→-→│ MTA │-→-→-→│ MDA │ → (skrzynka) |
| - | | + | |
| - | + | <div style=" | |
| - | | + | \____/ |
| - | wysłanie | + | |
| - | (submission) | + | |
| </ | </ | ||
| Podział MTA na MSA, MTA i MDA jest umowny. | Podział MTA na MSA, MTA i MDA jest umowny. | ||
| Line 134: | Line 140: | ||
| === Odbieranie === | === Odbieranie === | ||
| - | < | + | < |
| | | ||
| (skrzynka) ← │ MAA │ ← ← ← │ MRA/MUA │ | (skrzynka) ← │ MAA │ ← ← ← │ MRA/MUA │ | ||
| Line 149: | Line 155: | ||
| < | < | ||
| - serwer przesyła do świeżo połączonego klienta powitanie zaczynające się od kodu '' | - serwer przesyła do świeżo połączonego klienta powitanie zaczynające się od kodu '' | ||
| - | - klient przedstawia się komendą '' | + | - klient przedstawia się komendą '' |
| - | - klient może poprosić o uwierzytelnienie komendą '' | + | - klient może poprosić o uwierzytelnienie komendą '' |
| * po wykonaniu '' | * po wykonaniu '' | ||
| * serwer zwykle pozwala na uwierzytelnienie tylko jeżeli nawiązano z nim bezpieczne połączenie (TLS) | * serwer zwykle pozwala na uwierzytelnienie tylko jeżeli nawiązano z nim bezpieczne połączenie (TLS) | ||
| * w powszechnie używanej metodzie '' | * w powszechnie używanej metodzie '' | ||
| * serwer odsyła kod 334 i czeka na dane uwierzytelniające | * serwer odsyła kod 334 i czeka na dane uwierzytelniające | ||
| - | * klient musi przesłać nazwę użytkownika i hasło zapisane jako '' | + | * klient musi przesłać nazwę użytkownika i hasło zapisane jako '' |
| * serwer po udanym uwierzytelnieniu odsyła odpowiedź z kodem 235 | * serwer po udanym uwierzytelnieniu odsyła odpowiedź z kodem 235 | ||
| - | - klient wysyła informację o nadawcy maila komendą '' | + | - klient wysyła informację o nadawcy maila komendą '' |
| - | - klient wysyła informację o jednym odbiorcy maila komendą '' | + | - klient wysyła informację o jednym odbiorcy maila komendą '' |
| - klient może wskazać kolejnego odbiorcę powtarzając komendę //RCPT TO// z kolejnymi adresami | - klient może wskazać kolejnego odbiorcę powtarzając komendę //RCPT TO// z kolejnymi adresami | ||
| - | - klient zgłasza że chce podać treść maila komendą '' | + | - klient zgłasza że chce podać treść maila komendą '' |
| - klient podaje treść maila, zakończoną liną składającą się z kropki \\ < | - klient podaje treść maila, zakończoną liną składającą się z kropki \\ < | ||
| - po odebraniu '' | - po odebraniu '' | ||
| Line 173: | Line 179: | ||
| | | ||
| Przykład komunikacji: | Przykład komunikacji: | ||
| - | < | + | < |
| - | < | + | |
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| Line 184: | Line 189: | ||
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| - | <span style=" | + | <span style=" |
| <span style=" | <span style=" | ||
| - | <span style=" | + | <span style=" |
| <span style=" | <span style=" | ||
| - | <span style=" | + | <span style=" |
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| Line 210: | Line 215: | ||
| ==== Porty używane przez SMTP ==== | ==== Porty używane przez SMTP ==== | ||
| - | SMTP używa portów: | + | SMTP używa portów |
| * 25 ('' | * 25 ('' | ||
| * < | * < | ||
| Line 228: | Line 233: | ||
| < | < | ||
| - | Połączenie od razu z szyfrowania | + | |
| + | Połączenie od razu z szyfrowaniem | ||
| \\ | \\ | ||
| '' | '' | ||
| '' | '' | ||
| + | |||
| </ | </ | ||
| Line 242: | Line 249: | ||
| z serwerem SMTP po podaniu komendy: | z serwerem SMTP po podaniu komendy: | ||
| \\ | \\ | ||
| - | '' | + | '' |
| \\ | \\ | ||
| < | < | ||
| Line 294: | Line 301: | ||
| * wysyła komendę '' | * wysyła komendę '' | ||
| * wysyła komendę '' | * wysyła komendę '' | ||
| - | - klient wysyła komendę '' | + | - klient wysyła komendę '' |
| - klient wysyła komendę '' | - klient wysyła komendę '' | ||
| - klient wysyła komendę '' | - klient wysyła komendę '' | ||
| Line 305: | Line 312: | ||
| pobierającą nagłówki i pierwsze //N// linii treści wiadomości ('' | pobierającą nagłówki i pierwsze //N// linii treści wiadomości ('' | ||
| wyświetlającą które z opcjonalnych funkcji są wspierane przez serwer ('' | wyświetlającą które z opcjonalnych funkcji są wspierane przez serwer ('' | ||
| + | \\ | ||
| < | < | ||
| i [[https:// | i [[https:// | ||
| Line 319: | Line 326: | ||
| usunął je z serwera zwalniając miejsce na kolejne maile. Tworząc ten protokół | usunął je z serwera zwalniając miejsce na kolejne maile. Tworząc ten protokół | ||
| nie przewidziano korzystania z poczty na wielu komputerach ani istnienia | nie przewidziano korzystania z poczty na wielu komputerach ani istnienia | ||
| - | klientów pocztowych innych niż lokalny program (protokół | + | klientów pocztowych innych niż lokalny program (protokół |
| HTTP). | HTTP). | ||
| Line 336: | Line 343: | ||
| \\ | \\ | ||
| Przykładowa komunikacja w której klient wybrał tagi '' | Przykładowa komunikacja w której klient wybrał tagi '' | ||
| - | < | + | < |
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| Line 361: | Line 368: | ||
| - klient wysyła komendę '' | - klient wysyła komendę '' | ||
| - klient uwierzytelnia się, wykonując jedno z: | - klient uwierzytelnia się, wykonując jedno z: | ||
| - | * wysyła komendę '' | + | * wysyła komendę '' |
| * wysyła komendę '' | * wysyła komendę '' | ||
| - zalogowany klient może między innymi: | - zalogowany klient może między innymi: | ||
| Line 369: | Line 376: | ||
| * dodać nową wiadomość do wskazanego katalogu, np. umieścić nową wiadomość w katalogu //\Drafts// | * dodać nową wiadomość do wskazanego katalogu, np. umieścić nową wiadomość w katalogu //\Drafts// | ||
| - klient wybiera katalog który chce otworzyć: | - klient wybiera katalog który chce otworzyć: | ||
| - | * w trybie zapisu i odczytu komendą '' | + | * w trybie zapisu i odczytu komendą '' |
| * w trybie tylko do odczytu komendą '' | * w trybie tylko do odczytu komendą '' | ||
| - po wybraniu katalogu, klient może: | - po wybraniu katalogu, klient może: | ||
| - | * pobrać wiadomość bądź jej wskazane części komendą '' | + | * pobrać wiadomość bądź jej wskazane części komendą '' |
| - | * zmienić flagi wiadomości komendą '' | + | * zmienić flagi wiadomości komendą '' |
| * usunąć wiadomości z ustawioną flagą // | * usunąć wiadomości z ustawioną flagą // | ||
| - | * wyszukać wiadomości komendą '' | + | * wyszukać wiadomości komendą '' |
| * skopiować bądź przenieść wiadomość do innego katalogu | * skopiować bądź przenieść wiadomość do innego katalogu | ||
| * wrócić do stanu zalogowanego komendą '' | * wrócić do stanu zalogowanego komendą '' | ||
| Line 386: | Line 393: | ||
| Jeżeli komendy '' | Jeżeli komendy '' | ||
| poprzedzone komendą **'' | poprzedzone komendą **'' | ||
| + | < | ||
| + | ++++ foo|<pre class=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | </ | ||
| + | ++++ | ||
| + | --> | ||
| + | </ | ||
| \\ | \\ | ||
| Po wybraniu katalogu klient zawsze dostaje informację o tym jaki UID zostanie | Po wybraniu katalogu klient zawsze dostaje informację o tym jaki UID zostanie | ||
| Line 394: | Line 426: | ||
| //num//. | //num//. | ||
| | | ||
| - | Jak widać, protokół IMAP pozwala zarówno ściągać całe maile (czyli zastąpić | + | Protokół IMAP pozwala zarówno ściągać całe maile (czyli zastąpić protokół POP3), |
| - | protokół POP3), jaki i pozwala | + | jaki i pozwala |
| - | wybrane części | + | innymi pobrać wybrane nagłówki (From, Subject |
| - | z (również webowych) klientów pocztowych. | + | ważne, odpowiedziano) stu najnowszych maili, pobrać |
| + | (np. treść bez załączników), czy wyszukać numery maili które w | ||
| + | temacie/ | ||
| W IMAP kiedykolwiek po zalogowaniu klient może też wysłać komendę **'' | W IMAP kiedykolwiek po zalogowaniu klient może też wysłać komendę **'' | ||
| Line 411: | Line 445: | ||
| Przykład komunikacji: | Przykład komunikacji: | ||
| - | < | + | < |
| - | < | + | |
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| Line 465: | Line 498: | ||
| <span style=" | <span style=" | ||
| <span style=" | <span style=" | ||
| - | <span style=" | + | <span style=" |
| <span style=" | <span style=" | ||
| - | <span style=" | + | <span style=" |
| - | <span style=" | + | <span style=" |
| - | <span style=" | + | <span style=" |
| </ | </ | ||
| </ | </ | ||
| Line 486: | Line 519: | ||
| ~~Zadanie.# | ~~Zadanie.# | ||
| Połącz się do swojej poczty studenckiej używając IMAP i znajdź nieprzeczytane | Połącz się do swojej poczty studenckiej używając IMAP i znajdź nieprzeczytane | ||
| - | wiadomości w katalogu '' | + | wiadomości w katalogu '' |
| + | poszukaj wiadomości na które nie wysłałeś odpowiedzi, tzn. '' | ||
| ~~Zadanie.# | ~~Zadanie.# | ||
| Line 503: | Line 537: | ||
| Wstępne przetworzenie maili trafiających do skrzynki na serwerze, np. wrzucanie | Wstępne przetworzenie maili trafiających do skrzynki na serwerze, np. wrzucanie | ||
| do wybranych folderów na podstawie ustawionych filtrów, umożliwiają skrypty | do wybranych folderów na podstawie ustawionych filtrów, umożliwiają skrypty | ||
| - | sieve (patrz: [[https:// | + | sieve (patrz: [[https:// |
| - | [[http://sieve.info/|strona " | + | [[https://proton.me/support/ |
| + | ważniejszych elementów języka]]) które można konfigurować | ||
| [[https:// | [[https:// | ||
| \\ | \\ | ||
| Line 526: | Line 561: | ||
| * zwykle zawiera identyfikator pozwalający znaleźć w logach serwera informacje o tej wiadomości, | * zwykle zawiera identyfikator pozwalający znaleźć w logach serwera informacje o tej wiadomości, | ||
| * może zawierać, za słowem kluczowym '' | * może zawierać, za słowem kluczowym '' | ||
| + | |||
| + | < | ||
| + | |||
| + | ++++ Przykładowa skomplikowana historia maila | | ||
| + | < | ||
| + | <span style=" | ||
| + | przeskanowany programem antywirusowym i wysłany do adresata,</ | ||
| + | <span style=" | ||
| + | <span style=" | ||
| + | I każdy kolejny serwer SMTP dodał własny nagłówek: | ||
| + | <span style=" | ||
| + | <pre class=" | ||
| + | <span style=" | ||
| + | Received: from mail-yb1-xb2c.google.com ([2607: | ||
| + | by mail.example.org with esmtps | ||
| + | (Exim 4.96) | ||
| + | (envelope-from & | ||
| + | id 1tWaLw-005ThV-0Q | ||
| + | for user@example.org; | ||
| + | Sat, 11 Jan 2025 13:12:33 +0100 | ||
| + | Received: by mail-yb1-xb2c.google.com with SMTP id 3f1490d57ef6-e3c8ae3a3b2so3989188276.0 | ||
| + | for & | ||
| + | </ | ||
| + | Sat, 11 Jan 2025 04:11:26 -0800 (PST) | ||
| + | Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) | ||
| + | by mx.google.com with SMTPS id 4fb4d7f45d1cf-5d98fe87a9fsor2448019a12.0.2025.01.11.04.11.25 | ||
| + | for & | ||
| + | (Google Transport Security); | ||
| + | Sat, 11 Jan 2025 04:11:25 -0800 (PST) | ||
| + | </ | ||
| + | Sat, 11 Jan 2025 04:11:23 -0800 (PST) | ||
| + | Received: from mail22.atl91.mcsv.net (mail22.atl91.mcsv.net. [198.2.130.22]) | ||
| + | by mx.google.com with ESMTPS id 3f1490d57ef6-e55be2b386esi2450299276.511.2025.01.11.04.11.22 | ||
| + | for & | ||
| + | (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/ | ||
| + | Sat, 11 Jan 2025 04:11:22 -0800 (PST) | ||
| + | Received: from mail22.atl91.mcsv.net ([127.0.0.1]) | ||
| + | by localhost (mail22.atl91.mcsv.net [127.0.0.1]) (amavisd-new, | ||
| + | with ESMTP id vi1BlmqBCQOU; | ||
| + | Received: from localhost (localhost [127.0.0.1]) | ||
| + | by mail22.atl91.mcsv.net (Postfix) with ESMTP id BC4FCE0BA6 | ||
| + | for & | ||
| + | </ | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | </ | ||
| ~~Zadanie.# | ~~Zadanie.# | ||
| Line 539: | Line 621: | ||
| Nagłówki z adresami mają składnię '' | Nagłówki z adresami mają składnię '' | ||
| - | '' | + | '' |
| Poza oczywistymi //From//, //To//, //Cc// i //Bcc// używa się też nagłówków | Poza oczywistymi //From//, //To//, //Cc// i //Bcc// używa się też nagłówków | ||
| Line 592: | Line 674: | ||
| Jeżeli wiadomość składa się z więcej niż jednej części, używa się specjalnych | Jeżeli wiadomość składa się z więcej niż jednej części, używa się specjalnych | ||
| - | typów \\ '' | + | typów \\ '' |
| Te typy wskazują że treść to więcej niż jedna część i ustawiają separator | Te typy wskazują że treść to więcej niż jedna część i ustawiają separator | ||
| - | oddzielający te części na '' | + | oddzielający te części na '' |
| - | \\ | + | na '' |
| - | Powszechnie wykorzystuje się kilka takich typów, np. '' | + | Powszechnie wykorzystuje się kilka takich typów, np. '' |
| + | (< | ||
| Każda część wiadomości ma powinna mieć powtórzony nagłówek // | Każda część wiadomości ma powinna mieć powtórzony nagłówek // | ||
| Line 610: | Line 693: | ||
| Przykład takiej treści: | Przykład takiej treści: | ||
| - | < | + | < |
| - | <code> | + | <i> |
| - | … inne nagłówki … | + | Content-Type: |
| - | Content-Type: | + | |
| - | --oddzielacz | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Przyjdzie o **jedenastej** wieczorem. | Przyjdzie o **jedenastej** wieczorem. | ||
| - | --oddzielacz | + | <span style=" |
| Content-Type: | Content-Type: | ||
| - | <html><body><p>Przyjdzie o <b>jedenastej</b> wieczorem.</p></body></html> | + | <html& |
| - | --oddzielacz | + | <span style=" |
| - | </code> | + | </pre></ |
| ~~Zadanie.# | ~~Zadanie.# | ||
| Line 633: | Line 715: | ||
| Typ '' | Typ '' | ||
| - | używany do wysyłania z załącznikami. | + | używany do wysyłania |
| Przykład: | Przykład: | ||
| - | < | + | < |
| - | <code> | + | <i>… poprzednie nagłówki …</i> |
| … inne nagłówki … | … inne nagłówki … | ||
| - | Content-Type: | + | Content-Type: |
| - | --fikusny_separator | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Zobacz ten obrazek! | Zobacz ten obrazek! | ||
| - | --fikusny_separator | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Content-Transfer-Encoding: | Content-Transfer-Encoding: | ||
| Line 653: | Line 735: | ||
| ETvHpgjyISFAGN5YCNgjrP7GURBzioYgzEHcQ9mIFMRLHykg2AtU+0bVxCNq8am+oe6OJ8yf5QDW | ETvHpgjyISFAGN5YCNgjrP7GURBzioYgzEHcQ9mIFMRLHykg2AtU+0bVxCNq8am+oe6OJ8yf5QDW | ||
| ShMmZmKfpQAAAABJRU5ErkJggg== | ShMmZmKfpQAAAABJRU5ErkJggg== | ||
| - | --fikusny_separator | + | <span style=" |
| - | </code> | + | </pre></ |
| ~~Zadanie.# | ~~Zadanie.# | ||
| Line 663: | Line 745: | ||
| Typu MIME moża w sobie dowolnie zagnieżdżać, | Typu MIME moża w sobie dowolnie zagnieżdżać, | ||
| - | <code> | + | <html>< |
| - | … inne nagłówki … | + | <i>… poprzednie |
| - | Content-Type: | + | Content-Type: |
| - | --a | + | <span style=" |
| - | Content-Type: | + | Content-Type: |
| - | --b | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Zobacz ten obrazek! | Zobacz ten obrazek! | ||
| [IMG] | [IMG] | ||
| - | --b | + | <span style=" |
| - | Content-Type: | + | Content-Type: |
| - | --c | + | <span style=" |
| Content-Type: | Content-Type: | ||
| - | <html><body><p>Zobacz ten obrazek!</p> | + | <html& |
| - | <p><img src=" | + | <p& |
| - | --c | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Content-Transfer-Encoding: | Content-Transfer-Encoding: | ||
| - | Content-ID: | + | Content-ID: |
| iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAATElEQVQY04WOOQ7AQAwCZ1b+/ | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAATElEQVQY04WOOQ7AQAwCZ1b+/ | ||
| ETvHpgjyISFAGN5YCNgjrP7GURBzioYgzEHcQ9mIFMRLHykg2AtU+0bVxCNq8am+oe6OJ8yf5QDW | ETvHpgjyISFAGN5YCNgjrP7GURBzioYgzEHcQ9mIFMRLHykg2AtU+0bVxCNq8am+oe6OJ8yf5QDW | ||
| ShMmZmKfpQAAAABJRU5ErkJggg== | ShMmZmKfpQAAAABJRU5ErkJggg== | ||
| - | --c | + | <span style=" |
| - | --b | + | <span style=" |
| - | --a | + | <span style=" |
| Content-Type: | Content-Type: | ||
| Content-Disposition: | Content-Disposition: | ||
| kopyrajt 2025 | kopyrajt 2025 | ||
| - | --a | + | <span style=" |
| - | </code> | + | </pre></ |
| ==== Kodowanie treści ==== | ==== Kodowanie treści ==== | ||
| Line 708: | Line 790: | ||
| Kodowanie dla danej części wiadomości można ustawić w nagłówku | Kodowanie dla danej części wiadomości można ustawić w nagłówku | ||
| - | // | + | //**Content-Transfer-Encoding**//. Domyślna wartość to '' |
| ogóle na użycie znaków spoza US-ASCII. | ogóle na użycie znaków spoza US-ASCII. | ||
| - | Inne dozwolone kodowana to " | + | Inne dozwolone kodowana to " |
| długość linii do 998 znaków, drugie nie nakłada ograniczenia na długość linii) | długość linii do 998 znaków, drugie nie nakłada ograniczenia na długość linii) | ||
| oraz '' | oraz '' | ||
| - | '' | + | '' |
| bez zmian przesyła drukowalne znaki ASCII poza znakiem równości, | bez zmian przesyła drukowalne znaki ASCII poza znakiem równości, | ||
| natomiast całą resztę (w tym np. spacje czy znaki nowej linii) koduje jako | natomiast całą resztę (w tym np. spacje czy znaki nowej linii) koduje jako | ||
| '' | '' | ||
| - | Powstały tekst zawija się przed 77 znakiem , wstawiając na koniec linii znak '' | + | Powstały tekst zawija się przed 78 znakiem, wstawiając na koniec linii znak '' |
| \\ | \\ | ||
| Np. '' | Np. '' | ||
| '' | '' | ||
| - | '' | + | '' |
| + | [[https:// | ||
| \\ | \\ | ||
| Np. '' | Np. '' | ||
| Line 731: | Line 814: | ||
| Kodowanie '' | Kodowanie '' | ||
| załączników i jest do tego celu niewydajne – base64 koduje 3 bit treści na | załączników i jest do tego celu niewydajne – base64 koduje 3 bit treści na | ||
| - | 4 bitach danych, więc objętość wiadomości rośnie o ⅓. | + | 4 bitach danych |
| + | wiadomości rośnie o ponad ⅓. | ||
| ~~Zadanie.# | ~~Zadanie.# | ||
sk2/mail.1736863685.txt.gz · Last modified: (external edit)