donderdag 23 juni 2011

Een korte spam historie

Spam (UCE = Unsolicited Commercial E-mail)
Voor wie nog niet weet wat spam is; het wordt omschreven als e-mail die over het algemeen tenminste aan de volgende drie criteria voldoet:

1. Je hebt er niet om gevraagd
2. De afzender is onbekend (en wenst dat ook te blijven)
3. Het wordt in zeer grote aantallen over het Internet verspreid

De eerste spam-message wordt verondersteld te zijn verzonden op 3 mei 1978 door een manager van DEC. Het bericht betrof een uitnodiging aan alle op dat moment geregistreerde Arpanet-gebruikers voor een demonstratie van nieuwe DEC hardware. Hieronder een fragment van dat eerste spambericht. De afzender beschikte destijds nog niet over de geavanceerde e-mailprogramma's die wij nu kennen; hij moest de hele lijst van enkele honderden adressen zelf intikken. In het oorpronkelijke bericht (zie de link hieronder) is te zien dat het aantal ingevoerde adressen te groot was voor het TO: en het CC: veld.
In die tijd bestond het woord spam nog niet in de context van e-mail misbruik. De afzenders, Carl Gartley en Gary Thuerk, zonden hun bericht aan een paar honderd adressen uit een lijst van Arpa (toen nog een overheidsnetwerk). De reactie op het bericht liet niet veel aan duidelijkheid te wensen over:
De DEC medewerkers schijnen zich deze reactie wel te hebben aangetrokken en hebben zich vervolgens niet meer aan deze vorm van e-mail bezondigd. (... de spammers van nu hebben deze moraal allang niet meer ...). Het hele verhaal is hier te vinden.

In 2006 zijn de activiteiten van spammers weer hoog opgelaaid. De constante strijd tussen spammers en ontwikkelaars van anti-spam methoden wordt van beide kanten voortgezet met steeds geavanceerder middelen. Het gaat om het gemak waarmee je via Internet een afzetmarkt van vele miljoenen potentiële kopers aan je voeten hebt. Het verzenden van e-mail, -ook bulk e-mail-, is nog steeds gratis en lijsten met miljoenen e-mailadressen zijn voor luttele dollars te koop. De irritatie die deze vorm van advertising bij de gebruiker teweeg brengt is iets waar de verspreider geen boodschap aan heeft; die verschuilt zich bovendien zorgvuldig achter de anonimiteit die het wereldwijde web hem kan bieden. De bulk e-mail veroorzaakt behalve irritaties ook overvolle mailboxen waarin het lastig zoeken is naar legitieme e-mail, van tijd tot tijd dichtslibbende Internet lijnen en overbelaste servers. Verdediging tegen de overlast kan op meerdere fronten worden aangepakt:

- Regulering door Overheden (Boetes voor verzenden van UCE)
- Filtering bij ISP's, SMTP Servers en E-mail Clients
- Gebruikerseducatie

Spam technieken

Om spamfilters te misleiden worden in spamberichten regelmatig enige hoeveelheden onschuldige trefwoorden -onzichtbaar- in het bericht meegezonden. Dit wordt gedaan om de spam-score of het Spam Confidence Level (SCL) gunstiger te laten uitpakken. Deze waarde komt onder andere tot stand door de verhouding tussen het aantal Spam-kenmerken en de overige inhoud van een bericht te meten. Bepaalde trefwoorden zijn kenmerkend voor spam, terwijl heel veel andere -legitieme- woorden zelden of nooit in spam voorkomen. Deze "Poison-Pills" zijn voor de lezer soms onzichtbaar gemaakt door ze in html-mail op te maken in witte tekst tegen een witte achtergrond, aan het einde van het bericht. Dit is een reden waarom veel spammers een voorkeur hebben voor het gebruik van HTML-opmaak. (In plaats van witte html-opmaak worden deze teksten ook wel in een heel klein font in het bericht geplaatst).
Voorbeeld van een "Poison Pill" in een spam-bericht:

De strijd gaat door ...

Een van de laatste trends aan het spammersfront is het meezenden van afbeeldingen van tekstberichten. Het e-mailbericht is verder geheel leeg en bevat nog slechts een .jpg of .gif attachment, dat bij het openen van het bericht automatisch wordt getoond. Omdat het bericht geen echte -voor de computer leesbare- tekst bevat is het door de meeste spamfilters niet te controleren op kenmerkende spam-woorden.
 Filteren op attachments of op de kenmerken van deze attachments (o.a. grootte, checksums) is lastig te organiseren omdat de afzender ieder plaatje voorziet van een unieke vingerafdruk door het genereren van ruis in de afbeelding. Op deze manier wordt ieder verzonden bericht voorzien van een afwijkende afbeelding. De boodschap blijft ondanks de ruis voor mensen gewoon leesbaar. Zie onderstaand voorbeeld uit een spambericht van zondag 26-11-2006 ...


De "sierlijke" stippen (zie rechts) zijn in ieder plaatje afwijkend geplaatst, zodat op de afbeelding berekende checksums in ieder verzonden bericht anders uitpakken. Hieronder nog een paar voorbeelden. Let op de verschillen in tekstopbouw en de variatie in ruis.

... en een variatie op hetzelfde thema ...
Een verdediging tegen deze vorm van spam kan bestaan uit het toepassen van OCR (optische karakterherkenning) in afbeeldingen, waardoor op herkenbare spam-woorden kan worden gefilterd. Al met al gaat ook deze filtering-methode weer ten koste van een beetje performance. Een volgende zet kon natuurlijk niet uitblijven en nu worden de plaatjes, voordat ze in het e-mailtje worden meegezonden, eerst in stukjes geknipt en door elkaar gehaald. Pas zodra ze bij de ontvanger belanden worden door het e-mailprogramma de fragmenten automatisch weer tot één plaatje samengevoegd. Zo kan ook OCR niets met de fragmenten aan.

Tarpitting
Een van de maatregelen die je bij Exchange Server 2003/2007/2010 kunt nemen om spammers een beetje te ontmoedigen is het inschakelen van de teerput . (Eng. Tarpit)



Met deze instelling, die vanuit de server-registry kan worden geactiveerd, wordt bij een door een anonieme client geopende SMTP sessie de response van de server met tientallen seconden vertraagd zodra de response met een foutcode begint (5xx). Dit is bijvoorbeeld het geval wanneer een anonieme connectie vanaf het Internet probeert een e-mailbericht af te leveren aan een ter plaatse niet-bestaande SMTP-ontvanger. (Uiteraard dient dan wel de filtering op niet bestaande AD-accounts ingeschakeld te zijn). (N.B. Bij Exchange 2007 en 2010 is deze al ingesteld op 10 seconden.) 
Een dergelijke dialoog zal bijvoorbeeld als volgt verlopen: ...


(C) helo bogus.unicorn.org
(S) 250 mail.mydomain.com
(C) mail from: bob@unicorn.org
(S) 250 2.1.0 Sender OK
(C) rcpt to: fake@mydomain.com
 ... (Delay 10 - 20 sec.) ...
(S) 500 5.7.1 Unknown recipient

Wanneer de zender nu een hele lijst met potentieel niet-bestaande adressen probeert af te werken neemt de tijd pér foutreactie steeds 10 tot 20 seconden in beslag ... (... moed zakt in de schoenen ...)

Het inschakelen van tarpitting bij Exchange 2003 verloopt volgens drie stappen:
1. Open met Regedit.exe de volgende registerlocatie:
    HKLM/System/CurrentControlSet/Services/SMTPSvc/Parameters
    Voeg nu een nieuwe DWORD-variabele toe met de naam "TarpitTime". (Het kan zijn dat deze variabele al is aangemaakt) Kies voor Decimale notatie en geef een vertragingstijd in seconden op, bijvoorbeeld 10.


Herstart de SMTP service

2. Schakel in de Exchange System Manager bij Global Settings het recipient filter in en zet een vinkje bij "Filter recipients who are not in the directory". Geeft ook bij de individuele SMTP service(s) aan dat op recipients moet worden gefilterd.

zondag 10 oktober 2010

Presentatie over DNS en PNRP toegevoegd

Een .ppsx presentatie die ik al een paar maanden op de plank heb liggen over naamresolutie. Hij is nog voor verfijning vatbaar, maar ik zet 'm vast in de rechterkantlijn omdat ik delen ervan al kan gebruiken. Met name het deel over Peer Name Resolution Protocol moet nog verder worden uitgewerkt; het ontbreekt nog aan een heldere toepassing ervan in de slides en er valt nog het nodige te vermelden over het hiërarchische model ervan. Zodra ik wat tijd over heb (het blijft hobbywerk) komt de definitieve versie er voor in de plaats.

donderdag 17 december 2009

Linkjes werken nu allemaal ...

Van de linkjes in de rechterkolom werkten er een paar niet; dat probleem is nu opgelost. De PPT-presentaties kunnen nu allemaal worden gedownload.

zondag 6 december 2009

Exchange 2003 - 2010; Migratie en coëxistentie

Gezien de vele vragen van cursisten en de belangstelling bij klanten lijkt het erop dat het komende jaar een groot aantal van de huidige Exchange 2003 gebruikers zullen gaan migreren naar Exchange 2010 en daarmee Exchange 2007 zullen overslaan. Ongeacht de omvang van de bestaande Exchange 2003 omgeving is het aan te bevelen om de migratie zorgvuldig te plannen. De verschillen in architectuur tussen 2003 en 2010 zijn aanzienlijk, hetgeen een nauwgezette planning noodzakelijk maakt. In dit artikel -het eerste uit een te volgen reeks van artikelen- bieden we een overzicht van deze verschillen en de daarbij te verwachten complicerende factoren voor een migratie. De volgorde bij een dergelijke operatie is cruciaal voor het welslagen ervan. Een eerste tip bij het lezen van de artikelen:



De belangrijkste verschillen op een rij: (Exchange 2003 - Exchange 2010)
  1. Exchange server kent -sinds versie 2007- een opdeling van de belangrijkste servertaken in zogenaamde rollen. Deze rollen kunnen voor een groot deel zijn gecombineerd in één machine: de typical setup. De rollen kunnen ook worden gedistribueerd over speciaal daartoe aangewezen servers. Het doel van deze rolverdeling is om de Exchange organisatie te kunnen matchen aan e-mail omgevingen van totaal verschillende omvang en complexiteit. Van simpele single-server uitvoeringen tot organisaties met vele Active Directory domeinen en dito sites verspreid over de wereld. Door de rolverdeling zijn de prestatie-eisen beter af te stemmen op voor een rol benodigde bronnen (CPU, RAM en Disks). Een ander aspect is dat hierdoor de security-  en de redundantie-eisen veel controleerbaarder worden, evenals de schaalbaarheid. (Het laatste betekent dat naar behoefte meer servertaken aan een organisatie kunnen worden toegevoegd; meegroeien met de organisatie).
  2. Exchange 2010 werkt -net als Exchange 2007- alleen op 64-bits Windows Server platformen. Dit gegeven verhindert de mogelijkheid tot een in-place upgrade. (Upgrade van dezelfde machine, gebaseerd op Exchange Server 2003). Met deze quantum-leap, van 32- naar 64-bits is een geheel ander geheugen- en database-gebruik mogelijk. Er kan bijvoorbeeld aanzienlijk meer database-content in een keer worden opgenomen in de RAM-cache. Dit biedt aan de gebruikers een veel snellere weergave van hun mailbox-inhoud op het scherm omdat er minder disk I/O nodig is.
  3. Client-server communicatie wordt in Exchange 2010 geheel via de Client Access Server afgehandeld. Deze serverrol, eveneens geïntroduceerd in Exchange 2007, neemt de functies over van de Exchange 2003 Front-End Server. Bij Exchange 2007 was het nog zo dat alleen de Outlook (Office) client rechtstreeks met de Mailbox Server communiceerde en alle andere clients daarvoor de Client-Access Server aanspraken; nu, in Exchange 2010 loopt alle communicatie tussen de clients en de servers altijd via de Client Access Server.
  4. De SMTP service is ontkoppeld van de Mailbox Server. In Exchange 2003 was de SMTP service nog uitgevoerd als een IIS component, die door de setup van Exchange server 2003 werd uitgebreid met ESMTP en specifieke Exchange SMTP opdrachten. Zo zie je met de Exchange System Manager van Exchange 2003 de SMTP Virtual Server in de Protocols-container terug onder het Server-object bij een Back-end server. Ook al kon je de SMTP virtual server desgewenst tevens installeren op een 2003 Front-End: het werd niet veel gedaan, omdat je dan ook weer een mailbox-store op de Front-End nodig had. Bij een Front-End server was het nu juist te doen om het achterwege kunnen laten van een store-database. Doordat de SMTP service -sinds Exchange 2007- geheel herschreven is als een zelfstandige component hoeven we nu op de Mailbox server ook geen tweeledige store databases te onderhouden, opgedeeld in een *.edb en een *.stm bestand. De *.stm (=streaming) database bevat de rechtstreeks van het Internet afkomstige, native SMTP/MIME 7-bits content vóór conversie naar de 8-bits clients. De *.edb (Exchange DataBase) bevat de van de Outlook clients afkomstige 8-bits, rich text content, vóór conversie naar 7-bits SMTP. De conversie maakt deel uit van iedere e-mail transmissie tussen servers onderling en het Internet en verbruikt daarmee ook serverbronnen. In Exchange 2007 en 2010 is SMTP nu van de Mailbox Server gesepareerd in een aparte rol; bovendien worden e-mailberichten nu op de SMTP server, dat  is de Hub Transport Server, geconverteerd van 8- naar 7-bits, alleen als de verzending de site verlaat en omgekeerd als deze de site binnenkomt. Wat er tussen de Mailbox Server en de Hub Transport Server overblijft is slechts 8-bits communicatie, MAPI over RPC.
  5. Administratieve- en Routing groepen zijn verdwenen. De Exchange topologie volgt eenvoudig de Active Directory Site topologie en de beheerspermissies zijn ondergebracht in Role-groups (2007) of door middel van Role Based Access Control (RBAC) in Exchange 2010. Het is niet langer nodig om twee topologiën naast elkaar aan te houden; die van AD-replicatie en die van SMTP transport. Er van uitgaande dat een AD-omgeving correct is opgezet lijkt er geen extra noodzaak te bestaan om de Exchange omgeving een eigen naastgelegen topologie te moeten geven. Echter, ook al is AD afgestemd op de organisatie; je kunt het SMTP verkeer desgewenst andere routes laten afleggen als controle op SMTP verkeer dat vereist, bijvoorbeeld bij message-hygiëne (AntiVirus, AntiSpam) en bij toepassing van specifieke transport-rules voor tracing en logging.
  6. De toevoeging van een externe SMTP server, de Edge Transport Server en een "Voice-Mail" server, de Unified Messaging Server. Beiden zijn geïntroduceerd in Exchange 2007 en het betreft optionele server-rollen. De Edge Transport Server is bedoeld als een First-Line-of-Defence SMTP server in de perimeter van het netwerk. De installatie vindt plaats op een non-domain-member, een stand-alone server dus en speciaal voor de door Exchange Server vereiste schema- en configuratie-storage wordt een lokale, stand-alone versie van een Directory Service meegeïnstalleerd: de ADAM- (Windows Server 2003) of AD-LDS Service (Windows Server 2008). De Edge Transport Server kan ook controles uitvoeren op outbound e-mail om bijvoorbeeld te voorkomen dat geclassificeerde documenten de organisatie verlaten. Hiervoor is wel de installatie van AD-RMS services vereist. (Rights Management Service). De Unified Messaging service tenslotte zal alleen interessant zijn voor gebruikers die beschikken over VoIP of Enterprise Voice systemen, bijvoorbeeld Office Communications Server 2007 (R2).
  7. Veranderingen in storage. Het is al eerder even aan de orde geweest bij het stukje over SMTP, maar ook de organisatie van de storage is ingrijpend gewijzigd. Er wordt bij Exchange 2010 geanticipeerd op veel grotere mailboxen (tot wel 1 TB) per gebruiker en daardoor ook veel grotere mailbox databases. De afmetingen van dergelijke databases vereisen weer veel langere backup- en recovery tijden, zodat Microsoft heeft nagedacht over alternatieven waarmee de druk op dagelijkse backups kan worden verlicht, zonder daarmee de herstelmogelijkheden geweld aan te doen. De oplossing bestaat uit database-redundantie. (In contrast met Server-redundantie, zoals bij clustering). De eerste aanzet is al gegeven in Exchange 2007 met de introductie van Local Continuous Replication (LCR), Cluster Continuous Replication (CCR) en Standby Continuous Replication (SCR). Door de databases in meervoud achter de hand te hebben, zowel op dezelfde als op andere, verspreid aanwezige mailbox-servers in de organisatie, kan nu betrekkelijk eenvoudig bij beschadiging van een database worden omgeschakeld naar een gezonde replica van dezelfde database. De details laten we hier nog even achterwege, maar met name in Exchange 2010 is dit concept veel verder uitgewerkt.
Ongetwijfeld heb ik in bovenstaande opsomming zaken nog niet vermeld, maar het ging immers om een overzicht in grote lijnen.

Migratie en Coëxistentie

Migratie gaat natuurlijk over het verhuizen van het bestaande systeem naar het nieuw te plaatsen systeem. Het bestaande systeem kan bestaan uit welk denkbare e-mail oplossing dan ook, maar in deze reeks artikelen beperk ik mij tot een uitgangssituatie gebaseerd op Exchange Server 2003. Misschien kom ik later nog terug op andere scenario's. Veel migraties beslaan tegenwoordig een periode waarin het oude- en het nieuwe systeem enige tijd naast elkaar zullen blijven bestaan; de coëxistentie-periode. Exchange 2003 en -2010 hebben prima voorzieningen om gedurende langere tijd naast elkaar te opereren, al is er wel wat kennis van zaken nodig om dit vlekkeloos te laten verlopen. De verschillen in architectuur maken het noodzakelijk om bepaalde stappen in de migratie nu juist in die volgorde te nemen en niet anders. Verkeerde keuzes kunnen tot drama's leiden, reden waarom soms ogenschijnlijk onlogische stappen en handelingen strikt moeten worden gevolgd. We sommen het even kort op:
  1. De eisen aan het Windows Server platform.
  2. De eisen aan de bestaande Exchange Servers en clients
  3. De eisen aan AD-schema en AD-configuratie
  4. De eisen aan de nieuw te gebruiken server hard- en software
  5. De eisen aan DNS, Certificaten, AntiVirus en Backup voorzieningen
  6. De eisen aan de volgorde waarin handelingen worden verricht en componenten worden geplaatst en vervangen
Voordat we ook maar één onderdeel van Exchange Server 2010 zullen gaan installeren moeten we de uitgangssituatie goed in kaart brengen en bijwerken tot en met het niveau waarop Exchange 2010 zal kunnen functioneren. Daarmee sluit je al minstens de helft aan teleurstellingen, frustraties en vele uren aan extra werk uit. We gaan beginnen ...

De eisen aan het Windows Server Platform
Met dit item bedoelen we niet de server waarop Exchange 2010 zelf zal gaan draaien, maar de machines waarop nu Active Directory aanwezig is. De Domain Controllers met respectievelijk de rol van Schema Master en/of Global Catalog moeten draaien op tenminste de onderstaande operating systemen en patchlevels:

  • Windows Server 2003 SP2
  • Windows Server 2008
  • Windows Server 2008 R2

Het domain- en forest functional level moeten tenminste in Windows 2003 functional level opereren en de DNS servers, voor zover niet Windows 2003, moeten Service records ondersteunen voor AD-servers.

De eisen aan bestaande Exchange servers en clients
De bestaande Exchange 2003 servers moeten zijn bijgewerkt tot en met Exchange Service Pack 2 of hoger. Exchange 2010 accepteert clients vanaf Outlook 2003 SP1, al zal met de latere versies meer profijt worden behaald met de extra mogelijkheden die de latere Exchange versies bieden.

De eisen aan AD-Schema en AD-configuratie
Iedere Exchange server versie vanaf 2000 maakt wijzigingen in Active Directory, aan zowel het schema als aan de configuratie. Dit is nodig om onderdak te bieden aan de nieuwe object-typen en bijbehorende attributen als bijvoorbeeld Mailbox, Mailbox-Store, e-mailadres, Hub Transport Server, policies etc. Iedere versie opnieuw maakt weer aanvullingen op dit schema, dus ook bij Exchange 2010 zal een aantal objecttypen moeten worden toegevoegd en/of gewijzigd. Dit gebeurt in de /prepareschema fase van de setup. Ook de in configuratie-partitie van AD worden een paar veranderingen aangebracht; zo wordt er een container aangemaakt onder de node "Services" in deze partitie met de naam "Exchange Services" (Dat is in geval van een reeds aanwezige Exchange 2003 ook al bij de setup gebeurd). Door de aanzienlijke verschillen in de hier gedemonstreerde versies 2003 en 2010 kan de upgrade van Active Directory beter worden uitgevoerd met gebruik van de switch /PrepareAD. Als de persoon die de installatie verricht zowel lid is van de groep Enterprise Admins als de groep Schema Admins dan wordt in deze ene opdracht al het noodzakelijke werk in AD uitgevoerd; Schema en Configuratie-partities bijgewerkt, LegacyExchangePermissions bijgewerkt (noodzakelijk voor het koppelen van de Recipient Update Service uit Exchange 2003 aan de bevoegdheden om hetzelfde werk te verzetten in Exchange 2010) en het aanmaken van de benodigde securitygroepen in AD.

De eisen aan de nieuw te gebruiken server hard- en software
Hierover kunnen we kort zijn: De serverhardware moet een van de 64-bits Windows operating systemen ondersteunen: Windows Server 2003, Windows Server 2003 R2, Windows Server 2008 of Windows Server 2008 R2. Verder wordt aanbevolen om tenminste 4 GB RAM aan boord te hebben voor welke serverrol dan ook. Voor Mailbox Servers kan deze hoeveelheid nog verder stijgen naar gelang het aantal databases en mailboxen, tot een maximum van 32 GB. We zien later hoe deze waarden beter kunnen worden berekend.

De eisen aan DNS, Certificaten, AntiVirus en Backup voorzieningen
Net als in eerdere versies, met terugwerkende kracht tot Exchange 2000, wordt aan DNS de eis gesteld dat het moet voorzien in service-records voor het localiseren van Domain Controllers en Global Catalog servers in het forest. Als de DNS servers Windows-eigen services zijn is er niets aan de hand, maar als gekozen wordt voor een open source versie als BIND, dan moet deze tenminste versie 8.2.2. zijn. Toegang tot de Exchange server voor clients, maar ook de communicatie tussen Exchange servers onderling is beveiligd met SSL/TLS security en dat betekent dat er certificaten in het spel komen. De Hub Transport Servers gebruiken voor dit doel zogenaamde self-signed certificaten en een dergelijk certificaat wordt ook automatisch aangemaakt voor de Client Access Server(s). Het is nu eenmaal zo dat wanneer je SSL aanbiedt voor bijvoorbeeld HTTP(S) er daarvoor al een certificaat anwezig moet zijn, vandaar dat Exchange van tevoren hiervoor zelf een certificaat uitschrijft. Dergelijke certificaten worden echter niet zomaar geaccepteerd door
clients als Outlook Web Access (in casu Internet Explorer) en het wordt nog wat lastiger bij gebruik van Outlook Anywhere, waarover later meer. In veel gevallen zul je daarom moeten overgaan tot de aanschaf van een commercieel certificaat via kanalen als Verisign, Thawte, BT of anderszins. Microsoft heeft ondersteuning voor dergeljike certificaten nu eenmaal ingebouwd in het besturingssysteem; niet voor de self-signed- of voor de certificaten die uit eigen Certificate Server afkomstig zijn. Voor alles is een oplossing en we zullen later zien dat je ook heel goed zelf een Certificate Authority (CA) kunt installeren, waarop je zelf je certificaten produceert. Clients in de buitenwereld zullen protesteren bij niet-officiële certificaten, behalve wanneer zij bekend zijn met de CA die het certificaat heeft uitgegeven.

Eisen aan Backup en AntiVirus voorzieningen

Bij Exchange 2007 op Windows Server 2008 was er even geen streaming backup voorhanden wanneer je daarvoor gebruik wilde maken van de Windows Backup tool. Deze tekortkoming is verholpen met Exchange 2007 SP2. Bij Exchange 2010 is op een breed terrein ingezet om de druk op het maken van dagelijkse backups te verlichten. Zo is daar de Database Availability Group (DAG), waarbij niet de servers, maar de databases redundant worden uitgevoerd en kunnen worden gerepliceerd naar verschillende database servers. Als je wilt kun je zelfs tot 16 database-replica's aanhouden. De DAG voorziet zelf in fail-over mechanismen, geleend van de Windows Cluster service. Je hoeft dus geen hardware cluster op te stellen, maar er worden wel software componenten van de cluster service gebruikt voor deze database availability. Er is ook de vrijheid om uit deze replica's een database te kiezen die bewust achterblijft bij de current databases, zodat, wanneer een virusuitbraak plaatsvindt, je een database-versie kunt activeren van vlak voor deze aanval. Ondanks deze aanzienlijke uitbreidingen op database-redundantie blijft de VSS-methode voor het maken van backups beschikbaar, ook wanneer je daarvoor slechts de Windows Server Backup wilt gebruiken.

AntiVirus voorzieningen

In Exchange 2010 is, net als in Exchange 2007, de Edge Server rol als stand-alone beschikbaar. Deze non-domain member is de aangewezen machine voor message-hygiëne. In het produkt zijn spamfilters aanwezig, die weliswaar uitstekend werken, maar een heuristische manier van filteren ontberen. Een heuristisch filter leert zelf over de organisatie en naarmate deze langer in gebruik is wordt de false-positive rate steeds kleiner. Een bekend type hiervan is het Bayesian filter, zoals o.a. in GFI Mail Essentials aanwezig is. Het filter spaart eerst een groot aantal uitgaande e-mailberichten op in een database, zodat daaruit geleerd kan worden welke trefwoorden typerend zijn voor de organisatie en welke geadresseerden regelmatig opduiken. Een dergelijk filter wordt in de loop van de tijd steeds slimmer bij het elimineren van spam. Met het afschermen van spam wordt ook meteen een groot deel van de virus bevattende e-mail berichten afgevangen. Helemaal uitsluiten kun je niets en daarvoor is ook separate virusscanning noodzakelijk. Met de komst van Exchange 2007 was daarvoor Forefront Security de aangewezen software van Microsoft zelf. GFI Mailsecurity 10.1 is op het moment nog in Beta en belooft goed samen te werken met Exchange 2010. Bescherming tegen virussen in e-mail zou de gehele Message Delivery Chain moeten omvatten voor de hoogste bescherming. Dat begint al met het scannen bij binnenkomst, gedurende het SMTP transport op bijvoorbeeld de Edge Transport Server. Door het verhinderen van attachments van een bepaald type (executables, zip's, scripts e.d.) is veel van de rommel buiten de deur te houden. Bij opslag in de databases behoort ook te worden gecontroleerd op de dan  naar 8-bits geconverteerde berichten en attachments en tenslotte op de client, waar het bericht geopend wordt. De laatste twee etappes worden in een later artikel belicht.

maandag 30 november 2009

Over MIME

Het Internet is een Amerikaanse uitvinding en zij gebruiken het Internet dan ook al bijna twintig jaar langer dan wij Europeanen en de rest van de wereld. Aanvankelijk was het bedoeld als een netwerk voor overheidsdiensten, zoals defensie en universiteiten. Medio jaren '80 werd het Internet overgedragen in handen van semi-onafhankelijke netwerk-operators zoals NSF en werd het netwerk verder ontsloten voor commercieel en particulier gebruik. Het duurde echter nog tot midden jaren '90 voordat we er in Nederland gebruik van konden maken.

Tekenset
Vanwege de eenvoud van het Amerikaanse alfabet is een codetabel met 128 tekens voldoende om hun gehele tekenset te kunnen omvatten, inclusief nog ruim dertig stuurcodes als DEL, BACKSPACE, ENTER, SPACE en ETX. Voor alleen letters en cijfers zijn 62 tekens voldoende en met een omvang van 128 posities kun je ook alle leestekens (!, ?, ", +, -, #, $, % etc.) gemakkelijk kwijt in de tabel. Deze Standard-ASCII tabel is opgebouwd uit 7-bits karakters en is jarenlang de basis geweest voor het onwikkelen van vele toepassingen en protocollen. Zo ook SMTP. Hieronder zie je een stukje van deze Standard-ASCII tabel:


Geheugenruimte was aanvankelijk kostbaar, dus elke besparing, al is het maar 1 bit per karakter, is meegenomen. Niet verwonderlijk dus, dat veel (programmeer)werk op deze 7-bits codes is gebaseerd.

Extended-ASCII

Het Internet en de privé netwerken zoals de LAN's in de kantooromgevingen waren gedurende lange tijd volkomen gescheiden zaken, met ieder hun eigen standaards. Deze standaards waren vaak niet uitwisselbaar, hetgeen tot veel problemen kon leiden. Zo zijn er ook verschillende, zogenaamde "proprietary" e-mail standaards geweest, bijvoorbeeld voor Lotus cc:mail en PROFS OfficeVision. E-mail uitwisseling werd daarmee vaak beperkt tot de eigen bedrijfsomgeving. Toepassingen in LAN-omgevingen zijn in oorsprong gebaseerd op 8-bits codepagina's, zoals Extended-ASCII. Met één bit meer in de karaktertabel werd de omvang twee maal zo groot, van 128 tot 256 tekens. Ruimte genoeg om ook de tekens in de meeste andere westerse talen te kunnen bevatten. Voor onze eigen taal zijn dat bijvoorbeeld de tekens é, ë, ï, ƒ etc. Je hoeft niet lang na te denken wat dat betekent voor talen als Frans, Zweeds en Duits. Documenten geproduceerd met MS-Office worden dan ook in 8-bits formaat opgemaakt, net als vele andere bestanden in bijvoorbeeld .bmp, .jpg, .mp3 formaat.

SMTP is van oorsprong gebaseerd op 7-bits transport en dat is daarna nooit meer aangepast. Je zou natuurlijk een 8-bits SMTP service kunnen ontwikkelen en die zou het nog doen ook. Het probleem is dat het hele Internet al is vergeven van de 7-bits servers en die begrijpen niets van 8-bits communicatie. Om van 8-bits data gewoon het achtste bit af te knippen en er zo toch de SMTP tunnel mee in te kunnen biedt weinig hoop: je data zou hopeloos verminkt raken, behalve wanneer het achtste bit alleen een pariteitsbit voorstelt. (Pariteit wordt bij asynchrone transmissie nogal eens toegepast). Om toch bestandsonderdelen, geproduceerd in 8-bits of meer (16-bits UNICODE) te kunnen meezenden met het 7-bits transport van SMTP is er een tussenoplossing bedacht: MIME (Multipurpose Internet Mail Extensions).

Is het dan zo belangrijk om 8-bits data anders te behandelen dan 7-bits data? De SMTP service probeert steeds karakters individueel te interpreteren; kijk maar naar de betekenis van de (7-bits) punt aan het einde van een transmissie. Als de karakters steeds een bit langer zijn loop je al snel uit de pas en gaat de betekenis van een karakter verloren. Er moet dus een methode worden bedacht waarmee de betekenis van 8-bits gegevens behouden kan blijven.

MIME bekijkt de eigenschappen van het oorpronkelijke attachment en maakt een keuze voor de manier waarop deze wordt geconverteerd naar 7-, of zelfs 6-bits representatie. MIME doet dit met behoud van alle informatie van het oorspronkelijke bestand in zogenaamde X-MIME-headers in het e-mailbericht. MIME is een uitbreidbare standaard, zodat ook steeds de laatste bestandsformaten kunnen worden ingepast. Een voorbeeld is het gebruik van S/MIME, waarmee digitale handtekeningen, encrypted mail en gebruikerscertificaten kunnen worden geconverteerd en meegezonden.

Conversie

Voor het omzetten van 8-bits naar 7- of 6-bits data gebruikt MIME een drietal verschillende methoden. Afhankelijk van de samenstelling van het brondocument en de instellingen op de zendende server zijn dat:
  • 7-bits encoding
  • Quoted-Printable encoding
  • Base-64 encoding
Bij 7-bits encoding bestaat het brondocument al geheel uit 7-bits data, bijvoorbeeld omdat het is aangemaakt met een in 7-bits coderende plaintext-editor. Er hoeft aan het attachment niets te worden bijgeschaafd, behalve dat het als een apart compartiment van de message-body moet worden onderscheiden. Het attachment wordt tussen separators geplaatst en bovenin komen kenmerken als de oorspronkelijke bestandsnaam, het MIME hoofdtype en subtype, bijvoorbeeld "text/plain" en het encodingmechanisme: 7-bit. Bij de ontvangende server hoeft er niets te worden aangepast en alleen de client kan nu het attachment als een losstaand bestand van de message scheiden en apart opslaan, indien gewenst.

Bij Quoted-printable encoding bevinden zich in het brondocument naast 7-bit karakters ook 8-bits tekens. Het merendeel van de -meestal tekst- documenten bestaat uit tekens die zowel in de 7- als de 8-bits ASCII tabel voorkomen; de gewone letters en leestekens komen in beide tabellen voor en kunnen zonder moeite worden uitgedrukt in hun 7-bits equivalent. De incidentele 8-bits tekens ondergaan een speciale behandeling:
Het 8-bits teken wordt eerst uitgedrukt in Hex-notatie. Elk teken uit de extended ASCII tabel heeft een positie tussen 00000000 en 11111111 (0 - 255). Voor een teken, bijvoorbeeld de ë (e-trema), dat zich voor de Nederlandse codepagina bevindt op positie 137 is dat 10001001. Hexadecimaal wordt dat 89 (1000 1001). De cijfers 8 en 9 zijn weer gewoon terug te vinden in de 7-bits ASCII tabel, maar om te voorkomen dat er bij de omzetting aan de ontvangende kant het getal '89' in de tekst komt te staan wordt er een quote in de vorm van een '=' voor het getal geplaatst: '=89'. De markering wordt eruit gepikt en 89 wordt weer vervangen door 'ë'. Mocht er in de oorspronkelijke tekst een reeks tekens voorkomen die al vooraf wordt gegaan door een "=", bijvoorbeeld bij een sommetje als "5x8=40", dan wordt er een extra "=" voor de uitkomst geplaatst, zodat deze niet per abuis wordt aangezien als quoted-printable codering. Dat zou er dan uitzien als "5x8==40".
Veel moderne e-mail servers maken tegenwoordig de message-body op in zowel 7-bits plain tekst als in HTML. Ook HTML is deels opgebouwd uit 8-bits codes, waardoor een bericht er als volgt kan uitzien: (Geopend in een POP3 dialoog)

Base-64 encoding tenslotte pakt de zaak heel anders aan: hier wordt het gehele 8-bits attachment herschikt naar 6-bits representatie. (... is kleiner dan 7-bits, dus past in de SMTP pijplijn ...). Deze conversie wordt toegepast op bestanden die geheel uit 8-bits data zijn opgebouwd, zoals afbeeldingen (.bmp, .jpg), binaire bestanden (.zip, .exe etc.) of A/V bestanden. Het is een zaak van efficiency, want de conversie levert uiteindelijk minder extra bits op dan bij Quoted printable, waar voor een 8-bits teken 3x7 = 21 bits in de plaats komen. Base-64 gebruikt een meta-tabel voor het coderen van 6-bits karakters. In het volgende voorbeeld gaan we eerst een plaatje, opgebouwd uit vier pixels, van 8 naar 6 bits omzetten. Daarna laten we een wat groter voorbeeld zien. Hier is eerst het 'bitmapje':

Geen spannend plaatje, maar wat kun je anders met slechts vier pixels. Ieder beeldpunt of pixel (PIcture ELement) is uitgedrukt in 24-bits kleur, 8 bits voor respectievelijk de Rode, Groene en Blauwe kleurcomponent. Drie groepjes van 8 bits = 24 bits. Je kunt 24 ook door 4 delen en dan krijg je vier groepjes van 6 bits, als volgt:

Alleen de rangschikking is nu veranderd, maar er is geen informatie verloren gegaan. De groepjes van 6-bits worden nu vertaald langs een gedeelte van de Standard-ASCII tabel. Met 6 bits kun je maar 64 verschillende karakters uitbeelden dus we hebben maar een gedeelte van de tabel nodig:

26 Hoofdletters
26 Kleine letters
10 Cijfers
-----------------
62 tekens

We komen er nog twee tekort om aan de 64 te komen; daarvoor worden de "+" en de "/" toegevoegd. Een stukje van deze base-64 tabel ziet er als volgt uit:

Zet de tekens op de juiste plaats en nu kunnen we begrijpen waarom zo'n klein plaatje er gecodeerd als volgt zal uitzien:


Deze string bestaat uit 16 tekens van 6-bits, bij elkaar 96 bits. Evenveel als 12 tekens van 8 bits; we zijn geen informatie kwijtgeraakt! Een willekeurig aantal 8-bits tekens zal lang niet altijd een afgeronde reeks 6-bits groepjes opleveren. Daarvoor worden aan het einde van de brondata extra nullen tussengevoegd om op een afgerond veelvoud van 6 uit te komen. (Bit-stuffing). In werkelijkheid zijn plaatjes natuurlijk veel groter, wat een veel langere brij van schijnbaar betekenisloze code oplevert. Naast afbeeldingen worden ook andere bestandstypen volgens dit schema omgezet voor transport. Bij gebruik van S/MIME gaan zelfs digitale handtekeningen en certificaten op deze manier mee in de verpakking.

Separators

Verzending van e-mail vindt serieel plaats; de bits worden achter elkaar over het medium verzonden. Eerst de RFC 821 envelop, dan de RFC 822 memo-header, body en eventuele attachments. Binnen een paar seconden is een e-mailbericht met tekst en foto's in cyberspace onderweg. Als een bericht uit zoveel onderdelen bestaat (meer dan één attachment) wordt in de header aangegeven dat het MIME type "multipart/mixed" is. De verschillende onderdelen van het e-mailbericht worden van elkaar gescheiden door separators; een opvallende string met een identifier die bovenin het bericht wordt opgegeven. Bij ontvangst geven deze separators het einde van een attachment en het begin van het volgende attachment aan. Dit is nodig omdat verschillende attachments niet alleen afkomstig zijn van afzonderlijke bestanden (met naam en omschrijving) maar ook omdat verschillende coderingen door elkaar gebruikt worden en pér attachment een andere behandeling kunnen vereisen. Zo'n separator ziet er als volgt uit:



De separator bestaat in bovenstaand voorbeeld uit de tekens: "_____ax2s800001rfs@mydomain.com" en wordt steeds als een soort boekenlegger tussen de compartimenten van het e-mailbericht geschoven. Een separator wordt voor ieder bericht random gegenereerd (soms meerdere verschillende per bericht) en heeft per type e-mail server een ander algemeen uiterlijk. De uitbreiding "@mydomain.com" volgt meestal wel aan het einde van de separator, met daarin natuurlijk de naam van het eigen SMTP domein waartoe de server behoort. Een gebruiker ziet deze details bij het lezen van e-mail niet, omdat de server dit als stuurcodes gebruikt. Met wat moeite (Tools/options) in Outlook kun je een deel van deze informatie terugvinden. Een heel bericht op deze manier bekijken kan alleen met gebruik van Telnet, als je een POP3 sessie opent naar de server, inlogt en een bericht met RETR n ophaalt naar het scherm. Meer hierover in een artikel over POP3 ...

De MIME-documentatie bestaat uit de volgende RFC's:
RFC 2045 , RFC 2046RFC 2047RFC 4288 , RFC 4289RFC 2049
(Situatie per 30-11-2009)

zaterdag 28 november 2009

Over SMTP (Simple Mail Transfer Protocol)


SMTP is het protocol waarmee e-mail wordt verzonden over het Internet. Het is de taal die wordt gesproken tussen de e-mail afzender (de client) en de Mail-server, die, zoals we zullen zien, op zijn beurt ook de rol van client vervult. De eerste server waar de client al de te verzenden mail aflevert om deze vervolgens te laten routeren naar de uiteindelijke bestemming is meestal die van de eigen Internet-provider of is een server die op de eigen zaak of soms ook thuis staat. Deze server is gewoonlijk in het e-mail programma vermeld als een vast gegeven in het veld "Outgoing mail (SMTP) server:" (Outlook Express).

Send-only

SMTP is een send-only protocol, dat wil zeggen dat het niet kan worden gebruikt om je e-mail van de server op te halen om het te lezen. De zendende server hoeft niet dezelfde te zijn als die waarop je mailbox zich bevindt. Voor het openen van je mailbox en het lezen van mail gebruik je een ander protocol, bijvoorbeeld POP3, of soms IMAP4.

Wanneer je Outlook (onderdeel van Microsoft Office®) gebruikt in een kantooromgeving dan zul je hiervoor vaak helemaal geen Internet protocol gebruiken maar het eigen MAPI interface van Microsoft. Outlook gebruikt deze methode voor communicatie met een Exchange Server in een LAN omgeving. De Exchange Server zal in dit geval zelf het SMTP verkeer met het Internet onderhouden.

Client/Server


In het bovenstaande stukje tekst worden de deelnemers in een SMTP-conversatie beschreven als client en server. Hiermee wordt niet alleen de dialoog tussen een Outlook Express gebruiker en een SMTP server bedoeld, maar ook de dialoog tussen twee SMTP-servers, in het geval van mail-forwarding. De SMTP-server die een sessie begint speelt ook de rol van client en de accepterende server die van "server". Het hangt dus af van de richting waarin de sessie verloopt, of beter; door wie de sessie wordt gestart. De client begint een conversatie altijd netjes met een groet; "Hallo, ik ben mail.acme.com". Het "helo" in de figuur links is geen schrijffout; commando's in SMTP worden zo kort mogelijk uitgedrukt, meestal in vier tekens, dus helo in plaats van hello.

(Korte) Historie


SMTP is niet de eerste versie van dit mail-protocol. Het wordt beschreven in RFC 821 (J.Postel, aug 1982) en is ontwikkeld uit eerdere varianten zoals MTP, Mail Transfer Protocol, RFC 772 (S. Sluizer & J. Postel, Sept. 1980). Na een aantal revisies is echter de essentie van het protocol sinds 1982 niet meer veranderd. De eenvoud van het protocol heeft hieraan zeker bijgedragen. Gedurende de jaren '80 en zelfs tot halverwege de jaren '90 is de tegenhanger van SMTP, de ISO X.400 aanbeveling, de enige serieuze concurrent geweest. Beiden zijn zogenaamde open standaards; niet gerelateerd aan een commerciële organisatie.

De achtergrond van beide protocollen is echter geheel verschillend: SMTP is afkomstig van de IETF (Internet Engineering Task Force), onderdeel van de ISOC (Internet Society). Hun werkwijze bij de totstandkoming van protocollen is het best te omschrijven als een bottom-up benadering. Iedereen die meedenkt en een oplossing weet aan te dragen voor een specifiek probleem is welkom! Op deze manier kan snel in de praktijk worden bijgestuurd en naar een gestroomlijnd product worden toegewerkt.

X.400 daarentegen is ontwikkeld vanuit de ITU-C, vroeger CCITT en onderdeel van de ISO. Protocollen van de ISO worden meestal top-down ontwikkeld: deskundigen buigen zich over een te ontwerpen standaard en na meerdere vergader- en discussie-ronden rolt daar een aanbeveling uit.

De belangrijkste oorzaak voor de populariteit van SMTP is de eenvoud van het protocol. Met aanvankelijk een tiental commando's werd een wereldwijde e-mail infrastructuur gebouwd. Dezelfde eenvoud blijkt wanneer we e-mail-adressen van beide protocollen naast elkaar leggen:
  • SMTP: johnsmith@somedomain.com

  • X.400: /C=US/A=MCI/P=SomeDomain/O=North America/OU=Sales/G=John/S=Smith
Kortom, je hoeft maar naar een voorbeeld van een e-mail adres te kijken om te zien waarom SMTP het uiteindelijk heeft gewonnen van X.400. Op een visitekaartje kun je de laatste in veel gevallen niet eens kwijt ..

Wat zit er in het SMTP protocol


In de kern van SMTP draait het allemaal om twee RFC-documenten: RFC 821 en RFC 822. Later zijn er nogal wat uitbreidingen aan het protocol toegevoegd, waardoor we nu ook spreken van ESMTP, Extensions for SMTP; het betreft hier veelal losse aanpassingen en uitbreidingen om meer tekstformaten, typen attachments, een efficiënter afhandeling en een betere beveiliging te ondersteunen.

RFC 821 beschrijft de "electronische envelop" van SMTP. Net als bij de papieren posterijen is ook voor SMTP beschreven hoe je iemand adresseert, waar je de afzendergegevens plaatst en of je -aangetekend- met bericht van ontvangst wilt verzenden. De envelop bevat slechts header-informatie: "van wie ... aan wie". Met deze gegevens kunnen de SMTP-servers aan het werk. Alle SMTP-servers die het bericht vervolgens afhandelen plaatsen hun eigen gegevens in deze message-header. Dit lijkt wel wat op het stempelen van allerlei nummers en barcodes op een gewone envelop.In geval van uitval of een andere storing onderweg kan de afzender aan de hand van deze Return-path informatie worden ingelicht. Wanneer het bericht veel servers passeert kan de header hierdoor aanzienlijk groeien.
Een SMTP-conversatie volgens RFC 821 tussen client (C) en server (S) kan er als volgt uitzien:



De getallen aan het begin van van iedere server-response zijn statuscodes. Deze vertellen de client of de communicatie volgens plan verloopt. Statuscodes die beginnen met een 2 geven een bevestiging weer, met een 3 zijn opdrachten van de server, wachtend op response en 4 en 5 geven fouten in de communicatie aan. De gegevens in de RFC 821 header (envelop) zie je niet terug in het geopende bericht, maar kunnen wel worden gevolgd in een Telnet dialoog of worden opgepikt met een netwerk-monitor.

RFC 822 beschrijft de samenstelling van het bericht. Een e-mailbericht bevat vaak meerdere onderdelen of body-parts. Zo is er bovenin de zogenaamde informele- of memo header. Hier staan gegevens als:


Deze gegevens zie je ook terug in het geopende bericht. Direct na deze header volgt een lege regel om het onderscheid tussen header en message-body aan te geven. De message-body bevat de eigenlijke boodschap, de inhoud van het bericht. Wanneer geen attachments zijn meegezonden en het bericht zelf is uitsluitend opgebouwd uit ongeformatteerde tekst (plaintext) dan volgt na de body een afsluitende punt op een enkele regel om het einde van het bericht te markeren. Dit is voor de SMTP server het signaal om het bericht te accepteren, in de wachtrij te plaatsen en met de eigenlijke verzending te beginnen.

Extra header-informatie

Door de vele aanpassingen en uitbreidingen op het SMTP protocol zijn er ook tal van aanvullende regels mogelijk in de RFC 822-header. Deze zijn niet direct terug te zien in het clientprogramma; sommige zijn bedoeld om opgemaakte tekst en/of attachments te beschrijven (MIME-headers), andere zijn bedoeld voor specifieke controles tijdens het transport. Zo bestaan er bijvoorbeeld verschillende controles op spam-waarschijnlijkheid van een bericht (zie hieronder bij de pijl):

X-Spam Score is een waarde waarmee de waarschijnlijkheid wordt uitgedrukt dat we hier te maken hebben met een spam-bericht. Dichter bij de 100 is de Spam-waarschijnlijkheid groter. Spamfilters op een SMTP-server of gateway/firewall kennen deze waarde toe aan een bericht na analyse van een aantal kenmerken van het bericht; afzender, samenstelling, trefwoorden etc. Outlook kan alleen een "Spam Confidence Level" (SCL) interpreteren dat in een getal tussen 1 en 10 wordt uitgedrukt.  Afhankelijk van de instellingen aan de client-zijde kan het bericht vervolgens worden gerouteerd naar de Inbox, een speciale Spam-map of naar de prullenbak.

ESMTP

SMTP wordt voortdurend uitgebreid met nieuwe voorzieningen. Nieuwere versies van een SMTP-server zullen meer van deze voorzieningen aan boord hebben dan oudere. De vele uitbreidingen hebben latere versies van SMTP de naam ESMTP bezorgd (Extensions for SMTP). Uiteenlopende ondersteuning voor deze ESMTP uitbreidingen bij verschillende servers heeft geleid tot "dialecten" van SMTP. Een server die alleen standaard SMTP verstaat begrijpt geen ESMTP opdrachten. Een ESMTP server kan wel SMTP verstaan. Als een client een ESMTP sessie met een server wil starten dan wordt het startcommando "ehlo" gegeven in plaats van "helo". Om aan een client duidelijk te maken of, en zoja welke ESMTP opdrachten de server allemaal begrijpt wordt in antwoord op het "ehlo" van de client een lijst met op de server beschikbare ESMTP-extensies teruggestuurd.



Als op de server alleen de beperkte, oudere versie van SMTP draait zal op een "ehlo" aanmelding van de client een foutmelding volgen:

De client zal in dergelijke gevallen terugvallen op gewone SMTP-communicatie en de sessie herstarten met een "helo".

Smart-host, naamresolutie en routing

De SMTP server kan zijn ingericht als "smart-host" of als "relay-host". Een smart-host moet zelf naamresolutie verrichten en dan de server van de geadresseerde aanspreken voor aflevering van het bericht. Naamresolutie is het proces waarmee een machine zal trachten het IP-adres voor de bestemming van een e-mailbericht te achterhalen. Dit moet de smart-host voor ieder afzonderlijk bestemmingsdomein  opnieuw doen. Een SMTP-adres bestaat uit drie onderdelen



  1. De Alias,
  2. Het @ ("at") teken of apenstaartje,
  3. De DNS-domeinnaam van de geadresseerde
Zodra een smart-host een bericht ter verzending aangeboden krijgt wordt alleen onderdeel 3 van het adresveld gebruikt (de domeinnaam van de geadresseerde). Alles vóór het "@"-teken, de Alias,  is voor rekening van de ontvangende SMTP-server. De zendende SMTP server raadpleegt een DNS server om uit te vinden welke mailserver berichten kan ontvangen voor het gegeven domein. Hiervoor heeft de SMTP server twee DNS-records nodig:
  1. Een MX record, waarin de naam van de SMTP server voor het ontvangende domein is vermeld (MX=Mail eXchanger).
  2. Een A record, waarin het IP-adres van deze -ontvangende- SMTP server is vermeld.
Met nslookup.exe is bij elke DNS server waarop zones worden gehost een MX record op te vragen (indien aanwezig). Dit gaat niet op voor non-recursieve DNS servers zoals de root-DNS servers. Hier een voorbeeld:


Zodra het IP-adres van de SMTP server op de eindbestemming bekend is zal onze SMTP server een connectie starten naar dat adres, gericht aan TCP-poort 25, waarachter zich de SMTP service bevindt. De rest van de communicatie ziet eruit als hierboven. (zie het stukje over RFC821)

Redundantie en Batch-SMTP

In veel gevallen worden voor een domein meerdere MX records aangemaakt in DNS. Mocht één van de mailservers voor het domein niet beschikbaar zijn dan kan worden uitgeweken naar een van de alternatieve servers. Zo kan altijd e-mail worden ontvangen. Voorkeur voor bepaalde servers wordt uitgedrukt in een zogenaamde Preference Value. Dit is een getal tussen 1 en 100, die in het MX record wordt vermeld. De standaardwaarde bij het opgeven van MX records in Microsoft DNS servers bedraagt 10. Hoe lager de waarde, hoe groter de voorkeur voor de server in dit record. De DNS beheerder geeft zelf de MX-Preference value pér server aan. Als de server met de laagste preference waarde een keer niet beschikbaar is omdat hij is omgevallen of in onderhoud is, dan zou het alternatieve MX record bijvoorbeeld naar de mailserver  van de provider kunnen verwijzen. Dit moet dan wel met de Internet Service Provider (ISP) zijn afgestemd. Alle mail voor je domein komt dan in een opvangbak bij de ISP terecht zodat later, als je eigen SMTP server weer beschikbaar is, de mail alsnog op de juiste plek kan worden afgeleverd. Dit laatste kan op één van de twee volgende manieren worden gerealiseerd:
  1. Batch-SMTP
  2. SMTP-Fallback
Bij batch-SMTP is het de bedoeling dat je eigen server een SMTP-sessie start naar die van je ISP en vervolgens de mail in de wachtrij ophaalt. Maar wacht eens; we hadden eerder geleerd dat SMTP eenrichtingsverkeer afdwingt door de specifieke client/server relatie. De beginnende partij is altijd de client en de antwoordende partij de server. Hoe kan dan de mail van de server aan de client worden overgedragen, terwijl de "client" -in dit geval onze eigen SMTP server- de sessie is begonnen? In de SMTP RFC's is daarvoor het commando TURN bedacht. TURN keert de richting van de verzending of, zo je wilt, de rollen van client en server om: Heel even wordt de ISP-server nu client en je eigen machine wordt nu de server. Alle e-mail voor je domein wordt nu in een keer naar je server doorgezonden. De opdracht ziet er zo uit:

TURN mydomain.com

Daarna kan worden vervolgd met een gewone sessie of kun je de sessie beëindigen. In de eerste jaren was het Internet nog een besloten omgeving voor een beperkt type gebruikers: Universiteiten en Overheid (Defensie). Later, toen iedereen een lijntje naar het web kreeg, begonnen ook gebruikers met minder serieuze bedoelingen het Internet op te gaan en bleek spoedig dat iedereen een TURN opdracht kon uitvoeren voor welk SMTP-domein dan ook. Met een beetje inspanning kon je zo e-mail van meerdere servers plukken. Om daar een stokje voor te steken is SMTP uitgebreid met twee extra opdrachten: ETRN en ATRN. Met ETRN (Extended TuRN) wordt eerst je eigen IP-adres bekeken en beoordeeld of je wel de juiste gemachtigde bent. Met ATRN (Authenticated TuRN) moet de aanvrager zich eerst authenticeren; inloggen dus.

SMTP-Fallback is een eenvoudiger mechanisme; hier probeert de SMTP server van de ISP gewoon op gezette tijden (eens per kwartier/uur etc.) of je eigen server alweer mee doet en zodra dat het geval is wordt het zaakje gewoon doorgegeven. Veel minder rompslomp, al zullen de meeste ISP's deze service alleen voor bedrijven aanbieden.

Als de SMTP server geen smart-host, maar een relay-host of forwarder is wordt alle te verzenden e-mail altijd naar een specifieke SMTP-server (smart-host) doorgestuurd. Een relay-host of forwarder doet dus niets met naamresolutie. Anders gezegd; een relay-host heeft altijd een smart-host nodig voor aflevering op de eindbestemming, maar hoeft zelf alleen maar e-mail naar de smart-host te forwarden. We kunnen een deel van deze dialoog met gebruik van Telnet naspelen om te controleren of onze mailserver naar behoren reageert. Hieronder is zo'n dialoog met Telnet in scene gezet: we spelen de rol van een SMTP-client ...



Meer in een volgend artikel ...

Tijd voor een nieuw blog ...

Een blog is dynamischer dan een website, voor mij een reden waarom ik content van mijn website http://www.blip.nl/ stukje bij beetje ga verhuizen naar dit blog. Nog een reden om op een blog-vorm over te gaan is dat ik er overal aan kan werken en er niet noodzakelijk thuis voor achter de PC hoef te zitten. Zo ontstaat er ook meer ad-hoc content, die ik desgewenst later weer kan uitbreiden. En zo kan ik nog wel even doorgaan.

Waar komt de naam vandaan?
Omdat ik in mijn dagelijkse leven trainingen/cursussen geef aan IT-ers zocht ik een naam die met mijn onderwerpen te linken was. Zo is "Exchange - Office Communications Server" verdicht tot ExchOcs; het moest wel kort blijven natuurlijk.

Wat ga ik doen?
Artikelen plaatsen die betrekking hebben op onderwerpen uit mijn trainingen, demo's en downloads van bijvoorbeeld presentaties en/of animaties. Topics plaatsen die in het reguliere lesmateriaal in veel gevallen niet goed uit de verf komen of soms helemaal niet behandeld worden, terwijl ik van mening ben dat die een onderwerp van een training beter onderbouwen. Tips en Trucs. Wellicht kan het blog uitgroeien tot een forum waarin onderwerpen -over trainingen dan- kunnen worden bediscussieerd of aangevuld. Ik begin gewoon en we zien wel wat er uit komt. Suggesties zijn welkom!

De aftrap: SMTP
Een van de onderwerpen die ik eerder heb geplaatst op mijn website biedt een kijkje op de werking van dit eenvoudige, doch antieke protocol. Om meteen maar wat content te hebben volgt in het volgende artikel de tekst met bijbehorende afbeeldingen ...