Moodul 1 · 1.1
Ühe kirja teekond
Moodul 1: Kuidas e-post töötab · Lugemisaeg: 9 minutit
Õpieesmärk: pärast seda tundi oskad sammhaaval kirjeldada, kuidas kiri saatjalt saajani jõuab, ja öelda iga sammu juures, milline programm või server selle töö teeb.
Põhimõisted: meiliprogramm (MUA), saatmisserver (MSA, submission), meiliserver (MTA), MX-kirje, järjekord, kohaletoimetamine (MDA), mailboks, kättesaamine (IMAP/POP3), envelope, päiserid
Meil on nagu post, mitte vestlussõnum
Kui saadad vestlussõnumi, liigub see ühe ettevõtte kaudu: saatja rakendus ja saaja rakendus räägivad samade serveritega. E-post toimib teisiti. Saatja ja saaja võivad olla kummagi juures erinev teenusepakkuja: üks majutusettevõtte juures, teine Gmailis, kolmas Microsoft 365 juures või oma ettevõtte serveris. Ometi jõuab kiri kohale. See õnnestub, sest kõik maailma meiliserverid järgivad samu kokkuleppeid.
E-posti saab hästi võrrelda tavapostiga. Kirjutad kirja (sõnumi), paned selle ümbrikusse koos aadressiga (envelope), viid ümbriku postkasti (saatmisserver), postiettevõte uurib välja, kus aadress asub (MX-kirje otsing), veab kirja õigesse sorteerimiskeskusesse (saaja meiliserver) ja see paneb selle saaja postkasti (mailboks). Saaja käib selle sealt ära toomas siis, kui talle sobib.
Peatused ritta
Oletame, et Anna saadab kirja aadressilt anna@example.com aadressile jan@example.net. Nii see käib:
| Samm | Who | Mis toimub | Protokoll |
|---|---|---|---|
| 1 | Anna meiliprogramm (MUA, mail user agent) | Anna vajutab Saada. Programm logib sisse tema teenusepakkuja saatmisserverisse ja annab kirja üle. | SMTP-submission, port 587 või 465, sisselogimisega |
| 2 | example.com saatmisserver (MSA, mail submission agent) | Kontrollib, et Anna on tõesti Anna (kasutajanimi ja parool), paneb kirja järjekorda. | |
| 3 | Väljuv meiliserver (MTA, mail transfer agent) | Küsib DNS-ist: milline server võtab vastu kirju domeenile example.net? Need on MX-kirjed. | DNS |
| 4 | Väljuvast MTA-st saaja MTA-sse | Loob ühenduse MX-kirjes nimetatud serveriga ja annab kirja üle. | SMTP, port 25 |
| 5 | example.net saaja server | Kontrollib kirja (rämpspost, viirused, SPF, DKIM, DMARC) ja paneb selle Jani mailboksi. Seda viimast osa nimetatakse MDA-ks (mail delivery agent). | |
| 6 | Jani meiliprogramm või veebipost | Toob kirja ära või näitab seda otse serverist. | IMAP (port 993) või POP3 (port 995) |
Väiksemate teenusepakkujate juures on MSA, MTA ja MDA sageli üks ja sama programm ühes serveris. Suurte teenusepakkujate juures on need eraldi klastrid. Sinu jaoks ei muuda see suurt midagi: need on rollid, mitte eraldi kastid.
Pane tähele erinevust sammu 1 ja sammu 4 vahel. Mõlemad kasutavad SMTP-d, Simple Mail Transfer Protocol (RFC 5321). Kuid sammus 1 logid sisse ja kasutad porti 587 või 465; seda nimetatakse submission'iks (RFC 6409). Sammus 4 räägivad kaks serverit omavahel pordil 25, ilma sisse logimata: saaja server võtab vastu kirju oma domeenidele, olenemata sellest, kes saatja on. Tunnis 1.4 näed, miks see jaotus olemas on.
Samm 3 lähemalt: MX-kirje otsing
Saatev server ei tea iseenesest, kus example.net oma kirju vastu võtab. Ta küsib seda DNS-ist:
example.net. 3600 IN MX 10 mx1.mailprovider.example.
example.net. 3600 IN MX 20 mx2.mailprovider.example.Madalam number on eelistatum. Server proovib esmalt mx1, ja kui see ei vasta, siis mx2. Seejärel küsib ta selle nime IP-aadressi (A- või AAAA-kirje) ja loob ühenduse.
Kaks erijuhtumit, mida praktikas ette tuleb:
- MX-kirjet pole. Siis proovib saatja domeeni enda A- või AAAA-kirjet (nn "kaudne MX" RFC 5321 lõikest 5.1). See on jäänuk varasemast ajast ega toimi usaldusväärselt; igal domeenil, mis kirju vastu võtab, peaks olema MX-kirje.
- Null MX:
0 .See tähendab: "see domeen ei võta kunagi kirju vastu" (RFC 7505). Domeenilexample.comon selline olemas. Saatja loobub kohe ja saadab tagasi veateate, selle asemel et päevade kaupa proovida.
Kuidas MX-kirjed ja prioriteedid täpselt toimivad, loed DNS-kursuse tunnist 4.1.
Järjekord: e-postil on lubatud veidi aega võtta
Kiri ei jõua alati sekundiga kohale. Kui saaja server ei vasta või ütleb "proovi hiljem uuesti" (kood, mis algab numbriga 4), jääb kiri saatmisserveri järjekorda. Server proovib hiljem uuesti, iga kord veidi pikema vahega. RFC 5321 (lõige 4.5.4.1) soovitab katsete vahele jätta vähemalt 30 minutit ja loobuda alles 4 kuni 5 päeva pärast. Paljud serverid saadavad juba mõne tunni pärast hoiatuse ("delayed", veel kohale toimetamata) ja mõne päeva pärast lõpliku veateate.
See on e-posti tugev külg: kui meiliserver on tunni aega rivist väljas, ei lähe ükski kiri kaotsi. Samuti on see põhjus, miks kiri jõuab mõnikord kohale alles tunde hiljem. Moodulis 6 näed, kuidas sellist viivitust ära tunda.
Envelope ja päiserid: kaks aadressi
Nagu tavapostiski, on kirjal kahte liiki aadresse:
- Envelope. Need on aadressid, mida serverid omavahel SMTP-vestluses kasutavad:
MAIL FROM(saatja veateadete jaoks, hiljem nähtav kui Return-Path) jaRCPT TO(saaja). Serverid toimetavad kirja kohale envelope'i põhjal. - Päiserid (headers). See on see, mis on kirja sees:
From:,To:,Cc:,Subject:,Date:. Sinu meiliprogramm näitab neid.
Enamasti on need samad, aga mitte alati. BCC-saaja on küll envelope'is olemas, kuid mitte päiserites; seetõttu teised teda ei näe. Uudiskirjateenus paneb envelope-saatjaks oma aadressi, nii et veateated jõuavad teenuseni, samas kui From: väljal on sinu aadress. Ja petis võib panna From: välja mida iganes tahab.
Miks see oluline on: SPF kontrollib envelope-saatjat (envelope sender), kasutaja näeb From: välja. Seetõttu on olemas DMARC, mis need kaks omavahel seob (moodul 4).
Kus asjad valesti minna võivad
Selle skeemiga saad iga probleemi puhul küsida: millises peatuses läks valesti?
- Saatmine ei õnnestu (veateade kohe sinu programmis): samm 1 või 2. Peaaegu alati seadistuste küsimus: port, sisselogimine, parool (moodul 2).
- Saad tagastuskirja: samm 4 või 5. Saaja server lükkas kirja tagasi või aadressi ei ole olemas (moodul 6).
- Kiri jõuab kohale, aga rämpspostikausta: samm 5. Saaja ei usalda kirja (moodulid 4 ja 5).
- Saaja ei näe midagi ja sina ei saa veateadet: kiri on võib-olla ikka veel järjekorras või on saaja juures vaikselt filtreeritud. Siin aitavad saatmisserveri logid (moodul 6).
- Kiri ei jõua üldse sinu domeenile kohale: samm 3. MX-kirjed ei ole korras, näiteks pärast kolimist (moodul 8).
Praktikas: nii näeb see välja majutuspaketi puhul
WebOké majutuspaketi puhul täidab kõiki rolle üks server paketi kohta: sinu meiliprogramm annab kirja üle sellele serverile (sammud 1 ja 2), server saadab selle välja (sammud 3 ja 4) ja võtab vastu kirju sinu domeenile (samm 5). DirectAdminis näed E-mail Tracking funktsiooniga kirja kaupa, kas kiri on kohale toimetatud. Teiste teenusepakkujate juures töötab see sarnaselt; seal kannab selline funktsioon näiteks nime "sõnumi jälgimine" või "mail log".
Kokkuvõte
- Kiri liigub sinu meiliprogrammist (MUA) saatmisserveri (MSA/MTA) kaudu saaja serverisse (MTA/MDA) ja sealt edasi saaja meiliprogrammi.
- Saatmine oma programmist on SMTP-submission koos sisselogimisega (587/465); serverid räägivad omavahel SMTP-d pordil 25; kättesaamine toimub IMAP või POP3 kaudu.
- Saatev server otsib üles @ märgi järel oleva domeeni MX-kirjed. Null MX (
0 .) tähendab: see domeen kirju vastu ei võta. - Kiri, mida ei saa kohe kohale toimetada, jääb järjekorda ja seda proovitakse uuesti mitme päeva jooksul.
- Envelope (Return-Path) ja päiserid (From) on kaks erinevat saatjat. SPF vaatab esimest, kasutaja teist.
Test
Ülesanne
Ülesanne Z1.1: Esimese meiliserveri leidmine. Otsi üles domeeni gmail.com (või oma domeeni) MX-kirjed. Kirjuta üles, millist serverit proovitakse esimesena, koos tema prioriteedinumbriga, ja üks selle serveri IP-aadress (IPv4 või IPv6). Programm küsib samu andmeid reaalajas ja kontrollib need üle.
Verder lezen
Nende artiklite sammud kehtivad WebOké paneelide kohta; teiste teenusepakkujate juures toimib see sarnaselt.
- E-kirjade saatmise protsess / SMTP
- DirectAdmin juhend 8.7: IMAP või POP3: mis vahe on?
- Tasuta DNS-kursus 4.1: MX-kirjed ja prioriteet
- RFC 5321 (SMTP), lõige 5.1 (MX ja kaudne MX) ja 4.5.4.1 (uuesti proovimine); RFC 7505 (null MX)
