Skip to content

Poštni strežnik

Učni list 9: Vzpostavitev poštnega strežnika z Postfix in Dovecot

Namen vaje

Tvoja naloga je, da vzpostaviš osnovni laboratorijski poštni sistem in razumeš delitev med pošiljanjem pošte (SMTP) ter branjem pošte (IMAP/POP3).

Kako brati mikro razlage
  • razčlenitev sintakse — kaj pomeni posamezni del ukaza
  • kaj se zgodi po pritisku Enter — neposredna posledica v sistemu ali omrežju
  • na kaj ukaz vpliva — datoteka, proces ali port
  • kaj pričakuješ kot rezultat — konkretna kontrolna točka

Cilj je, da ne ostaneš na ravni prepisal sem ukaz, ampak prideš do ravni vem, zakaj sem ga izvedel in kaj moram po njem preveriti.

Cilji
  • razumeš razliko med SMTP in IMAP/POP3
  • znaš namestiti Postfix in Dovecot
  • znaš pripraviti osnovno laboratorijsko domeno za pošto
  • znaš ustvariti uporabnike in preveriti dostavo sporočila
  • znaš s klienta preveriti odziv SMTP in IMAP servisa
Potrebna oprema in predznanje
  • DNS zapis mail.lab.local kaže na strežnik
  • strežnik ima ime ali zapis, povezan z laboratorijsko pošto
  • razumeš osnovni pojem uporabniškega računa na Linuxu
Teorija v ozadju

Poštni sistemi niso ena sama storitev. SMTP skrbi za pošiljanje oziroma predajo pošte. IMAP in POP3 pa skrbita za dostop do uporabniških nabiralnikov.

V tej vaji bomo uporabili Postfix kot SMTP strežnik in Dovecot kot IMAP/POP3 strežnik. Namen vaje ni zgraditi internet-ready poštni sistem, ampak razumeti tok pošte v lokalnem laboratoriju.

Laboratorijska domena lab.local je dobra za razumevanje koncepta, ni pa primerna za javno produkcijsko dostavo na internet. V internetu pridejo v igro še SPF, DKIM, DMARC, TLS, antispam in kup drugih glavobolov.

Na kaj je treba paziti
  • To je laboratorijska pošta, ne produkcijska rešitev za internet.
  • Pri namestitvi Postfixa izberi način “Internet Site”, a ohrani misel, da to počnemo v internem omrežju.
  • Če pošta pride v mapo uporabnika, a klient ne zna brati prek IMAP, je problem v Dovecotu ali v klientu, ne nujno v Postfixu.

Kako brati to vajo

Vsak korak ima tri plasti: kaj narediš, kaj ukaz pomeni in kaj se v ozadju zgodi v sistemu ali omrežju. Cilj ni slepo kopiranje ukazov, ampak razumevanje, zakaj posamezni korak obstaja.

1. Preveri DNS zapis za poštni strežnik in MX

Kaj narediš

Na klientu ali strežniku preveri, ali mail.lab.local kaže na strežnik in ali domena vsebuje MX zapis.

Ukazi

dig mail.lab.local
dig lab.local MX
Mikro razlaga ukazov

Ukaz 1: dig mail.lab.local

  • Razčlenitev sintakse:
  • dig pošlje DNS poizvedbo za mail.lab.local in prikaže natančen odgovor strežnika.
  • Kaj se zgodi po pritisku Enter: Pošlješ DNS poizvedbo in vidiš, kaj konkretni strežnik vrne za ime, IP naslov ali MX zapis.
  • Na kaj ta ukaz vpliva:
  • Porti: 53/TCP, 53/UDP
  • Kaj pričakuješ kot rezultat: V odgovoru vidiš pravilen zapis A, PTR ali MX ter pravi naslov iz laboratorijske domene.

Ukaz 2: dig lab.local MX

  • Razčlenitev sintakse:
  • dig pošlje DNS poizvedbo za lab.local MX in prikaže natančen odgovor strežnika.
  • Kaj se zgodi po pritisku Enter: Pošlješ DNS poizvedbo in vidiš, kaj konkretni strežnik vrne za ime, IP naslov ali MX zapis.
  • Na kaj ta ukaz vpliva:
  • Porti: 53/TCP, 53/UDP
  • Kaj pričakuješ kot rezultat: V odgovoru vidiš pravilen zapis A, PTR ali MX ter pravi naslov iz laboratorijske domene.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Poštni sistem je močno odvisen od DNS-a. Če nimaš pravilnega A in MX zapisa, je logika pošte nepopolna že na konceptualni ravni.

Kaj se dogaja v ozadju

MX zapis pove, kateri strežnik sprejema pošto za domeno. A zapis pa omogoča, da se to ime pretvori v IP naslov.

Primer povezave med zapisoma

lab.local.        IN MX 10 mail.lab.local.
mail.lab.local.   IN A      192.168.56.10

To pomeni: pošiljatelj najprej iz MX zapisa izve ime poštnega strežnika, nato pa iz A zapisa dobi še njegov IP naslov.

Kaj moraš opaziti

Pričakuješ, da mail.lab.local kaže na 192.168.56.10 in da je MX nastavljen na mail.lab.local..

Če ne dela, preveri

  • Če teh zapisov ni, se vrni na DNS vajo in jih dodaj.
2. Na strežniku nastavi smiselno ime gostitelja za pošto

Kaj narediš

Strežnik lahko po želji preimenuješ v mail ali pa vsaj dodaš ustrezen zapis.

Ukazi

hostnamectl
cat /etc/hosts
Mikro razlaga ukazov

Ukaz 1: hostnamectl

  • Razčlenitev sintakse:
  • Pokaže trenutno sistemsko ime, tip virtualizacije, jedro in druge osnovne podatke o sistemu.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/hostname
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 2: cat /etc/hosts

  • Razčlenitev sintakse:
  • cat prebere in izpiše vsebino datoteke /etc/hosts na terminal.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/hosts
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Ni nujno, da je sistemsko ime nujno mail, je pa didaktično lepo, če se poštni strežnik tudi tako predstavi.

Kaj se dogaja v ozadju

Postfix uporablja nastavitve myhostname in sorodne parametre za identiteto pri SMTP dialogu.

Kaj moraš opaziti

Pomembno je, da konfiguracija in DNS skupaj smiselno opisujeta isti strežnik.

Če ne dela, preveri

  • Če zamenjaš hostname, ne pozabi uskladiti /etc/hosts in po potrebi DNS-a.
3. Namesti Postfix, Dovecot in poštna orodja

Kaj narediš

Na strežniku namesti SMTP in IMAP/POP3 komponento ter ukaz mail.

Ukazi

sudo apt update
sudo apt install postfix dovecot-imapd dovecot-pop3d mailutils -y
Mikro razlaga ukazov

Ukaz 1: sudo apt update

  • Razčlenitev sintakse:
  • sudo ukaz izvede z administratorskimi pravicami.
  • apt je upravljalnik paketov na Debian/Ubuntu sistemih.
  • update ne namešča programov; samo osveži lokalni seznam paketov iz repozitorijev.
  • Kaj se zgodi po pritisku Enter: Sistem osveži lokalne informacije o paketih. Ni še spremembe storitev, ampak priprava na korektno namestitev ali posodobitev.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 2: sudo apt install postfix dovecot-imapd dovecot-pop3d mailutils -y

  • Razčlenitev sintakse:
  • install namesti navedene pakete: postfix dovecot-imapd dovecot-pop3d mailutils.
  • -y samodejno potrdi namestitev.
  • Kaj se zgodi po pritisku Enter: Na sistem se namesti nov paket oziroma storitev. Ob tem se pogosto ustvarijo konfiguracijske datoteke, sistemska enota systemd in včasih se servis zažene že sam.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/postfix/main.cf, /etc/dovecot/conf.d/10-mail.conf
  • Procesi/storitve: postfix, dovecot
  • Porti: 25/TCP, 143/TCP
  • Kaj pričakuješ kot rezultat: Paket se namesti brez napake, na koncu pa ni vrstice tipa E: ali failed.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Postfix sprejema in oddaja pošto, Dovecot pa omogoča dostop do poštnih nabiralnikov. mailutils doda praktično orodje mail za lokalno testiranje.

Kaj se dogaja v ozadju

Pri namestitvi Postfixa boš izbiral način konfiguracije. Za laboratorij izberi Internet Site in kot sistemsko ime pošte vnesi mail.lab.local.

Kaj moraš opaziti

Po namestitvi naj bosta na voljo servisa postfix in dovecot.

Če ne dela, preveri

  • Če čarovnik Postfixa ni pravilno nastavljen, bomo ključne vrstice vseeno ročno uredili v naslednjem koraku.
4. Uredi osnovno konfiguracijo Postfixa

Kaj narediš

V datoteki main.cf nastavi laboratorijsko domeno in dostavo v Maildir.

Ukazi

sudo nano /etc/postfix/main.cf
Mikro razlaga ukazov

Ukaz 1: sudo nano /etc/postfix/main.cf

  • Razčlenitev sintakse:
  • nano odpre besedilno datoteko v terminalskem urejevalniku.
  • Odpira se datoteka /etc/postfix/main.cf. Če datoteka še ne obstaja, jo boš ob shranjevanju ustvaril.
  • Kaj se zgodi po pritisku Enter: Sprememba se še ne zgodi v teku storitve. Najprej spremeniš datoteko na disku; učinek nastopi šele po restartu ali reloadu storitve.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/postfix/main.cf
  • Procesi/storitve: postfix
  • Porti: 25/TCP
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Primer konfiguracije

myhostname = mail.lab.local
mydomain = lab.local
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
mynetworks = 127.0.0.0/8 192.168.56.0/24

Kaj ta korak pomeni

myhostname določa identiteto strežnika, mydomain domeno, mydestination pove, za katere domene je ta strežnik lokalni končni cilj, home_mailbox = Maildir/ pa določi, da se pošta shranjuje v uporabnikovo mapo Maildir.

Kaj se dogaja v ozadju

Maildir je praktičen format, kjer so sporočila shranjena kot posamezne datoteke. Dovecot se z njim dobro razume.

Kaj moraš opaziti

V datoteki ne smejo ostati protislovne stare vrstice za iste nastavitve.

Če ne dela, preveri

  • Če imaš iste parametre zapisane večkrat, boš hitro izgubil pregled nad tem, kaj dejansko velja.
5. Uredi Dovecot za Maildir

Kaj narediš

Nastavi Dovecot, da bere uporabniške poštne predale iz Maildir.

Ukazi

sudo nano /etc/dovecot/conf.d/10-mail.conf
Mikro razlaga ukazov

Ukaz 1: sudo nano /etc/dovecot/conf.d/10-mail.conf

  • Razčlenitev sintakse:
  • nano odpre besedilno datoteko v terminalskem urejevalniku.
  • Odpira se datoteka /etc/dovecot/conf.d/10-mail.conf. Če datoteka še ne obstaja, jo boš ob shranjevanju ustvaril.
  • Kaj se zgodi po pritisku Enter: Sprememba se še ne zgodi v teku storitve. Najprej spremeniš datoteko na disku; učinek nastopi šele po restartu ali reloadu storitve.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/dovecot/conf.d/10-mail.conf
  • Procesi/storitve: dovecot
  • Porti: 143/TCP
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Primer konfiguracije

mail_location = maildir:~/Maildir

Kaj ta korak pomeni

Dovecot mora vedeti, kje pošta fizično leži. Če Postfix dostavlja v Maildir, mora tudi Dovecot iskati tam.

Kaj se dogaja v ozadju

Če Postfix in Dovecot ne govorita o isti lokaciji pošte, bo pošta “obstajala”, a je klient ne bo videl.

Kaj moraš opaziti

Vrednost mail_location mora biti usklajena z načinom dostave v Postfixu.

Če ne dela, preveri

  • Če uporabljaš drug format nabiralnika, bo ta vrstica drugačna. Za to vajo ostajamo pri Maildir, ker je preglednejši.
6. Ustvari laboratorijska uporabnika

Kaj narediš

Na strežniku ustvari npr. uporabnika alice in bob.

Ukazi

sudo adduser alice
sudo adduser bob
Mikro razlaga ukazov

Ukaz 1: sudo adduser alice

  • Razčlenitev sintakse:
  • adduser ustvari lokalnega uporabnika alice in pripravi njegov domači imenik.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 2: sudo adduser bob

  • Razčlenitev sintakse:
  • adduser ustvari lokalnega uporabnika bob in pripravi njegov domači imenik.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Lokalni uporabniški računi bodo imeli vsak svoj domači imenik in s tem tudi svoj poštni predal.

Kaj se dogaja v ozadju

V tej vaji ne postavljamo virtualnih domen in ločenih poštnih baz. Uporabimo najpreprostejši model: sistemski uporabniki = poštni uporabniki.

Kaj moraš opaziti

Po ustvarjanju uporabnikov imata oba domača imenika v /home.

Če ne dela, preveri

  • Če pozabiš geslo uporabnika, bo kasnejša prijava v IMAP klient lahko težavna.
7. Ponovno zaženi servisa in preveri poslušanje portov

Kaj narediš

Naloži novo konfiguracijo Postfixa in Dovecota.

Ukazi

sudo systemctl restart postfix
sudo systemctl restart dovecot
sudo systemctl status postfix
sudo systemctl status dovecot
ss -tulpen | egrep ":25|:143"
Mikro razlaga ukazov

Ukaz 1: sudo systemctl restart postfix

  • Razčlenitev sintakse:
  • restart ustavi in ponovno zažene enoto postfix. To je potrebno po spremembi konfiguracije.
  • Kaj se zgodi po pritisku Enter: Proces storitve ponovno prebere konfiguracijo. Če je konfiguracija napačna, se storitev lahko ne zažene ali ostane v stanju napake.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/postfix/main.cf
  • Procesi/storitve: postfix
  • Porti: 25/TCP
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 2: sudo systemctl restart dovecot

  • Razčlenitev sintakse:
  • restart ustavi in ponovno zažene enoto dovecot. To je potrebno po spremembi konfiguracije.
  • Kaj se zgodi po pritisku Enter: Proces storitve ponovno prebere konfiguracijo. Če je konfiguracija napačna, se storitev lahko ne zažene ali ostane v stanju napake.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/dovecot/conf.d/10-mail.conf
  • Procesi/storitve: dovecot
  • Porti: 143/TCP
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 3: sudo systemctl status postfix

  • Razčlenitev sintakse:
  • systemctl upravlja storitve v systemd.
  • status postfix pokaže, ali je enota postfix aktivna, kdaj je bila zagnana in ali je javila napake.
  • Kaj se zgodi po pritisku Enter: Ne spreminja sistema, ampak ti da opazovalno točko: ali storitev teče, od kdaj teče in ali javlja napake.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/postfix/main.cf
  • Procesi/storitve: postfix
  • Porti: 25/TCP
  • Kaj pričakuješ kot rezultat: V izpisu iščeš stanje active (running) ali vsaj jasen razlog, zakaj storitev ni aktivna.

Ukaz 4: sudo systemctl status dovecot

  • Razčlenitev sintakse:
  • systemctl upravlja storitve v systemd.
  • status dovecot pokaže, ali je enota dovecot aktivna, kdaj je bila zagnana in ali je javila napake.
  • Kaj se zgodi po pritisku Enter: Ne spreminja sistema, ampak ti da opazovalno točko: ali storitev teče, od kdaj teče in ali javlja napake.
  • Na kaj ta ukaz vpliva:
  • Datoteke: /etc/dovecot/conf.d/10-mail.conf
  • Procesi/storitve: dovecot
  • Porti: 143/TCP
  • Kaj pričakuješ kot rezultat: V izpisu iščeš stanje active (running) ali vsaj jasen razlog, zakaj storitev ni aktivna.

Ukaz 5: ss -tulpen | egrep ":25|:143"

  • Razčlenitev sintakse:
  • Ukaz ss -tulpen | egrep ":25|:143" izvedi natančno tako, kot je zapisan, nato pa preveri učinek na storitev, datoteko ali mrežno povezavo.
  • Kaj se zgodi po pritisku Enter: Pregleduješ stanje mrežnih vtičnic v jedru. Tako preveriš, ali je storitev res odprla pričakovani port.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: V izpisu vidiš pričakovani port in pravilni proces, ki posluša promet.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Postfix mora poslušati SMTP na portu 25, Dovecot pa IMAP na 143. To je osnovni tehnični dokaz, da obe storitvi živita.

Kaj se dogaja v ozadju

Tukaj se lepo vidi delitev vlog: en servis za pošiljanje, drugi za branje.

Kaj moraš opaziti

Pričakuješ oba servisa v stanju active (running) in porta 25 ter 143 v izpisu.

Če ne dela, preveri

  • Če eden teče, drugi pa ne, ne mešaj diagnostike. Obravnavaj vsak servis posebej.
8. Pošlji prvo lokalno sporočilo med uporabnikoma

Kaj narediš

Kot uporabnik alice pošlji sporočilo uporabniku bob.

Ukazi

sudo -u alice bash -c "echo Pozdrav iz laboratorija | mail -s Test bob@lab.local"
Mikro razlaga ukazov

Ukaz 1: sudo -u alice bash -c "echo Pozdrav iz laboratorija | mail -s Test bob@lab.local"

  • Razčlenitev sintakse:
  • sudo -u alice ukaz izvede kot uporabnik alice.
  • mail -s pošlje e-pošto z zadevo in vsebino prek lokalnega MTA, tukaj prek Postfix-a.
  • Prejemnik sporočila je bob@lab.local.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Porti: 25/TCP, 143/TCP
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

S tem testiraš lokalno oddajo pošte skozi Postfix brez potrebe po zunanjem odjemalcu.

Kaj se dogaja v ozadju

Ukaz mail pošlje sporočilo lokalnemu MTA-ju (Postfix), ki ga nato dostavi v Maildir uporabnika bob.

Kaj moraš opaziti

V uporabnikovi mapi bob se mora ustvariti struktura Maildir, če je prej še ni bilo.

Če ne dela, preveri

  • Če sporočilo ne pride, preveri mailq in dnevnike Postfixa.
9. Preveri, ali je pošta res dostavljena v Maildir

Kaj narediš

Na strežniku kot uporabnik bob preglej nabiralnik.

Ukazi

sudo -u bob ls -R /home/bob/Maildir
sudo -u bob find /home/bob/Maildir -type f | head
Mikro razlaga ukazov

Ukaz 1: sudo -u bob ls -R /home/bob/Maildir

  • Razčlenitev sintakse:
  • Ukaz kot uporabnik bob rekurzivno pregleda vsebino poti /home/bob/Maildir.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Datoteke: ~/Maildir
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 2: sudo -u bob find /home/bob/Maildir -type f | head

  • Razčlenitev sintakse:
  • find poišče datoteke v poti /home/bob/Maildir.
  • -type f omeji rezultat samo na datoteke.
  • head pokaže samo prvih nekaj rezultatov, da izpis ostane berljiv.
  • Kaj se zgodi po pritisku Enter: Takoj preveri, kaj se je spremenilo.
  • Na kaj ta ukaz vpliva:
  • Datoteke: ~/Maildir
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

Tu prvič fizično vidiš, kje pošta leži. To je zelo didaktično: sporočilo ni abstrakten oblak, ampak konkretna datoteka.

Kaj se dogaja v ozadju

V Maildir formatu so sporočila običajno v mapah new, cur in tmp.

Kaj moraš opaziti

V mapi new ali cur mora biti vsaj ena datoteka s sporočilom.

Če ne dela, preveri

  • Če mape ni, se pošta ni dostavila ali pa format ni pravilno nastavljen.
10. S klienta preveri SMTP in IMAP odziv

Kaj narediš

Na klientu se z nc poveži na port 25 in 143 ter preveri pozdravni banner.

Ukazi

nc -vz mail.lab.local 25
nc -vz mail.lab.local 143
Mikro razlaga ukazov

Ukaz 1: nc -vz mail.lab.local 25

  • Razčlenitev sintakse:
  • nc oziroma netcat preveri povezljivost do gostitelja mail.lab.local na portu 25.
  • -v poda bolj zgovoren izpis, -z pa samo preveri odprt port brez pošiljanja podatkov.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Porti: 25/TCP, 143/TCP
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 2: nc -vz mail.lab.local 143

  • Razčlenitev sintakse:
  • nc oziroma netcat preveri povezljivost do gostitelja mail.lab.local na portu 143.
  • -v poda bolj zgovoren izpis, -z pa samo preveri odprt port brez pošiljanja podatkov.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Porti: 25/TCP, 143/TCP
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

To je minimalen omrežni test, da sta storitvi dosegljivi tudi z druge virtualke.

Kaj se dogaja v ozadju

Če klient doseže banner, pomeni, da sta mreža in servisna vrata pravilno odprta.

Kaj moraš opaziti

Povezava na oba porta mora uspeti.

Če ne dela, preveri

  • Če ime ne deluje, preveri DNS. Če ime deluje, povezava pa ne, preveri požarni zid ali servis.
11. Po želji ročno odigraj SMTP dialog

Kaj narediš

Na klientu se poveži z nc na SMTP port in pošlji kratko testno sporočilo ročno.

Ukazi

nc mail.lab.local 25
EHLO client.lab.local
MAIL FROM:<alice@lab.local>
RCPT TO:<bob@lab.local>
DATA
To je testno sporocilo.
.
QUIT
Mikro razlaga ukazov

Ukaz 1: nc mail.lab.local 25

  • Razčlenitev sintakse:
  • Odpre ročno TCP sejo do gostitelja mail.lab.local na portu 25.
  • To je surov test protokola, kjer sam tipkaš SMTP ukaze.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Porti: 25/TCP, 143/TCP
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 2: EHLO client.lab.local

  • Razčlenitev sintakse:
  • SMTP ukaz EHLO predstavi klienta z imenom client.lab.local in zahteva seznam zmožnosti strežnika.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 3: MAIL FROM:<alice@lab.local>

  • Razčlenitev sintakse:
  • SMTP ukaz določi naslov pošiljatelja: alice@lab.local.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 4: RCPT TO:<bob@lab.local>

  • Razčlenitev sintakse:
  • SMTP ukaz določi naslov prejemnika: bob@lab.local.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 5: DATA

  • Razčlenitev sintakse:
  • Po ukazu DATA strežnik pričakuje telo sporočila in glave.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 6: To je testno sporocilo.

  • Razčlenitev sintakse:
  • To je vsebina telesa testnega sporočila, ki jo strežnik shrani v poštni predal prejemnika.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: Poišči en jasen, preverljiv učinek.

Ukaz 7: .

  • Razčlenitev sintakse:
  • Sama pika v svoji vrstici zaključi vnos telesa SMTP sporočila.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.

Ukaz 8: QUIT

  • Razčlenitev sintakse:
  • Konča SMTP sejo in korektno zapre povezavo.
  • Kaj se zgodi po pritisku Enter: Preverjaš tok elektronske pošte: sprejem SMTP povezave, oddajo sporočila in kasnejšo hrambo v uporabnikovem predalu.
  • Na kaj ta ukaz vpliva:
  • Ugotovi, ali ukaz stanje samo preveri ali ga spremeni.
  • Kaj pričakuješ kot rezultat: SMTP strežnik sprejme ukaze brez napake, uporabnik pa v Maildir dejansko dobi novo sporočilo.
Zakaj je korak pomemben

Če ta ukaz izvedeš brez razumevanja, bo sistem morda na videz deloval, ti pa ne bo jasno, kje iskati napako. Zato po vsakem takem bloku vedno preveri vsaj eno od treh stvari: datoteko, stanje storitve ali omrežni odziv.

Kaj ta korak pomeni

To je eden najboljših načinov, da zares razumeš, da je SMTP samo besedilni protokol z ukazi in odgovori.

Kaj se dogaja v ozadju

Ročni dialog odstrani “čarovnijo” grafičnega klienta in pokaže, kako pošta dejansko teče skozi protokol.

Kaj moraš opaziti

Strežnik mora vrniti odzive tipa 250 OK in na koncu sprejeti sporočilo.

Če ne dela, preveri

  • Če RCPT TO zavrne prejemnika, preveri domeno in lokalne uporabnike.
Preverjanje delovanja
  • [ ] Postfix in Dovecot sta nameščena in aktivna
  • [ ] SMTP port 25 in IMAP port 143 poslušata
  • [ ] uporabnika alice in bob obstajata
  • [ ] sporočilo se dostavi v bobov Maildir
  • [ ] klient doseže poštni strežnik po imenu mail.lab.local
Vprašanja za razmislek
  1. Kakšna je razlika med SMTP in IMAP?
  2. Zakaj uporabljamo Postfix in Dovecot skupaj?
  3. Kaj je Maildir?
  4. Zakaj laboratorijska pošta še ni produkcijska internetna pošta?
Dodatni izziv

Na klient namesti preprost tekstovni poštni odjemalec ali grafični IMAP klient in se prijavi kot bob. Nato primerjaj, kaj vidi klient in kaj vidiš v Maildir strukturi na strežniku.

Mini povzetek

Po tej vaji moraš znati na kratko razložiti, kaj je vloga servisa vzpostavitev poštnega strežnika v omrežju, kateri proces ali konfiguracija ga omogoča in kako ga preverimo s klienta.