Elektronisk post på Lysatorvis
Lysator mailserver är en Dell PE 300 med 2 st 850MHz PIII processorer, 1GiB RAM och 2x160GiB ATA133-diskar. Diskarna är speglade med Linux mjukvaruraid. Maskinens hostnamn är lenin.
Ca 100GiB disk finns tillgängligt för lagring av medlemmars mail.
Maskinen kör Linux 2.6, Linuxdistributionen är Debian.
Mailservern använder enbart fri programvara:
- Postfix som MTA
- Courier IMAP 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å lenin 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
Använd till att börja med en Pine som är patchad med Maildir-patch. En sådan finns exempelvis att tillgå i /usr/local/bin på våra Solaris-maskiner.
Skapa en symlänk vid namn Maildir i din hemkatalog, som pekar på din inbox:
ln -s /var/mail/${USER}/Maildir ~/
Sätt sedan inbox-path i Pine till en tom sträng. Nu ska du kunna komma åt din inbox.
Tack till Fredrik Nyström för detta tips!
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. Men som sagt, glo 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.
DNS-baserade listor
Det första hindret för SPAM är de DNS-baserade svartlistor som mailservern applicerar redan under SMTP-sessionen. Här vägrar Postfix släppa in mail från mailservrar som är kända för att vara spamavsändare.
Du kan själv välja vilka svartlistor som ska användas för mail till just din adress. Det gör du i LysAdm.
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.
Du ställer själv in vilka regler som ska användas, i LysAdm.
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.
Amavisd med ClamAV och Spamassassin
När mailet väl tagit sig in på mailservern körs det genom amavisd, som först 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. I framtiden kommer det troligen att bli möjligt att per användare konfigurera om virus ska skickas vidare eller ej.
Amavisd kör sedan mailet genom Spamassassin som med hjälp av regler, DNS-listor, analys på ingående URLer, pyzor, razor och DCC 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
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, lenin, 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å lenin.
- Se över eventuella procmailhack, och se till att de överensstämmer med reglerna för mailsortering på lenin.
- 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