Níže uvedeme příklad komunikace pomocí protokolů SMTP, POP3 a IMAP s mailovými servery. Pro uvedené příklady je potřeba telnetový klient, na linuxu je konzolový příkaz telnet
na Windows je vhodný program Putty
. Dále je potřeba nástroj pro zakódování textu do base64, na linuxu příkaz base64
nebo třeba online Utilities-online.info či base64decode.org a base64encode
Simple mail transfer protocol je určený pro komunikaci s odesílacím serverem a pro komunikaci mezi servery během doručování. Pro zkoušku si vytvoříme účet na serveru centrum.cz, kde mám odzkoušené, že se lze přes telnet přihlásit. Některé SMTP servery vyžadují vyšší míru zabezpečení komunikace, kterou je ručně těžké zajistit. Pro přihlášení potřebujeme následující údaje:
server | smtp.centrum.cz |
---|---|
port | 25 |
login | maturantiinf@centrum.cz |
heslo | smtpTest2020 |
Nejprve zjistíme, jak vypadá náš login a heslo zakódovaný pomocí base64. Buďto online nebo v linuxu příkazy:
echo -n „maturantiinf@centrum.cz“ | base64
a echo -n „smtpTest2020“ | base64
Všimněte si, že k příkazu echo
přidáváme volbu -n
, která zajistí, aby se nevypisovalo odřádkování, jinak bychom v kódu měli na konci loginu či hesla ještě navíc „enter“, čili znaky ASCII 10 a 13, které by způsobovaly, že jméno a heslo bude špatně. Pokud příkazy zadáváte do konzole, všimněte si, že před echo u hesla jsem udělal mezeru, čímž zamezím tomu, aby se tento příklad uložil do historie použitých příkazů v souboru /home/user/.bash_history
.
Připojíme se k serveru telnetovým programem. V linuxu zadáme telnet smtp.centrum.cz 25
v Putty zvolíme u session „Host name: smtp.centrum.cz“, „Connection type: RAW“ a „Port: 25“, ještě je praktické vespod zvolit „Close window on exit: Never“, aby se nám okno nezavřelo ihned po ukončení spojení, ale abychom jej zavřeli křížkem, až si vše přečteme.
Nyní probíhá komunikace:
► | 220 smtp.centrum.cz ESMTP MAdfix (User/GNU) | server nás zdraví, je připraven si povídat |
◄ | ehlo centrum.cz | pozdravíme server s názvem jeho domény |
► | 250-gm-smtp11.centrum.cz 250-PIPELINING 250-SIZE 26214400 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250-CHUNKING 250 STARTTLS | server nás informuje o způsobech komunikace, mimojiné říká, že akceptuje autorizaci ve formě PLAIN nebo LOGIN |
◄ | AUTH LOGIN | zvolíme si jako metodu autorizace LOGIN, kdy postupně zadáme base64 zakódovaný login a pak heslo |
► | 334 VXNlcm5hbWU6Cg== | server posílá kód 334, kterým akceptuje požadovanou metodu autorizace a přímo v kódu base64 odpovídá „Username:“ |
◄ | bWF0dXJhbnRpaW5mQGNlbnRydW0uY3o= | zadáme base64 zakódovaný login |
► | 334 UGFzc3dvcmQ6Cg== | data byla úspěšně převzata, teď požaduje „Password:“ (sekvence znaků za číslem dekódovaná base64) |
◄ | c210cFRlc3QyMDIw | zadáme base64 zakódované heslo |
► | 235 2.7.0 Authentication successful | Jsme úspěšně přihlášení |
◄ | mail from: maturantiinf@centrum.cz | Zadáme adresu odesílatele |
► | 250 2.1.0 Ok | Server přijal odesílatele (některé servery nevezmou jinou adresu, než odpovídající autorizovanému uživateli) |
◄ | rcpt to: rydlo@gml.cz | Zadáme adresu příjemce |
► | 250 2.1.5 Ok | Server přijal adresu příjemce zprávy. |
◄ | data | Chceme začít psát mail |
► | 354 End data with <CR><LF>.<CR><LF> | Server povoluje začít psát a informuje nás, že máme ukončit zadávání dat jedním prázdným odstavcem, který následuje odstavec jen s tečkou. |
◄ | Subject: Testovací mail Ahoj, posílám ti testovací mail. Maturant z GML . | Nejprve zadáme předmět za „Subject: “, po něm musíme mít jeden prázdný řádek (dvojí odentrování), následuje text zprávy, který dokončíme tak, že uděláme jeden prázdný odstavec, pak odstavec jen s tečkou a odentrování. |
► | 250 2.0.0 Ok: queued as 6D9DBC063A35 | Zadaná zpráva byla přijata do fronty k odeslání. |
◄ | quit | Nechceme-li psát další mail, spojení ukončíme. |
► | 221 2.0.0 Bye | Server se s námi loučí a ukončuje spojení. |