Mail

Hvordan fungerer dette?

For å sende å motta mail trengs det i hovedsak tre tjenester gåendes:

  1. MUA (Mail User Agent) – Eks Thunderbird, Outlook Express, KMail osv.. dvs en e-postleser
  2. MTA (Mail Transfer Agent) – Dvs den tjenesten som overtar etter e-post klieneten, og tar seg av selve sendingen av e-posten. Eks på en MTA er Sendmail, Postfix.
  3. MDA (Mail Delivery Agent) – Det er den tjenesten som leverer mailen til den enkeltes mailbox (etter å ha gått igjennom en MTA som Sendmail). Eksempel på MDA er Procmail.

Må ikke forveksles med SMTP (eller ESMTP) – da SMTP er selve protokollen som benyttes av f.eks. Sendmail. Men, når man snakker om Sendmail, så sier man jo at det er en SMTP server. Litt forvirrende – men likevel krystallklart .

Kort om Sendmail

Utviklet seg over tid – skrevet av den legendariske Eric Allman. I følge wikipedia den mest brukte MTA.

I praksis tar sendmail i mot mailen som f.eks. du og jeg sender fra Thunderbird(MUA), og deler den i to deler i katalogen “/var/spool/mqueue”. Sendmail genererer selv en random tekststreng og setter det som navn på fila. Selve innholdet (bodyen) får filendelsen “.df “(datafile), og headeren får filendelsen “.qf ” (queue file). Når mailen blir sendt, vil filene forsvinne fra mailkøen. Dvs – ligger det filer i /var/spool/mailqueue” – ligger det mail som venter på å bli sendt. Når mail blir mottatt av sendmail (fra en annen MTA), legger den mail til (“adder”) i fila /var/spool/mail/brukernavn. Alle brukere har sin egen fil her, som de har tilgang til. Denne fila er det samme som “inbox” i imapfolderen din. Bruker formatet “mbox“.

Du kan tune forskjellige elementer i Sendmail. Default innstillinger kan endres i “sendmail.mc“. “sendmail.cf” skal IKKE røres. Etter at du har gjort endringer i “sendmail.mc”, restarterter du sendmail på vanlig måte (eks: “/etc/init.d/sendmail restart“) Etter at denne kommandoen er kjørt, bli “sendmail.cf” overskrevet og oppdatert med de tilpasningene du gjorde i “sendmail.mc”. Tips – Ta backup OFTE, og ikke klå for mye hvis du skal få sendmail til å virke.

Mange tjenester på et linuxsystem krever at serveren sender mail. Selv om sendmail som regel er default satt opp til at localhost (dvs serveren selv) skal kunne sende mail fra serveren, trenger man ikke å sette dette opp. Det er fullt mulig å sette opp sendmail som en vanlig e-post klient, dvs med referanse til en annen SMTP server. (F.eks. din internettleverandør)

Mange nettleverandører (min ISP tele2.se gjør dette) stenger utgående port 25, slik at ikke alle mulige internettbrukere kan sette opp forskjellige utgaver av MTA’er som går bananas (og brukes til å spamme deg og meg). Derfor må jeg konfigurere min lokale sendmail hjemme til å benytte smtp.tele2.se som min MTA i Sendmail.

Eksempler på å bruke din nettleverandør til å sende mail:

define(`SMART_HOST’, `smtp.tele2.se’)

I mitt tilfelle ville jeg nå kunne brukt sendmail på vanlig måte hjemme, men i stedet for at sendmail selv opptrår som MTA, så bruker sendmail smtp.tele2.se til å relaye mail.

Vil du at sendmail skal kunne ta i mot mail også, er det viktig at du forteller sendmail dette. Default er sendmail konfigurert med at den kun tar i mot mail innen for sitt eget system. Fjerner du referansen til 127.0.0.1, åpner du opp for at den skal ta i mot inkonmende mail.

Eksempel:

DAEMON_OPTIONS(`Port=smtp, Name=MTA’)dnl

Sendmail kan også konfigureres slik at den sjekker om avsenderdomenet eksisterer (og at den ikke er SPAM/annet).

Eksempel:

dnl # We strongly recommend not accepting unresolvable domains if you want to
dnl # protect yourself from spam. However, the laptop and users on computers
dnl # that do not have 24×7 DNS do need this.
dnl #
FEATURE(`accept_unresolvable_domains’)dnl

Utdraget fra denne konfigurasjonsfila viser at denne mailserveren godtar at avsenderdomenet ikke nødvendigvis behøver å finnes. Skrur jeg dette av, dvs legger jeg til “dnl” før FEATURE, og restarter sendmail, vil den ikke godta f.eks. mail fra våre testservere. Vår testserver bruker domenet tedms.no, som bare finnes i vår DNS, og er ikke registrert andre steder.

Apr 2 12:13:50 argo sendmail[21698]: STARTTLS=server, relay=pc162-149.hiof.no [158.39.162.149], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256
Apr 2 12:13:50 argo sendmail[21698]: n32ADoaD021698: ruleset=check_mail, arg1=< root@server.tedms.no>, relay=pc162-149.hiof.no [158.39.162.149], reject=553 5.1.8 < root@server.tedms.no>… Domain of sender address root@server.tedms.no does not exist

Over er et utdrag fra /var/log/maillog på min mailserver. Som vi ser svarer min mailserver at den ikke godtar å motta mail fre root@server.tedms.no, nettopp fordi den sjekker om tedms.no eksisterer. Dette er vedt å merke seg ved testing – da man i utgangspunktet kan tro at det er den mailserveren som sender mailen som er problemet. I dette tilfelle – mailserveren fungerer perfekt, men den har ingen lovlig adresse.

 

Logging

Det er viktig at du overvåker og sjekker loggene jevnlig. Loggene ligger som vanlig i katalogen “/var/log“. Det er varierende hvordan sendmail logger, og legger sine filer. men på Fedora 8,9 og 10 skriver den informasjonen til fil “maillog”.

Du kan også sette opp sendmail til å “logge mer” informasjon enn standard. Dette kan gjøres f.eks. på følgende måte:

define(`confLOG_LEVEL’, `20′)dnl

Standard level er 9. Ta en “tail -f /var/log/maillog” for å sjekke hva som faktisk skjer når du eller noen andre sender mail til din server.

 

Videresending av mail

Både vanlige brukere og systemansvarlig kan sette opp videresending av mail.

I hovedsak er det tre filer som styrer videresending. Filen “aliases“, “virtusertable” og “.forward” (i hver enkelt brukers hjemmeområde).

Aliases

Det er bare systemansvarlige som kan konfigurere denne. Her kan du sette opp lokale aliaser for ditt system. Selve fila ligger på : “/etc/aliases“.

Eks:

#
# @(#)aliases 8.2 (Berkeley) 3/5/94
#
# Aliases in this file will NOT be expanded in the header from
# Mail, but WILL be visible over networks or from /bin/mail.
#
# >>>>>>>>>> The program “newaliases” must be run after
# >> NOTE >> this file is updated for any changes to
# >>>>>>>>>> show through to sendmail.
#

# Basic system aliases — these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root

# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root

# Well-known aliases.
manager: root
dumper: root
operator: root

# trap decode to catch security attacks
decode: root

# Person who should get root’s mail
#

root: torepeng

#Andre aliases
tore.p.engen.anbud: torepeng
torepeng_reise: torepeng
torepeng_messe: torepeng
tpe: torepeng
t: torepeng
webmaster: torepeng
test: torepeng, test
mambo: torepeng
joomla: torepeng
torepeng_joomla: torepeng
torepeng_dns: torepeng
pocketpc: torepeng
torepeng_msn: torepeng
torepeng_mandrake: torepeng
eirik-tpe: eirik
rekruttering: torepeng
torepeng_swe: torepeng
tore.petter: torepeng_nossemark
nossemark: torepeng_nossemark, ekstern.navn@hotmail.com, mitt_navn@gmail.com
nossemark_not_spam: torepeng
torepeng_bok: torepeng, ekstern.bruker@hiof.no
torepeng_valg: torepeng
tore.p.engen_facebook: torepeng

#Denne orker jeg ikke sjekke mer..
torepeng_bestillinger: /dev/null

#hyggelig tilbakemelding
torepeng_feil: error:5.7.0:550 Invalid addres

OBS: Den må settes opp med en linje, og husk kolon etter aliases. Har du mange mottakere, så må du ikke ta linjeskift. Alt må stå på samme linje. Når du har gjort endringen, skal kommandoen “newaliases” kjøres. Hvis du ikke gjør det, må du restarte sendmail for at evt endringer i aliases blir tatt hensyn til.

.forward

Lokale brukere kan selv også forwarde lokal mail.

$ more .forward
kstern.adresse@gmail.com
\torepeng

Denne fila videresender all mail som torepeng får til adressen ekstern.adresse@gmail.com. Kan f.eks. være en god ide for å ta backup av all mail du får til skolens adresse. Backslash og brukernavn sikrer oss at mailen blir liggende igjen på vårt system. Hvis du utelater dette, blir all mail bare forwardet, og du må lese denne mailen på den eksterne adressen sin e-postserver.

virtusertable

Fungerer på samme måte som aliases fila. Men i motsetning til aliases som bare sjekker reelle og virtuelle brukere på det lokale systemet, sjekker den også opp reelle og virtuelle brukere på de domenene som senmail kjenner til og har ansvar for.

tore.p.engen@gruppe-x.no torepeng
knut.knudsen@gruppe-x.no knut

jens.andresen@linuxconsulting.no jens@linuxconsulting.com

#eller alle brukerne til linuxconsulting.no til linuxconsulting.com

@linuxconsulting.no % 1@linuxconsulting.com

NB! Det finnes ingen newvirtusertable kommando.. Du må restarte senmail fpr at endringene skal skjer.

 

Litt mer avansert om spam og virushåndtering

Hvordan kan et større system håndtere Spam og virusproblemer? Et forslag er Mailscanner. Les mer på http://www.mailscanner.info

Hvordan fungerer så dette:

mailscanner.jpg

Eksempel vil bli vist på forelesningen

 

Procmail – MDA

I det sendmail legger mailen i inbox, har den blitt håndtert av procmail og gjennomgått analyser i spamassassin. Procmail kan derimot i tillegg bli benyttet til å rydde og sortere mail for vanlige brukere.

Procmail kan faktisk sjekke mail som kommer inn, teste på avsenderadresse, mottakeradresse, subject osv osv, og flytte mailen fra standard inbox til f.eks. mer logiske mappestrukterer som den du har i dine IMAP-foldere. Og ja – den kan faktisk også slette mail for deg..

Eks:

# Hilde – kona
:0
*^From.*(konas.navn@byttet_ut.no|konas.navn@gmail.no|konas.navn@byttet_ut.no)
1_privatmail/personlig

#mail fra neted/bodø
:0 c
* ^From.*(no.ist.biz|ist.com)
! mitt_brukernavn@sms_leverandor.no

:0 A
2_adm_web_saker/ist_neted

:0 c
* ^Subject:.*SMS-HASTER
! mitt_brukernavn@sms_leverandor.no

:0 A
$DEFAULT

Hver enkelt bruker kan også håndtere dette via en .”procmailrc” fil i sitt hjemmeområde.