ITE1804 - Operativsystemer og tjenestedrift obligatorisk oppgave 2.4

E-post.

Målet med oppgaven:

En sentral post tjener skal konfigureres til å kunne ta i mot epost for brukerne i DNS domenet. DNS må være operativ og ha definerte MX poster som forteller hvilket system som tar i mot epost til brukerne i domenet. De forskjellige navnetjenerne for underdomenene til nnth.org må være registrert i modersonen med glue records. Postklienter skal kunne lese post ved hjelp av POP3 eller IMAP protokollen.

Oppgaven løses med de samme student gruppene som DNS oblig.

Installasjon og konfigurasjon av postfix

Installer postfix med kommando:

apt-get install postfix


Ved spørsmål under installasjon angi "Internet Site", angi deretter ditt domenenavn i DNS som du skal sende og motta mail for dom "System mail name", f.eks. abc123.nnth.org, benytt samme domenenavn som tidligere under DNS lab.

I katalogen /etc/postfix/ ligger alle konfigurasjonsfilene for postfix. main.cf er hovedkonfigurasjonsfilen som skal editeres. Ta en kopi av main.cf til main.cf.org.  Det er alltid godt å ta vare på originalen før en går i gang med endringer. Dokumentasjon på parametre i denne filen finner du på http://www.postfix.org/postconf.5.html

Nyttig Ubuntu dokumentasjon:

Setting up an Ubuntu System as an Email Server, PostfixBasicSetupHowTo og Postfix Ubuntu Server Guide.

Et alternativ for å redigere main.cf for hånd er å kjøre dpkg-reconfigure postfix, dokumentasjonen omhandler dette.

Spesifisering av aksess til mailtjeneren

I utgangspunktet er postfix kun tilgjengelig for det lokale systemet. Sjekk filen /etc/postfix/main.cf. I mynetworks står kun 127.0.0.1/8 (+IPV6). Det betyr at kun eposttjeneren er tilgjengelig lokalt, således ingen sikkerhstrisiko. Vi skal benytte en webklient som skal kjøre på serveren, dermed kan dette bli stående slik. Skulle du ønske koble opp fra andre klienter utenfra må disse nettverkene legges til i lista.

mynetworks = 127.0.0.0/8

Spesifisering av ulike navn for mailtjeneren

Domenenavnet ditt må ligge i mydestination (dette ble gjort under installasjonen), systemet vil akseptere epost adressert til domener angitt her. Sjekk at dette stemmer.

mydestination = xxx.nnth.org, localhost.localdomain, localhost

Start og stopp av postfix:

service postfix restart , stopp og restart av postfix. Benytt parametrene start, stop og restart. Etter endring av konfigurasjonsfiler må det alltid kjøres kommando postfix reload.

Postfix loggfil

Alle hendelser vedrørende postfix logges i filen /var/log/mail.err eller mail.log. Dersom noe ikke virker er dette stedet å lete etter feilmeldinger. Benytt kommando

tail -f /var/log/mail.log eller mail.err

et eget terminalvindu viser filen kontinuerlig, greit i en feilsøkingsfase og for å få en forståelse for hva som foregår.

Porter på AWS:

Port 25 TCP må åpnes for innkommende og utgående trafikk.

Test av SMTP tjeneren:

Vi kan benytte Telnet for å kommunisere med eposttjeneren som lytter på port 25. Vi kan sende en epost ved hjelp av dette uten å benytte en epostklient. Gjør dette for å teste ut den nyinstallerte eposttjeneren. Som mail from: adresse må du angi en gyldig epostadresse som du har. Mottaker som angis i rcpt to: feltet angis en lokal bruker på ditt system, benytt den brukeren du er innlogget som, f.eks. brukeren stud.

NB ! Viktig, når du oppretter en egen bruker så blir ikke nødvendigvis hjemmekatalogen opprettet. Sjekk under /home/, dersom brukeren ikke har hjemmekatalog må du opprette denne og sette brukeren som eier. Hva som er brukerens hjemmekatalog står i /etc/passwd, men er normalt under /home/ og katalognavn lik brukernavn.

Feltet mail from: er fra feltet på konvolutten, det har ikke noe å gjøre med fra feltet på selve meldingen. Feltet legges inn i Received header og benyttes som return path. Likeså er feltet rcpt to: mottakerfeltet på konvolutten og ikke selve meldingen, legges inn i envelope-to header.

Her benyttes telnet mot eposttjeneren på port 25 på systemet 127.0.0.1. Legg inn din epostadresse der det står <din epost adresse>. Eposten sendes til den lokale brukeren ubuntu , legges inn der det står <innlogget bruker>. Er du innlogget med annen bruker benytt da denne.

root@user:~# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 ubuntu ESMTP Postfix (Ubuntu)
helo kc.hin.no
250 ubuntu
mail from:<din epost adresse>
250 2.1.0 Ok
rcpt to:<innlogget bruker>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: <din epost adresse>
To: <innlogget bruker>
Subject: Bare en test !

Test i dag !

.
250 2.0.0 Ok: queued as 640D5C1C2
quit
221 2.0.0 Bye
Connection closed by foreign host.

Du kan benytte kommando mailq for å se mail køen, dvs mail som ligger i kø og venter på å bli sendt av postfix tjeneren, dersom du ikke ser noe her er det ingen kø :-)

Eposten skal dukke opp i postboksen ti brukeren du sendte den til. Alle postboksene ligger som standard i mappen /var/mail/. Eposten kan leses med kommandoen more /var/mail/<innlogget bruker>. All epost til brukeren vil ligge i denne filen. Sjekk også filen /var/log/mail.log, hva sier denne om eposten til brukeren ?

Opprettelse av kontoer og postbokser:

Opprett gjerne flere lokale brukere for testing. Alle brukere får automatisk også en postboks i mappen /var/mail/ når post kommer inn til brukeren. Vi benytter nå kun lokale brukere, en utvidelse av oppgaven vil være å hente brukere fra en LDAP tjener. Hva er beskyttelseskoden som standard for postboksene ?

Installasjon av POP3 ig IMAP tjener.

Installer dovecot-imapd og dovecot-pop3d ved hjelp av apt.
Vi benytter oss nå kun av POP3 for å teste ut mailtjeneren vår nå. Editer filen /etc/dovecot/dovecot.conf og angi hvor postboksene til brukerne er, angi følgende :

mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u

%u vil bli erstattet med brukernavnet for den enkelte bruker av dovecot.

I første omgang benytter vi nå klartekst passord over en ukryptert forbindelse. Start opp pop3/imap med kommando:

service dovecot restart

Før du fyrer opp en mailklient mot POP3 tjeneren kan du sjekke at denne virker ved å koble deg opp med telnet mot port 110, POP3 tjeneren lytter på denne porten. Her logger vi oss inn med brukeren din og passordet for denne. (Her er det en fordel å benytte en bruker som du vet har post i postboksen, benytt den du sendte epost til under pkt. Test av SMTP tjeneren.)

(Her er det vist for brukeren hintest med passordet hemmelig)

telnet 127.0.0.1 110


root@ubuntu:~# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
+OK Dovecot ready.
user hintest
+OK
pass hemmelig
+OK Logged in.
list
+OK 5 messages:
1 414
2 2264
3 402
4 422
5 406
.
retr 3
+OK 402 octets
Return-Path: <tester@dt.hin.no>
X-Original-To: hintest
Delivered-To: hintest@dt.hin.no
Received: from 25 (localhost [127.0.0.1])
by ubuntu (Postfix) with SMTP id EDB86C1C2
for <hintest>; Mon, 23 Mar 2009 09:40:19 +0000 (UTC)
From: tester@dt.hin.no
To: hintest@dt.hin.no
Subject:Bare en test !
Message-Id: <20090323094026.EDB86C1C2@ubuntu>
Date: Mon, 23 Mar 2009 09:40:19 +0000 (UTC)

Test i dag !

.
quit
+OK Logging out.
Connection closed by foreign host.


POP3 Kommandoer er blant annet beskrevet her: http://techhelp.santovec.us/pop3telnet.htm

NB ! Dersom ingen meldinger i postboksen lukkes forbindelsen umiddelbart, dette er normalt. POP3 Benyttes kun til denne testen, IMAP benyttes videre i oppgaven.

DNS endringer

MX post

I DNS må du i sonefilen registrere hvilket system som tar i mot epost for sonen din, dette gjøres med en MX post. Legg inn en ny post ala det følgende i sonefilen for abc123xx.nnth.org:

MX 10 navn-paa-server

navn-paa-server byttes ut med navnet på din server., dette må også være definert i DNS med en A post, slik at IP adressen er kjent.

SPF

Definer en TXT post for domenet ditt som angir hvilke systemer som kan sende epost. mer om formatet finner du her: http://www.openspf.org/FAQ/Examples

Test av oppsett:

Dersom du jobber direkte på tjeneren via SSH kan du installere alpine, det er en tekst basert epost klient, her må du inn i konfigurasjonen og angi avsenderdomene før du sender epost. Ønsker du en webklient kan squirremail installeres, mer om den her https://www.linode.com/docs/email/clients/install-squirrelmail-on-ubuntu-16-04-or-debian-8

Det skal nå være mulig å sende en e-post til din bruker på mailtjeneren.Prøv sende epost til bruker@xxx.nnth.org fra din UIT mail eller google mail. For at dette siste skal virke må det i DNS være lagt inn en MX post som forteller hvem som tar i mot epost for domenet xxx.nnth.org. UIT og Google mail skal fungere ok, sjekk at du kan svare på disse også.

Kryptering:

Både Postfix og Dovecot er satt opp med selvsignerte sertifikat. For Postfix ligger er dette spesifisert i main.cf med følgende:

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

For Dovecot ligger sertifikatet mappa /etc/ssl/certs/dovecot.pem og den private nøkkelen i /etc/ssl/private/dovecot.pem. Som standard tillater ikke dovecot oppkobling uten bruk av kryptering (tillates kun fra localhost). I mappa /etc/dovecot/conf.d/10-ssl.conf er det disse nøklene spesifiseres.

Lets Encrypt tilbyr gratis sertifikat for 90 dagers varighet, gå til https://letsencrypt.org/ og følg framgangsmåten der. Du kan slå på TLS for Postfix slik at trafikken mellom din eposttjener og andre eposttjenere krypteres, følgende parametre må angis:

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_loglevel = 1

may angir her at kryptering vil finne sted dersom serveren i andre enden støtter dette. Parameter smtpd_ gjelder for innkommende epost, smtp_ gjelder for utgående epost. Noe mer om dette her: http://blog.snapdragon.cc/2013/07/07/setting-postfix-to-encrypt-all-traffic-when-talking-to-other-mailservers/

Konfigurering av alias og epostlister:

Alias er alternative navn for postboksen din, her kan du legge inn kallenavn, fult navn (som Ola. Normann) osv. Dette gjøres i filen /etc/aliases. Her kan du også lage en adresseliste ved å legge inn flere navn på lokale brukere. Benytt komma som skilletegn mellom brukernavn, man aliases forteller mer. Lag en adresseliste med navn "studenter" der flere brukerne inngår. Kjør kommandoen newaliases for å få aktivert de nye aliasene og sjekk ut at de virker ved å sende epost til denne adresselista.

AntiSpam:

Implementer følgende antispam teknikker:

  1. HELO begrensninger
  2. Avsender og mottaker begrensninger (benytt et utvalg av svartelister)
  3. Grålisting
  4. SPF og DKIM

For utførelse av denne del av oppgaven benytt følgende kilde: Filtering SPAM with Postfix Ikke utfør pkt. 3 grålisting før pkt 1 & 2 fungerer tilfredstillende. Mer om HELO begrensninger på denne adressen http://www.postfix.org/postconf.5.html#smtpd_helo_restrictions, dersom du tester ut disse, vær oppmerksom på at HELO begrensninger sjekkes ved kjøring av RCPT TO kommandoen og ikke før !

Kommentarer:
Ang. del 1 grålisting og SPF. Grålisting for Postfix er et separat produkt, installer pakken POSTGREY med apt. Denne installerer og starter opp en egen prosess som lytter på port 10023, slik det står i main.cf linje 29 i dokumentet "Filtering SPAM with POSTFIX". Kommenter ut linja over. Det skal ikke være behov for å endre master.cf, installasjonen av postgrey gjør dette.

Ikke alt i HELO begrensninger må tas med, vi kan generelt her droppe alle aksesslister slike som på linje 5

5 check_helo_access hash:/usr/local/etc/postfix/helo_access,

Tilsvarende når det gjelder Recipient restrictions, her sløyfer vi også aksesslistene (whitelist/blacklist) på linje 22-24

22 check_sender_access hash:/usr/local/etc/postfix/sender_access,
23 check_recipient_access hash:/usr/local/etc/postfix/recipient_access,
24 check_helo_access hash:/usr/local/etc/postfix/secondary_mx_access,

Ang bruk av blacklists i postfix, ordb.org er stengt ned, så denne kan ikke benyttes, ref linjene 25-26. Dropp linje 27, mens linje 29 som nevnt over angir grålistingen, dette er det viktigste av alle SPAM tiltakene og må være med. Postgrey prosessen kjører på ditt lokale system etter installasjonen og lytter på port 10023.

Sjekk av open relay

Det er viktig å sjekke at tjeneren ikke er åpen for andre enn de vi har tenkt oss. Kjør sjekk av din epost tjener på https://mxtoolbox.com/SuperTool.aspx .Velg fanen "Diagnostics" og gi inn navnet på dein mailtjener. Testene skal gå igjennom vellykket, men "SMTP banner check" vil feile pga. revers DNS ikke er satt opp til din mailtjener.

Til slutt:

Det skal nå være mulig å sende epost innenfor et domene, dersom DNS tjenerne for hvert domene er registrert i foreldresonen nnth.org, skal det også kunne sendes mail mellom domener. Send en epost fra ditt system til faglærer på adressen knut@nnth.org som et bevis på at du har fått konfigurert dette riktig. Svaret på denne eposten benyttes som dokumentasjon på utført oppgave og vedlegges besvarelsen.

Besvarelse

Alle og filer opprettet/endret leveres i et PDF dokument for lett lesbarhet.
Følgende inkluderes i dokumentet:

  1. En beskrivelse av installasjonen med eventuelle problemer/utfordringer, hva du har lært av gjennomføring av oppgaven, spesielt fokus på SPAM, spesielt grålisting, og sikkerhetstiltak som SPF og evt. DKIM.
  2. Legg med original mail fra Google (eller andre) som viser at din SPF post er benyttet og mail akseptert på bakrunn av denne. Har du satt opp TLS vil denne også vise dette.