PV090: E-mail

Michal Rábek, <xrabek1@fi.muni.cz>

E-mail je služba elektronickej pošty, ktorá rieši problém zdĺhavého procesu doručovania pošty fyzickej výmenou za (takmer) nekonečné množstvo letákov v poštovej schránke.

High-level prehľad

Email stack sa skladá z: - 4 typov software - protokolu pre posielanie správ - protokolu pre príjmanie správ

picture

Zdroj: Computer Science Blog @ HdM Stuttgart

Ako email funguje

4 agenti

E-mailová adresa

SMTP

Príklad komunikácie

rabek@pofo:~$ telnet gmail-smtp-in.l.google.com 25
          Trying 142.250.102.26...
          Connected to gmail-smtp-in.l.google.com.
          Escape character is '^]'.
          220 mx.google.com ESMTP a640c23a62f3a-a9e565f355esi558983666b.477 - gsmtp

Klient:

helo gmail.com

Server:

250 mx.google.com at your service

Klient:

mail from: <rabek33@gmail.com> 

Server:

250 2.1.0 OK a640c23a62f3a-a9e565f355esi558983666b.477 - gsmtp

Klient:

rcpt to: <rabek33@gmail.com>

Klient:

250 2.1.5 OK a640c23a62f3a-a9e565f355esi558983666b.477 - gsmtp

Klient:

data
          354 Go ahead a640c23a62f3a-a9e565f355esi558983666b.477 - gsmtp
          From: "michal@fake.com" <michal@fake.com>
          Subject: This is just a test 
          Message-Id: <ABCDEFGH-1234-5678-ABCD-ABCDEFGHIJKLM@gmail.com>
          To: <rabek33@gmail.com>
          Content-Type: text/plain; charset=utf-8
          
          Hello,
          
          does it work?
          
          ---
          Michal Fake
          
          .
          
          quit

Prílohy

Mail client

2 typy:

  1. webové
  1. aplikácie

POP3 vs IMAP

Protokoly POP3 (Post Office Protocol 3) a IMAP (Internet Message Access Protocol) sa používajú pre sťahovanie pošty z MDA do MUA (zo serveru do klienta). Oba protokoly majú svoje výhody aj nevýhody, nedá sa objektívne povedať, ktorý z nich je lepší.

POP3 IMAP
Prístup z najviac jedného klienta Prístup z viac klientov súbežne
Offline prístup možný Prezeranie pošty vyžaduje pripojenie na internet
Ukladá poštu lokálne Žiadne sťahovanie, len cache
Stiahnuté správy sa zmažú z MDA Prezeranie správ ich nemaže
Šetrí diskový priestor serveru Môže šetriť diskový priestor klienta

Moja preferencia: IMAP + klient, ktorý ponecháva správy v cache, aby bola prístupná aj offline.

Mail server

Ako ukladať email?

maildir

Čo je to MX v DNS?

Príklad BIND zóny s MX záznamom

; base zone file for example.com
          $TTL 2d    ; default TTL for zone
          $ORIGIN example.com. ; base domain-name
          ; Start of Authority RR defining the key characteristics of the zone (domain)
          @         IN      SOA   ns1.example.com. hostmaster.example.com. (
                                          2003080800 ; serial number
                                          12h        ; refresh
                                          15m        ; update retry
                                          3w         ; expiry
                                          2h         ; minimum
                                          )
          ; name server RR for the domain
                     IN      NS      ns1.example.com.
          ; mail server RRs for the zone (domain)
                     IN      MX  10  mail.example.com.
          ; the second  mail servers is  external to the zone (domain)
                     IN      MX  20  mail.example.net.
          ; domain hosts includes NS and MX records defined above
          ; plus any others required
          ; for instance a user query for the A RR of joe.example.com will
          ; return the IPv4 address 192.168.254.6 from this zone file
          ns1        IN      A       192.168.254.2
          mail       IN      A       192.168.254.4

Zdroj: Dokumentácia BIND9

Stalwart mail server

Tento mail server ma zaujal tým, že je sa jedná o all-in-one mail server, teda implementuje SMTP, POP3, IMAP, správu mailboxu, a iné funkcie zároveň. Jedná sa o free open source projekt, ktorého vývoj začal v novembri 2021 a vyvíja ho londýnska firma Stalwart Labs. Kód projektu je verejný na GitHub a je napísaný v jazyku Rust.

Konfigurácia

Príklad konfigurácie

Príklad minimálneho konfiguračného súboru config.toml:

[server.listener."smtp"]
          bind = ["[::]:25"]
          protocol = "smtp"
          
          [server.listener."submissions"]
          bind = ["[::]:465"]
          protocol = "smtp"
          tls.implicit = true
          
          [server.listener."imaptls"]
          bind = ["[::]:993"]
          protocol = "imap"
          tls.implicit = true
          
          [storage]
          data = "rocksdb"
          fts = "rocksdb"
          blob = "rocksdb"
          lookup = "rocksdb"
          directory = "internal"
          
          [store."rocksdb"]
          type = "rocksdb"
          path = "%{env:STALWART_PATH}%/data"
          compression = "lz4"
          
          [directory."internal"]
          type = "internal"
          store = "rocksdb"
          
          [tracer."stdout"]
          type = "stdout"
          level = "info"
          ansi = false
          enable = true
          
          [authentication.fallback-admin]
          user = "admin"
          secret = "%{env:ADMIN_SECRET}%"

Zdroje: