Difference between revisions of "Mail"

(Exempel av mailflöde)
(Dovecot)
Line 55: Line 55:
  
 
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 <code>mail-1</code> och <code>mail-2</code> med Dovecots inbyggda replikering. Det gör att även om du får mail på <code>mail-1</code> och den går ner så kan <code>mail-2</code> direkt efter fortsätta och ta över jobbet transparent.
 
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 <code>mail-1</code> och <code>mail-2</code> med Dovecots inbyggda replikering. Det gör att även om du får mail på <code>mail-1</code> och den går ner så kan <code>mail-2</code> direkt efter fortsätta och ta över jobbet transparent.
 +
 +
Vi har <code>imap.stacken.kth.se</code> som pekar på service-IP:t.
  
 
==== Sieve ====
 
==== Sieve ====

Revision as of 22:16, 1 August 2018

Mail

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, vi skickar även ut all post via KTH.

   $ 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)

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  ---> mail-N  --->  mx.kth.se  --->  frost@example.com
                                                                                    \
                                                                                     \-  --->  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å går mailet på de domänerna som har mailman 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 samtidigt.

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.

Vi har imap.stacken.kth.se som pekar på service-IP:t.

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.