Contents
Utifrån kommer mail in via KTH:s MX, vilket syns tydligt om man kollar på Stackens DNS. Det är uppsatt så för att KTH vill att mail under *.kth.se ska gå via dem, det har dessutom den stora fördelen att vi slipper mycket spam.
$ dig +short mx stacken.kth.se 10 mx.kth.se.
E-post som KTH vet att vi hanterar, som t.ex. *@stacken.kth.se
eller *@karspexet.se
går sedan till incoming-email.stacken.kth.se
.
Exempel av mailflöde
Användaren nsg som har en IMAP postlåda.
TO:nsg@stacken.kth.se ---> mx.kth.se ---> mail-N ---> Mailbox (nsg)
Användaren frost som har en forward till en extern adress, antingen via det klassiska sätter i en virtual_alias_maps i Postfix, eller via en Sieve-regel.
TO:frost@stacken.kth.se ---> mx.kth.se ---> mail-N ---> mx.kth.se ---> frost@example.com
En klassisk "mailing-list.conf"-style baserad mailing-lista som är baserad på virtual_alias_maps. I dag finns det en mailing-lists.yml i git-repot.
TO:staff@stacken.kth.se ---> mx.kth.se ---> mail-N ---> mx.kth.se ---> frost@example.com \ \ \- ---> Mailbox (nsg) \- ---> fabian@example.com
En lista baserad på mailman, den går till mailman-servern karamell, och skickar sedan mailet ut samma väg igen.
TO:stacken@stacken.kth.se ---> mx.kth.se ---> mail-N ---> karamell / frost@example.com <--- mx.kth.se <--- mail-N <--- -/ / Mailbox (nsg) <--- -/
Användaren nsg till användaren fabian där båda har IMAP-lådor.
TO:nsg@stacken.kth.se ---> Mailbox (fabian)
Slutligen, om du mailar en adress som ej finns så flödar den i dag på de domänerna som mailman är uppsatt på först till mail-1 eller mail-2, och sedan vidare till karamell. Det för att slippa specificera alla listor på mail-1/2. Det finns mycket möjligheter att konfigurera hur mailen flödar fram över om man t.ex. vill ha flera olika listsystem m.m.
Stacken Mailservrar
Stacken har i dag två servrar som kan ta i mot e-post, mail-1
och mail-2.stacken.kth.se
. Båda är identiska och provisionerade av en Ansible playbook. För tillfället ligger den i ett privat repo som bara ett fåtal har tillgång till, prata med nsg för att få tillgång. Planen är att flytta det till en maskin på Stacken så att alla administratörer har tillgång.
Maskinerna är virtuella maskiner på Marlin. Planen är att en av maskinerna ska flytta till fysiska separat hypervisor.
Maskinerna kör keepalived för att hantera IP-numret som incoming-email.stacken.kth.se
pekar på, ingen av dem har högre vikt så IP:t prioriterar inte en maskin över den andra, det är garanterat att bara en maskin åt gången har IP-nummret. Det gör det säkert att ta ner en av maskinerna för service m.m. utan att ta ner några tjänster.
Tjänster
Postfix
MTA på maskinerna är Postfix, den har en ganska strikt konfiguration där bara en vitlista av adresser får prata SMTP för att leverera mail. Då all inkommande mail ska gå via KTH kommer vi undan med det. Normalt sätt måste man tillåta hela världen prata SMTP med en så de kan leverera mail, men vi vet att det bara är Stackens maskiner och KTH som pratar med oss. Är man inloggad med användarnamn och lösenord så får man dock prata SMTP med servern, det är viktigt för att kunna skicka mail från t.ex. Thunderbird när du är hemma på ett icke-Stackennät.
Vi har smtp.stacken.kth.se
som pekar på service-IP:t.
Dovecot
Dovecot är en utmärkt IMAP-server som vi använder för lokala mailboxar. Postfix använder dessutom Dovecot för auth mot SMTP. Mailboxarna är det enda "state" som finns på maskinerna, de är replikerade mellan mail-1
och mail-2
med Dovecots inbyggda replikering. Det gör att även om du får mail på mail-1
och den går ner så kan mail-2
direkt efter fortsätta och ta över jobbet transparent.
Sieve
Sieve filter är ett regelspråk för att skapa e-postfilter som ligger på servern. Ett plugin till Dovecot hanterar dina filter på inkommande mail. Vi kör även en Sieve Server vilket gör att du kan redigera dina filer i e-postläsare som stödjer Sieve Management Protocol, ett exempel på det är Thunderbird med ett plugin. Filtren replikeras mellan servrarna.
Forwards & Alias-baserade mailinglistor
Gamla mailing-list.conf används inte längre, just nu används en kraftigt städad lista i Git-repot för både forwards och klassiska alias-baserade mailing-listor. Planen är att avveckla forwards och be folk använda Sieve filters i stället, samt många alias-baserade mailing-listor bör bli riktiga mailing-listor, t.ex. Mailman.
Mailman
Stackens mailman-server heter karamell.stacken.kth.se
och hanterar ett flertalet listor. Servern har en egen Postfix som tar i mot post från Stackens övriga mailservrar, utgående post går sedan tillbaka till smtp.stacken.kth.se
.