Difference between revisions of "Mail"

(Exempel av mailflöde)
(Mailman)
 
(38 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Mail ==
+
[[File:Stacken-mail-rcpt-nsg.png|thumb|baseline|Användaren nsg på Stacken har e-post på Stacken, han använder Stackens e-post fullt ut och får sin post levererad till Stackens servrar vilket han läser med en IMAP-klient.]]
 +
[[File:Stacken-mail-rcpt-frost.png|thumb|baseline|Användaren frost skickar vidare sin e-post till en extern adress, via en forward, eller via en Sieve-regel.]]
 +
[[File:Stacken-mail-rcpt-stacken.png|thumb|baseline|Servern Karamell processer Stackens listor, i det här exemplet så får både mailboxar på Stacken, användare som har valt att skicka vidare till en extern leverantör, samt helt externa e-post adresser e-post.]]
 +
[[File:Stacken-mail-rcpt-nsg-local.png|thumb|baseline|Om adressen du skickar e-post till ej skickar vidare posten externt så kommer e-post självklart aldrig lämna Stackens system, skickar du via KTH så kommer den aldrig lämna KTH eller Stacken. Var dock försiktig för många användare har valt att skicka vidare e-post till 3:e part, samt många listor innehåller externa adresser. Kryptera alltid känsliga uppgifter.]]
  
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.
+
Den här sidan är här för att beskriva vilka bitar som finns av Stackens e-post system, vad som gör vad och vart man ska ändra. Den här sidan är ingen komplett dokumentation utan syftet med den är att ge dig en övergripande vy över våra system.
  
    $ dig +short mx stacken.kth.se
+
== Övergripande design ==
    10 mx.kth.se.
 
  
E-post som KTH vet att vi hanterar, som t.ex. <code>*@stacken.kth.se</code> eller <code>*@karspexet.se</code> går sedan till <code>incoming-email.stacken.kth.se</code>.
+
=== Använd virtuella maskiner ===
 +
Virtuella maskiner är mer flexibla och minskar beroendet på specifik hårdvara. Kompletta snapshots är enkla, och om hårdvaran som maskinerna kör på nu får problem så är det mycket enkelt och snabbt att flytta VM:en till en ny hårdvara. Stacken har dessutom de senaste året fokuserat på att bygga upp en fungerande virtualiseringslösning på hårdvara som vi fått donerad.
  
=== Exempel av mailflöde ===
+
=== Klustra ===
 +
Mail är designat för att kunna klustras vilket vi bör utnyttja. Vi sätter upp två VM:s som ligger på fysisk skilda resurser där allt funkar utan nertid så länge minst en av dem är uppe.
  
Användaren nsg som har en IMAP postlåda.
+
=== Försök inte klustra det som inte går ===
 +
Försök inte att göra något "hack" med tjänster som inte enkelt går att klustra. T.ex. Mailman placerades på separat server, även den ett VM.
  
    TO:nsg@stacken.kth.se  --->  mx.kth.se  --->  incoming-email.stacken.kth.se  --->  Mailbox (Dovecot)
+
=== Bort med allt gammalt ===
 +
Nya servrarna ska vara rena och inte innehålla något mer än det som behövs. Bort med make-filer, scripts, hacks ... bort med behov att hitta en dator med AFS, kunna RCS och ssh:a som root till servern och köra magiska script. En användare ska kunna själv ändra allt för sitt konto, en förening ska kunna ändra allt de behöver utan ett skalkonto eller övriga systemadministratörskunskaper.
  
Användaren frost som har en forward, antingen via det klassiska sätter i en virtual_alias_maps i Postfix, eller via en Sieve-regel.
+
Allt som låg på AFS används ej, mailing-list.conf är portad till mailing-list.yml och kraftigt städad. Forwards är portade till en forwards.yml men det är en temporär lösning tills vi har intrigerat oss med fingerweb för konfiguration av det. Alla domäner som ej pekar på KTH/Stacken längre är borttagna, samt gamla användare som inte är medlemmar längre flyttades aldrig över.
  
    TO:frost@stacken.kth.se  --->  mx.kth.se  --->  incoming-email.stacken.kth.se  --->  mx.kth.se  --->  frost@example.com
+
Vi hanterar inte pop, kpop eller spool-filer längre. Post forwarderas, levereras till IMAP-postlådor eller kastas.
  
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.
+
== Mail ==
  
    TO:staff@stacken.kth.se  --->  mx.kth.se  --->  incoming-email.stacken.kth.se --->  mx.kth.se  --->  frost@example.com
+
All post både in och ut flödar genom KTH:s MX:ar vilket syns 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.
                                                                \                              \
 
                                                                \-  --->  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.
+
    $ dig +short mx stacken.kth.se
 +
    10 mx.kth.se.
  
    TO:stacken@stacken.kth.se  --->  mx.kth.se  ---> incoming-email.stacken.kth.se ---> karamell
+
E-post som KTH vet att vi hanterar, som t.ex. <code>*@stacken.kth.se</code> eller <code>*@karspexet.se</code> går sedan till <code>incoming-email.stacken.kth.se</code>.
                                                                                            /
 
          frost@example.com  <---  mx.kth.se  <---  incoming-email.stacken.kth.se <---  -/
 
                                                                /
 
                                          Mailbox (nsg) <---  -/
 
  
 
== Stacken Mailservrar ==
 
== Stacken Mailservrar ==
Line 39: Line 40:
  
 
Maskinerna kör keepalived för att hantera IP-numret som <code>incoming-email.stacken.kth.se</code> 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.
 
Maskinerna kör keepalived för att hantera IP-numret som <code>incoming-email.stacken.kth.se</code> 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.
 +
 +
Automatiska säkerhetsuppdateringar appliceras regelbundet, samt maskinerna bootar även om vid behov (inte samtidigt).
  
 
=== Tjänster ===
 
=== Tjänster ===
Line 51: Line 54:
  
 
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 ====
  
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.
+
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. Reglerna replikeras mellan servrarna.
  
 
==== Forwards & Alias-baserade mailinglistor ====
 
==== 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.
 
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.
 +
 +
För att få de här redigerade så behöver i dag maila nsg eller frost, det ska ändras fram över.
 +
 +
==== Skicka vidare till Mailman ====
 +
 +
All post som inte hittar en destination på <code>mail-1</code>/<code>mail-2</code> kommer skickas vidare till Mailman servern <code>karamell.stacken.kth.se</code>. Fram över om vi har flera olika servrar som hanterar listor så går det enkelt att per domän eller t.o.m. per e-postadress att skicka det till olika maskiner utan problem.
  
 
== Mailman ==
 
== Mailman ==
  
 
Stackens mailman-server heter <code>karamell.stacken.kth.se</code> 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 <code>smtp.stacken.kth.se</code>.
 
Stackens mailman-server heter <code>karamell.stacken.kth.se</code> 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 <code>smtp.stacken.kth.se</code>.
 +
 +
Servern kör i dag https://lists.stacken.kth.se/ samt https://lists.karspexet.se/ vilket är baserade på Mailman 2 och är byggd enligt backupen av listorna på den gamla servern Vingummi.

Latest revision as of 10:15, 4 August 2018

Användaren nsg på Stacken har e-post på Stacken, han använder Stackens e-post fullt ut och får sin post levererad till Stackens servrar vilket han läser med en IMAP-klient.
Användaren frost skickar vidare sin e-post till en extern adress, via en forward, eller via en Sieve-regel.
Servern Karamell processer Stackens listor, i det här exemplet så får både mailboxar på Stacken, användare som har valt att skicka vidare till en extern leverantör, samt helt externa e-post adresser e-post.
Om adressen du skickar e-post till ej skickar vidare posten externt så kommer e-post självklart aldrig lämna Stackens system, skickar du via KTH så kommer den aldrig lämna KTH eller Stacken. Var dock försiktig för många användare har valt att skicka vidare e-post till 3:e part, samt många listor innehåller externa adresser. Kryptera alltid känsliga uppgifter.

Den här sidan är här för att beskriva vilka bitar som finns av Stackens e-post system, vad som gör vad och vart man ska ändra. Den här sidan är ingen komplett dokumentation utan syftet med den är att ge dig en övergripande vy över våra system.

Övergripande design

Använd virtuella maskiner

Virtuella maskiner är mer flexibla och minskar beroendet på specifik hårdvara. Kompletta snapshots är enkla, och om hårdvaran som maskinerna kör på nu får problem så är det mycket enkelt och snabbt att flytta VM:en till en ny hårdvara. Stacken har dessutom de senaste året fokuserat på att bygga upp en fungerande virtualiseringslösning på hårdvara som vi fått donerad.

Klustra

Mail är designat för att kunna klustras vilket vi bör utnyttja. Vi sätter upp två VM:s som ligger på fysisk skilda resurser där allt funkar utan nertid så länge minst en av dem är uppe.

Försök inte klustra det som inte går

Försök inte att göra något "hack" med tjänster som inte enkelt går att klustra. T.ex. Mailman placerades på separat server, även den ett VM.

Bort med allt gammalt

Nya servrarna ska vara rena och inte innehålla något mer än det som behövs. Bort med make-filer, scripts, hacks ... bort med behov att hitta en dator med AFS, kunna RCS och ssh:a som root till servern och köra magiska script. En användare ska kunna själv ändra allt för sitt konto, en förening ska kunna ändra allt de behöver utan ett skalkonto eller övriga systemadministratörskunskaper.

Allt som låg på AFS används ej, mailing-list.conf är portad till mailing-list.yml och kraftigt städad. Forwards är portade till en forwards.yml men det är en temporär lösning tills vi har intrigerat oss med fingerweb för konfiguration av det. Alla domäner som ej pekar på KTH/Stacken längre är borttagna, samt gamla användare som inte är medlemmar längre flyttades aldrig över.

Vi hanterar inte pop, kpop eller spool-filer längre. Post forwarderas, levereras till IMAP-postlådor eller kastas.

Mail

All post både in och ut flödar genom KTH:s MX:ar vilket syns 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.

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.

Automatiska säkerhetsuppdateringar appliceras regelbundet, samt maskinerna bootar även om vid behov (inte samtidigt).

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. Reglerna 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.

För att få de här redigerade så behöver i dag maila nsg eller frost, det ska ändras fram över.

Skicka vidare till Mailman

All post som inte hittar en destination på mail-1/mail-2 kommer skickas vidare till Mailman servern karamell.stacken.kth.se. Fram över om vi har flera olika servrar som hanterar listor så går det enkelt att per domän eller t.o.m. per e-postadress att skicka det till olika maskiner utan problem.

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.

Servern kör i dag https://lists.stacken.kth.se/ samt https://lists.karspexet.se/ vilket är baserade på Mailman 2 och är byggd enligt backupen av listorna på den gamla servern Vingummi.