Elektronisk post på Lysatorvis

Från Lysators datorhandbok, den ultimata referensen.
Version från den 18 februari 2016 kl. 15.25 av Sebth (Diskussion | bidrag) (Pine / Alpine)

(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till: navigering, sök

Lysator mailserver är en 2.13 GHz Intel Xeon Quad Core med 4GiB RAM, 2x60GiB-SATA diskar för system och 2x500GiB SATA-diskar för maildata. Maskinens hostnamn är bernadotte

Maskinen kör Linux 2.6, Linuxdistributionen är Debian.

Mailservern använder enbart fri programvara:

  • Postfix som MTA
  • Dovecot som IMAP- och POP-server
  • Mailman för maillinglistor
  • Squirrelmail för Webmail
  • MySQL för att lagra diverse användarspecifik information.


Leverans av Mail

Mailservern levererar mail i Maildir-format till /var/mail/<username>/Maildir. Den här katalogen ligger på lokalt monterad disk på mailservern. Anledningen till detta är att mailservern ska fungera även om Lysators övriga filservrar står still.

Filsystemet som är /var/mail på resten av Lysator är egentligen monterat som /home på mailservern. Som användare av systemet behöver du dock inte bry dig om det. Det kan rent av vara förvirrande att veta om det, så glöm bort att du läst det här stycket. (Fast om du vet lite mer om hur det fungerar på andra system kan det här stycket förklara varför saker fungerar som de gör...)

Dina mail levereras alltså till en Maildir som du kommer åt som /var/mail/<username>/Maildir på Lysators datorsystem.

Vanliga användare kan inte logga in på mailservern.

Maildir?

Maildir är ett sätt att lagra mail som från början uppfanns av mannen bakom Qmail, Dan Bernstein. Mailservern skriver en fil per mail i Maildir/tmp och flyttar sedan filen till Maildir/new där mailprogrammet eller IMAP-servern upptäcker brevet och flyttar det till Maildir/cur. Det här förfarandet undviker låsproblem och gör att flera programvaror utan problem samtidigt kan komma åt en mailbox, utan låsproblem, och utan problem över nätverksfilsystem. För mer detaljer, se http://cr.yp.to/proto/maildir.html.

Lysators mailserver levererar som sagt till /var/mail/<username>/Maildir. IMAP-servern är sedan konfigurerad att uppfatta denna mailbox som INBOX. Eventuella övriga mailfolders läggs i form av underkataloger till /var/mail/<username>/Maildir. Exempel: Om du har en mailbox för spam som du kallar för "Spam" så kommer mail i denna att lagras i en katalog vid namn /var/mail/<username >/Maildir/.Spam. Naturligtvis kan du konfigurera eventuella filter att leverera mail till en subfolder.

Enbart Maildir!

Den här generationen mailserver tillåter bara leverans till maildir i /var/mail/<username>/Maildir. Filer som läggs på andra ställen i filsystemet på bernadotte kan komma att tas bort utan förvarning, undantaget /var/mail/<username>/.forward och konfigurationsfiler för procmail eller maildrop.

Konvertering

Om du redan hade gått över till Maildir med förra mailservern så har din existerande mailbox flyttats över. Om du inte hade gjort det så har din existerande mailbox konverterats till Maildir i samband med mailserverbytet. Om du har mailboxar i mbox-format liggandes på vanliga /home och vill konvertera till Maildir så att de blir åtkomliga från mailservern och via IMAP och Webmail, så använder du mbox2maildir. Se sidan om mbox2maildir. Exempelvis så ska du för att konvertera en mbox-box du har i ~/Mail/sent-mail köra mbox2maildir ~/Mail/sent-mail /var/mail/<username>/Maildir/.sent-mail

Att läsa Maildir med diverse mailklienter

Lysators medlemmar använder varenda mailklient som någonsin uppfunnits på denna jord, och så några till. Här är lite tips om hur man kommer åt Maildir från de olika programmen.

Pine / Alpine

Alpine är en nyare version av den klassiska e-postklienten Pine och finns installerad på Lysators CPU-servrar. Den version som finns hos Lysator är patchad med stöd för Maildir och korrekt inställd redan från början (via systemkonfigurationen /etc/pine.conf i GNU/Linux, alternativt /usr/local/etc/alpine.conf i FreeBSD). Alpine startas med kommandot alpine, men använder ~/.pinerc som användarkonfiguration precis som Pine.

Mutt

Sätt följande i din ~/.muttrc:

 set spoolfile = /var/mail/eric/Maildir
 set mbox_type = Maildir
 set folder = /var/mail/eric/Maildir
 set mbox = /var/mail/eric/Maildir

Andra tips är att sätta:

 set sort=reverse-date

..för en sorteringsordning som en del tycker är bättre, samt:

 set editor=emacsclient

..så kan man editera brev med Emacs i stället för med vi (som är standard). Gillar man editorn i Pine, så sätter man editor till pico. Tack till Eric Svensson, Johannes Markström och Emil Styrke för de här tipsen.

RMAIL

RMAIL är ett gammalt konstigt mailprogram inuti Emacs. Men en del gillar det. Det gör de bara för att de inte har förstått att Gnus är bättre.

För att få igång Rmail krävs att du byter ut movemail-programmet mot ett som förstår Maildir. Ett sådant är mdmovemail som finns att hämta på http://www.qmail.org/mdmovemail.

Ladda ned mdmovemail och lägg det någonstans. Gör det exekverbart (med chmod +x modmovmail.pl). Se till att det hittar Perl.

Ändra raden:

 $strip_duplicates = 1;

..till:

 $strip_duplicates = undef;

Skapa en /var/mail/${USER}/Maildir/.rmail-dummy:

touch /var/mail/${USER}/Maildir/.rmail-dummy

Lägg in följande rader i din ~/.emacs:

 (setq rmail-primary-inbox-list
   '("/var/mail/<användarnamn>/Maildir/.rmail-dummy"))
 (setq rmail-movemail-program (expand-file-name 
   "~/bin/sh/mdmovemail.pl"))

Starta om emacs. Nu ska det fungera.

Tack till Thomas Bellman för de här instruktionerna.

Sortering, procmail, maildrop

Det är tillåtet att via .forward köra procmail eller maildrop för att sortera post till subfolder under /var/mail/<username>/Maildir.

INGA EGNA KOMMANDON, PERL-HACK, EGENINSTALLERAD PROGRAMVARA ELLER LIKNANDE FÅR KÖRAS PÅ MAILSERVERN.

DET ÄR INTE TILLÅTET ATT LÅTA PROCMAIL ELLER MAILDROP EXEKEVERA ANDRA KOMMANDON. ENBART INBYGGD FILTERFUNKTIONALITET FÅR ANVÄNDAS!

Anledningen till ovanstående regler är att det har varit en hel del problem med script som uppfört sig dumt och käkat resurser. För att tillfredställa hacklusten hos folk som absolut vill köra konstiga kommandon när det dyker upp mail går det bra att vidarebefordra mail till mailexec.lysator.liu.se, som också har tillgång till Lysators vanliga /home. Mailexec kan ej garanteras få samma uppmärksamhet vid problem som den vanliga mailservern. Se vidare i avsnittet om mailexec.

Ett annat, bra, sätt att ta hand om mail är att låta mailservern lagra den i maildir och sedan behandla den med cronjobb på någon av Lysators övriga servrar. Det stör inte mailservern över huvud taget.

Här är fullständig path till de program som finns på mailservern, och som det är tillåtet att använda i din .forward:

 /usr/bin/procmail
 /usr/bin/maildrop

Sidan procmail innehåller mer information om hur man använder procmail. (Just nu är den sidan inte riktigt uppdaterad, men den är nog användbar ändå. Kom bara ihåg att den här sidan stämmer bättre med verkligheten än den sidan!)

Inloggning på mailservern

Vanliga användare kan inte logga in på mailservern. Det ska normalt inte behövas.

Övrigt om .forward-filer

Med hjälp av en fil som heter .forward i /var/mail/<username> kan du vidarebefordra mail till andra adresser än den på Lysator. Postfixs officiella dokumentation beskriver formatet.

Notera att man kan göra många saker med .forward. Skicka mail till flera adresser exempelvis genom att skriva flera adresser i den (en per rad) och exekvera kommandon. Om man också vill ha lokal leverans tillsammans med en forward så bör man lägga till /home/<username>/Maildir/ i sin .forward. Mer info hittas om man glor på länkarna ovan.

Postfix ser allvarligt på filrättigheter. Eller, för att uttrycka sig så att kidzen förstår: Ey, len, Postfix ger fett me' credz till filrightsen.

.forward-filer får exempelvis inte ha generösare rättigheter än 644 (rw-r--r--). Dvs, om din .forward funkade förut, men inte funkar nu så kan det vara en chmod 644 .forward som behövs.

Av intresse kan också vara att Postfix kör filer som inkluderas från alias (ex.vis mailinglistor) som ägaren och gruppen för denna fil. Om ägaren skulle råka vara root, så körs filen som nobody.

De flesta include-filer innehåller dock bara mail-adresser, så där är det inga problem. Problem kan uppstå först då leverans ska ske till fil, eller till kommando.

Om du använder mailadresser på formen <användarnamn>+<någonting>@lysator.liu.se så är det bra att känna till att det går att skapa egna forwards för dessa. Om du har en /var/mail/<username>/.forward+någonting så är det den som används när mail skickas till <användarnamn>+någonting@lysator.liu.se.

Gamla ~/.forward flyttades ej över i samband med mailserverbytet. Förhoppningsvis tar även du tillfället i akt att se över dina mailinställningar.

Ta bort all sin Mail

Om man vill ta bort _all_ mail man har lagrad på lysators mailserver måste man vara aningen försiktig om man ska kunna fortsätta ta emot mail. Om man har så mycket mail att det inte är praktiskt att ta bort dem genom att använda klienten så är en lämplig metod:

 cd /var/mail/$USER
 mv Maildir Maildir.old && \
 mkdir -p Maildir/{cur,new,tmp} && \
 chmod -R 700 Maildir
 rm -rf Maildir.old

Har man väldigt mycket mail att ta bort är det lämpligt att be root om hjälp med det sista steget, eftersom det då kan göras lokalt på mailserver istället för över NFS.

SPAM och Virus

Lysators mailserver försöker bli av med lite skräp innan det levereras till dig. Filtreringen sker i flera steg.


Andra DNS-kollar

Det finns ett antal andra kollar, exempelvis kan man kolla om domänen för avsändande mailadress går att slå upp i DNS, och om avsändande mailservers IP går att slå upp i DNS. Den första av de här reglerna tenderar att kapa bort en hel del SPAM.


Greylisting

Greylisting är en teknik där man tittar på tripleten (IP på avsändande mailserver, avsändaradress, mottagaradress). Första gången en unik triplet dyker upp så ger man en temporär felkod. En normal mailserver försöker då att leverera mailet igen efter en liten stund (fem minuter eller så), medan den speciella programvara spamavsändare använder helt enkelt struntar i att skicka iväg mailet.

Var gång du får mail från en ny mottagare tar det alltså en liten stund innan mailet kommer fram, men stora mängder spam kommer inte fram över huvud taget.

Lysators mailserver kör per default greylisting, men du kan slå av det för just din adress med hjälp av LysAdm.

Mer information om greylisting finner du på exempelvis http://greylisting.org.

ClamAV

När mailet väl tagit sig in på mailservern körs det genom ClamAV som kör virusscanning för att detektera virus. Klassas mailet som virus slängs det utan att vare sig avsändare eller mottagare får något meddelande. Avsändaren får inget, för virus har ändå oftast falsk avsändare. Mottagare får inget, eftersom ett meddelande om ett virus inte gör någon glad.

Spamassassin

Mailet körs sedan igenom Spamassassin, som med hjälp av regler, DNS-listor, analys på ingående URLer, autolearn mm försöker detektera spam. Påfallande ofta lyckas det, och då märks mailet upp med headern X-Spam-Flag: Yes.

Engångsadresser

Det absolut effektivaste sättet att slippa spam är att aldrig någonsin ge ut sin emailadress till någon. Fast då försvinner lite av idén med email.

En annan variant är att använda engångsadresser när man exempelvis anmäler sig på diverse webtjänster och för adresser man har på sina websidor. Lysators system erbjuder två sätt att generera sådana adresser.

Plus-syntaxen

Adresser av typen <username>+<extension>@lysator.liu.se ger ett sätt att skapa engångsadresser. Mail som skickas till exempelvis gazonk+lysmail@lysator.liu.se hamnar i brevlådan för användaren 'gazonk'.

Som en extra feature går det att använda särskilda .forward-filer för sådana här adresser. Om du skapar en .forward+lysmail i /var/mail/<username> så kan du styra vad som ska hända med mail som skickas till <dittanvändarnamn>+lysmail@lysator.liu.se. Om du märker att en adress du skapat på det här sättet används för spam kan du alltså skapa en .forward-fil för den adressen som innehåller raden /dev/null. Då kommer all mail till den adressen att kastas i bithinken, dvs tas bort innan det når dig.

Ett problem med den här typen av adresser är att inte alla webtjänster och liknande anser att den är korrekt, så de kan vägra ta emot den. Då kan man använda en adress från User-domänen i stället.

Plus-syntaxen kan naturligtvis användas till andra saker också, exempelvis för att snabbt implementera mailinglistor. Se hur man startar och driver en elektronisk postlista för mer information.

User-domänen

Alla användare på lysator har möjlighet att använda adresser på mönstret <någonting>@<username>.user.lysator.liu.se. Dvs, om du har användarnamnet 'gazonk' så kan du använda adresser där delen efter '@' är gazonk.user.lysator.liu.se. Vad du skriver före '@' spelar ingen roll, det hamnar i din mailbox ändå.

Det här betyder att om du anmäler dig till webtjänsten "foo" så kan du använda (exempelvis) adressen foo@<username>.user.lysator.liu.se och ändå få mail från tjänsten.

För att det ska vara någon nytta med det här måste det finnas ett säkert sätt att filtrera ut mail från den här domänen. Det gör det. Det är nämligen så att Postfix (mailservern) skriver en header när ett sådant här brev levereras. Headern heter Delivered-To och sätts till <username>+user_<localpart>@lysator.liu.se där <localpart> är vad som stod före '@' i adressen. Det här betyder också att man kan använda särskilda .forward-filer precis som för Plus-syntaxen beskriven ovan. Dvs, om du vill låta brev som skickas till foo@gazonk.user.lysator.liu.se hamna i sopkorgen så skapar du en fil som heter .forward+user_foo i /var/mail/gazonk och låter den innehålla /dev/null.

Pga diverse omskrivningar så behålls inte hela To-raden när du gör såhär, utan när du får brevet har ditt användarnamn kapats bort. Det här är en stor bugg, men ingen har lyckats fixa den, så tig och lid. Eller ge oss rötter tips om hur man kan fixa till det.

Mailinglistor

Allt om hur du driver mailinglistor på Lysator finns att läsa på en särskild sida om E-postlistor.

Hostnamn

Hostname du skall använda för att skicka och ta emot post finns beskrivna i ett särskilt dokument om [POP och IMAP]. Om du gör forward från Lysator och har en paranoid brandvägg kan det vara bra att veta att alla utgående uppkopplingar från Lysators mailserver kommer från adressen mail.lysator.liu.se 130.236.254.3.

Authsmtp

Det går att köra autenticerad SMTP mot Lysators mailserver. Mer om detta i manulen om AUTHSMTP.

mailexec.lysator.liu.se

Mailexec bör betraktas som avvecklat 20141001. Tidigare generationer mailservrar har monterat samma /home som resten av Lysators servrar, vilket har inneburit att man har kunnat sortera mail, köra program och hacka på i all oändlighet när mail har anlänt.

Det här är inte bara av godo, ty om någon filserver på Lysator har varit trasig, har mailen ibland stått stilla. Den här generationen mailserver monterar alltså inga filsystem från övriga Lysator, för att undvika problem av den här arten.

Problem har också uppstått i form av att programvara som Lysiter kört via ~/.forward ibland varit resurskrävande, och därför har käkat resurer som behövs till att leverera mail.

För att komma undan det här problemet, men ändå tillåta hacklusten att flöda fritt, används nu två servrar. Den första, bernadotte, monterar som nämns ovan en egen /home, där din mail levereras till Maildir. Denna /home finns, som också nämnts, tillgänglig som /var/mail på resten av Lysators system.

Den andra servern är den som har aliaset mailexec.lysator.liu.se. Den här maskinen monterar /home, /pkg och /usr/local. Om inte programvara du vill använda finns på den här maskinen kan du alltså installera den om du är med i pkg-gruppen. mailexec berättar mer om maskinen.

mailexec.lysator.liu.se läser den ~/.forward som finns i den vanliga /home-katalogen, och utför instruktioner där. För att vidarebefordra mail från mailservern som tar emot dina mail till mailexec skriver du alltså, i /var/mail/<username>/.forward, såhär:

 <username>@mailexec.lysator.liu.se

En sammanfattning

Vad du alltså behöver göra efter flytten är att:

  • Se över eventuell .forward, och anpassa eventuella sökvägar så att de stämmer med sökvägarna på bernadotte.
  • Se över eventuella procmailhack, och se till att de överensstämmer med reglerna för mailsortering på bernadotte.
  • Flytta .forward till rätt ställe. Det sker från övriga datorer på Lysator genom att flytta filen till /var/mail/<username>
  • Se till att rättigheterna på /var/mail/<username>/.forward är max 644 (chmod 644 /var/mail/<username>/.forward)
  • Eventuellt ersätta .forward-hack med en forward till <username>@mailexec.lysator.liu.se