Mailservrar Sendmail och Postfix Linuxadministration II 1DV421
Innehåll sendmail postfix Säkerhet IMAP/POP3 Distributionslistor Webbmail
E-post Skapa, skicka och mottaga meddelanden E-post började användas redan 1965 ARPANET Ray Tomlinson
SMTP Designat för tillförlitlig och effektiv överföring av e-post Fyller den viktiga funktionen att möjliggöra överföring av e-post över flera nätverk, såsom Internet och större lokala nätverk Destinationen för ett meddelande bestäms av nätverkets DNS RR för en mailserver sverige.se. IN MX 10 mail1.sverige.se. mail1.sverige.se. IN A 10.0.0.10 SMTP slog igenom på tidigt 1980-tal sendmail var en av de första SMTP-servrarna Exempel på andra populära SMTP-servrar är Postfix, Qmail, exim och Microsoft Exchange Server
SMTP telnet mail1.norden.net 25 S: 220 mail1.norden.net ESMTP Postfix C: HELO sverige.se S: 250 mail1.norden.net C: MAIL FROM: pelle@sverige.se S: 250 Ok C: RCPT TO: kalle@norden.net S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: Subject: test message C: From: pelle@sverige.se C: To: kalle@norden.net C: C: Hello, C: This is a test. C: Goodbye. C:. S: 250 Ok: queued as 12345 C: quit S: 221 Bye
sendmail sendmail bygger på ARPANETs programvara delivermail Har möjlighet att hantera flera olika typer av e-postöverföring, däribland SMTP Eric Allman delivermail Open Source Sendmail Inc. Långsamt, svårt att konfigurera och hantera Faktum kvarstår att det är den mest använda e-postservern på Internet Enligt en studie 2007 använde ca. 12.3% av alla e-postservrar sendmail, vilket gör det till den mest använda e-postservern
sendmail sendmail är mycket kompetent och erbjuder ett flertal intressanta funktioner Masquerading Virtuella domäner Virtuella användare Mail relaying Lösningar för distributionslistor Ett flertal säkerhetslösningar sendmail har ett annorlunda förfarande vid konfiguration än de flesta andra open source-projekt Utgörs av en central fil, sendmail.mc, där all konfiguration samlas Denna fil kompileras sedan till sendmail.cf som läses in av sendmail
sendmail.mc sendmail.mc: define(`smart_host,`smtp.other.domain ) define(`smart_host,`smtp.other.domain )dnl dnl define(`smart_host,`smtp.other.domain ) //Regel //Regel //Kommentar Kompilera vid varje ändring make C /etc/mail OBS! Ändra inte i sendmail.cf http://sendmail.org/m4/readme.html
Virtuella domäner Virtuella domäner används då det krävs av e-postservern att den kan ta emot e-post för mer än en domän Dessa domäner konfigureras i filen /etc/mail/local-host-names: Ta emot e-post för alla användarnamn@sverige.se och @other.domain.com sverige.se other.domain.com För att ta emot e-post för användarnamn@*.sverige.se lägger vi till.sverige.se Följande måste läggas till i sendmail.mc feature(`use_cw_file )
Virtuella domämer 1.Man kan även lägga till domänerna direkt i sendmail.mc: LOCAL_DOMAIN(`sverige.se ) LOCAL_DOMAIN(`other.domain.com )
Virtuella användare Löser problemet med att meddelanden som sänds till pelle@sverige.se och pelle@other.domain.com levereras till samma användare Virtuella användare behöver inte ha något användarkonto på e-postservern E-post som sänds till virtuella användare skickas vidare till riktiga användarkonton T.ex. info@sverige.se levereras till nils@sverige.se Kan även hantera skräddarsydda felmeddelanden för användare som inte har konton
Virtuella användare Virtuella användare konfigureras i filen /etc/mail/virtusertable: pelle@sverige.se pelle@other.domain.com pellenilsson pellepersson henrik@sverige.se error:nouser 550 No such user here @norden.net helpdesk@norden.net
Masquerading Maskerar den riktiga domänen/hosten som e-postmeddelandet ursprungligen kommer ifrån Går även att maskera domän/host som e-postmeddelandet ska till Fördelar Utgående post från en domän ser ut att komma från huvuddomänen, istället för att visa att meddelandet verkligen kommer från en intern e-postserver E-post från pelle@mail3.sales.intranet.norden.net kan maskeras till pelle@norden.net Nödvändigt då interna e-postservrar inte ska finnas med som MX-records i domänens publika DNS-servrar Det går även att specificera ifall vissa interna domäner inte ska maskeras
Masquerading Ingen maskering Maskerat hostname Maskerat hostname och envelope
Masquerading sendmail.mc: Maskerat hostname: MASQUERADE_AS(`norden.net ) Maskerat envelope: FEATURE(`masquerade_envelope ) Maskera alla underdomäner:.masquerade_as(`norden.net ) FEATURE(`masquerade_entire_domain ) MASQUERADE_DOMAIN(`sales.norden.net ) MASQUERADE_DOMAIN(`admin.norden.net ) eller MASQUERADE_AS(`norden.net ) FEATURE(`masquerade_entire_domain ) MASQUERADE_DOMAIN(`norden.net )
Masquerading Specificera vilka domäner som inte ska maskeras: MASQUERADE_AS(`norden.net ) MASQUERADE_DOMAIN(`norden.net ) MASQUERADE_EXCEPTION_FILE(`/etc/mail/masquerade-exceptions ) eller MASQUERADE_AS(`norden.net ) MASQUERADE_DOMAIN(`norden.net ) MASQUERADE_EXCEPTION(`list.norden.net ) /etc/mail/masquerade-exceptions: support.norden.net admins.norden.net sales.norden.net
Mail relaying Då inte alla e-postservrar har direktkontakt med varandra, utnyttjas mail relaying Bob Alice mail1.sverige.se mail1.norge.no mail1.norden.net
Mail relaying Används för att vidarebefordra e-post till andra domäner Det finns flera typer av mail relaying Relaying all mail Relaying mail for external hosts Relaying mail for all hosts in a domain
Relaying all mail Då denna metod används skickas alla mail vidare, även de som skulle kunna levereras lokalt Detta sker genom att man konfigurerar sendmail till att vara en så kallad nullclient sendmail.mc: FEATURE(`nullclient, `mail1.norden.net ) I detta exempel anges mail1.norden.net som den SMTP-server dit all e- post kommer att skickas för vidare bearbetning
Relaying mail for external hosts Används då en organisation endast har en SMTP-server som kan skicka meddelanden utanför det interna nätverket Enbart e-post som ska till andra nätverk än de som de interna SMTPservrarna är konfigurerade att hantera skickas vidare till en så kallad SMART_HOST sendmail.mc: define(`smart_host, `mail1.norden.net )
Relaying mail for all hosts in a domain Denna metod används då en central SMTP-server ska agera relay för flera domäner och underdomäner sendmail har som standard denna funktion avstängd, men kan konfigureras genom att editera filen /etc/mail/relay-domains: #För norden.net, såsom på bilden på slide 17 norge.no sverige.se #För norden.net, såsom på bilden på slide 22.norden.net Denna konfiguration görs endast på den centrala SMTP-servern
Relaying mail for all hosts in a domain mail1.norden.net används som SMART_HOST för alla underdomäner, och agerar då relay för alla dessa domäner accounting.norden.net sales.norden.net admins.norden.net support.norden.net mail1.norden.net
sendmailsäkerhet Autentisering av domäner, SPF (Sender Policy Framework) Spam-filter, Access Database mail-abuse.com, ordb.org
Postfix Datorns namn myhostname = mail1.norden.net Datorns domän mydomain = norden.net Domän som mail ska se ut att komma från (liknande masquerade envelope) myorigin = $mydomain Domäner som hanteras och som servern ska ta emot mail för mydestination = norden.net
Postfix Relayhost, samma sak som SMART_HOST i sendmail relayhost = mail1.labb.se Nätverkskort som postfix ska lyssna på inet_interfaces = all
SPF (Sender Policy Framework) Bygger på att alla domäner publicerar ett SPF-record i sin DNS-konfiguration Fördelar Förhindrar att spam kommer från förfalskade avsändare, där domänerna är konfigurerade med SPF Ett gemensamt system för att stoppa spam Nackdelar Alla domäner måste ha konfigurerat SPF Kan även stoppa legitim e-post om SMTP-servrarna är för restriktivt konfigurerade http://spf.pobox.com/
SPF Förfarande: En Hotmail-användare skickar e-post genom en Hotmailserver Mottagarservern kontrollerar Hotmails SPF-record, för att se om Hotmailservern är tillåten att skicka e-post från Hotmail.com Hotmailservern är listad som tillåten, så mottagarservern tillåter e-posten att komma fram En spammare skickar e-post som en Hotmailanvändare Mottagarservern kontrollerar Hotmails SPF-record, för att se om spamservern är tillåten att skicka e-post från Hotmail.com Spamservern är inte listad, så mottagarservern tillåter inte e-posten
SPF-konfiguration v=spf1 Identifiera TXT-record som en SPF-sträng ip4:192.168.0.0/24 Alla datorer i nätverket 192.168.0.0/24 får skicka e-post från kalmar.se mx Tillåter automatiskt alla e-postservrar med MX-records att skicka e-post från kalmar.se a:backup-mail.kalmar.se Även servern backup-mail.kalmar.se får skicka e-post från kalmar.se mx:it.kalmar.se Alla e-postservrar i domänen it.kalmar.se får skicka e-post från kalmar.se
SPF-konfiguration include:ekonomi.kalmar.se Alla e-postservrar som får skicka e-post från ekonomi.kalmar.se får även skicka e-post från kalmar.se all ~all SPF-förfrågningar som inte matchar någon regel returnerar softfail, vilket innebär att e-posten kan accepteras men med en högre grad av opålitlighet?all SPF-förfrågningar som inte matchar någon regel returnerar neutral, vilket innebär att e-posten kan accepteras som om SPF-records inte fanns -all SPF-förfrågningar som inte matchar någon regel returnerar fail, vilket innebär att e-posten inte ska accepteras
SPF-konfiguration db.kalmar.se kalmar.se. IN TXT v=spf1 mx a:backup-mail.kalmar.se mx:it.kalmar.se ip4:192.168.0.0/24 include:ekonomi.kalmar.se ~all
Access Database Regelverk för användare, domäner och nätverk En matchande post i listan behandlas efter åtgärd som angetts: REJECT - Tillåt inga anslutningar DISCARD - Tillåt anslutningen, men kasta meddelandet RELAY - Vidarebefordra meddelandet En kontrollkod kan också anges för ett skräddarsytt STMP-meddelande. sendmail.cf FEATURE(access_db)
Access Database /etc/mail/access: cyberpromo.com REJECT kalmarhem.com DISCARD 10.0.0 RELAY spam@buyme.com 550 Spammers go away! Kontrollera även mottagare i access-filen sendmail.cf: FEATURE(blacklist_recipients) Databasfilen skapas genom kommandot makemap hash /etc/mail/access.db < /etc/mail/access
Blacklists Blockera mail vars avsändare finns med i "Realtime Blackhole List (RBL) RBL används då man vill blockera e-post från en domän som blivit rapporterad att skicka spam Det finns flera olika listor Ordb.org (Open Relay Database) SpamCop (http://www.spamcop.net/bl.shtml) Distributed Sender Blackhols List (http://dsbl.org) Exempel: FEATURE(dnsbl, `relays.ordb.org )
IMAP Mål: Kompatibelt med Internet-meddelandestandarder (MIME) Access och management från mer än en dator Support för online, offline och disconnected access modes Support för att flera användare ska kunna ha access till samma mailbox samtidigt Klientmjukvaran behöver inte veta om hur mailboxarna är lagrade i filsystemet Funktioner: Skapa, ta bort, döp om mailboxar Kolla efter nya meddelanden Ta bort meddelanden permanent Sätta och ta bort flaggor Sökning Valbar hämtning av olika delar av meddelande
POP3 Post Office Protocol POP2 blev vanligt på mitten av 80-talet Support för connected och disconnected access modes Lämnar oftast inte meddelanden på servern, tvärtemot IMAP
mbox Sparar alla meddelanden i en enda stor fil From startar varje nytt meddelande och en tom rad slutar varje meddelande Blev aldrig riktigt definierat genom RFC Helt upp till klienten att spara meddelanden på ett korrekt sätt
maildir En katalog innehållande varje meddelande som en enskild fil Innehåller katalogerna tmp, new och cur Processen som levererar meddelandet sparar det i tmp Varje meddelande sparas som en fil, med filnamn som bygger på tid, hostname och ett unikt ID (ofta PID) och några slumpvalda siffror Nya meddelanden kopieras sedan till new och tas bort från tmp När en MUA (Mail User Agent) ser att det finns nya meddelanden i new, flyttas meddelandet till cur på samma sätt som ovanstående
Dovecot Open Source IMAP/POP3 server Skriven med säkerhet i första hand Kan arbeta med båda vanlig mbox och det nyare formatet maildir Kan hantera TLS/SSL och IPv6 Planerat stöd för mailboxes i SQL-databaser
Dovecot-konfiguration /etc/dovecot.conf base_dir = /var/run/dovecot/ protocols = imap pop3 //Använda protokoll ( imap imaps pop3 pop3s ) imap_listen = mail1.norden.net //Lyssna på host/ip ( host IP * ) pop3_listen = mail1.norden.net //Lyssna på host/ip ( host IP * ) # %u - username # %n - user part in user@domain, same as %u if there's no domain # %d - domain part in user@domain, empty if there's no domain # %h - home directory # default_mail_env = maildir:/var/mail/%1u/%u/maildir # default_mail_env = mbox:~/mail/:inbox=/var/mail/%u # default_mail_env = mbox:/var/mail/%d/%n/:index=/var/indexes/%d/%n default_mail_env = mbox:~/mail/:inbox=/var/mail/%u # Ger: # /home/pelle/mail/ //innehåller information om mail # /var/mail/norden.net/pelle //innehåller pelles inbox
Webmail Webmail är en implementering av e-posttjänster via ett webbgränssnitt Används mestadels då man inte kan upprätta en direkt anslutning till en POP3 eller IMAPserver Används även ofta tillsammans med gratis e-posttjänster, såsom Hotmail, Gmail och Yahoo Exempel på programvaror för webmail: @pen Mail Neomail SquirrelMail RoundCube
Squirrelmail Skrivet i PHP Inbyggd PHP-support för IMAP och SMTP Alla sidor renderas i ren HTML för maximal kompabilitet Klarar av allt som krävs av en vanlig e-postklient MIME-support Adressböcker Kataloger Har väldigt många plugins, såsom stavningskontroll, filter, quota, kalender och möjlighet att hämta e-post från en annan POP3-server
Squirrelmail-konfiguration Använder sig av konfigurationsfilen /etc/squirrelmail/config.php Domän $domain = kalmar.se ; IMAP-server och port $imapserveraddress = imap1.kalmar.se ; $imapport = 143; SMTP-server och port, om man ska använda sig av sendmail för att skicka e-posten till servern $smtpserveraddress = mail1.kalmar.se ; $smtpport = 25; $usesendmail = true; $sendmail_path = /usr/sbin/sendmail ;
Squirrelmail-konfiguration Använda POP3 innan SMTP $pop_before_smtp = false; IMAP-typ Dovecot använder sig av typen courier Behöver oftast inte ändras, standardinställningarna fungerar bra $imap_server_type = courier ; # Dessa två måste även vara definierade # för att Squirrelmail ska förstå hur # Dovecot fungerar $optional_delimiter = '.'; $default_folder_prefix = '';
Demo