Problemen en oplossingen
In het begin had DKIM er mee te kampen dat sommige ontvangstsystemen de in DNS achtergelaten sleutels niet konden krijgen. De oorzaak daarvan is dat sommige firewalls en gateways niet goed kunnen omgaan met bepaalde DNS-pakketten.
Het oorspronkelijke DNS-protocol gebruikt normaal gesproken de snelle levering via UDP-pakketten. Dat werkt zonder problemen, als deze tenminste korter zijn dan 512 bytes. Met de DKIM-sleutels wordt een DNS-pakket echter langer dan 512 bytes. Een DNS-server kan dan overschakelen op twee verschillende manieren: het leveren van de DNS-gegevens via TCP-pakketten of alsnog via UDP, maar dan met de uitbreiding EDNS0. Beide manieren kunnen mislukken. TCP kan bijvoorbeeld aan de kant van de ontvanger geblokkeerd worden door zijn firewall. TCP wordt echter voor meer ingezet, zodat je dat sowieso wel zou willen vermijden.
Een betere manier, omdat het sneller is, is met de uitbreiding EDNS0 (RFC 6891). Daarmee mogen via UDP verstuurde DNS-reply’s tot 4096 bytes lang zijn. De server ziet in de header dat EDNS0 gebruikt wordt. Maar sommige firewalls kunnen niet overweg met EDNS0, hoewel die uitbreiding inmiddels al ettelijke jaren oud is. Mede daardoor hebben de makers van belangrijke DNS-resolvers zich tegen verouderde servers en netwerkapparaten gekeerd (DNS flag day).
Ontvangende mailservers die achter dergelijke verouderde netwerkonderdelen zitten, krijgen het opgevraagde sleutelmateriaal dus niet. Dan mislukt het valideren van legitieme berichten alleen maar doordat het ontvangende systeem afgesneden is van het benodigde sleutelmateriaal.
Welke uitwerking dat heeft op het verdere transport van een bericht hing in de begindagen van DKIM af van hoe de systeembeheerder zijn mailserver had geconfigureerd. Inmiddels komen dergelijke fouten nog amper voor en houden systeembeheerders wel rekening met DNS-pakketten met een grotere lengte.
Dan zijn er nog de situaties waarbij een DKIM-ondertekening ongeldig werd omdat een bericht onderweg legitiem veranderd werd. Een ontvangende mailserver kan dat verschil echter niet herkennen, maar alleen vaststellen dat de checksums niet overeenkomen.
Dat gebeurt bijvoorbeeld bij berichten die met DKIM-ondertekening naar een mailinglijst worden gestuurd. De mailinglijstsoftware voegt normaal gesproken de naam van de mailingslijst aan het begin van de onderwerpregel toe en andere informatie die met de mailinglijst te maken heeft aan het einde van het bericht. Daardoor weten de abonnees waar de mail vandaan komt.
Maar beide veranderen het bericht, en dan kloppen de checksums van de ondertekeningen dus niet meer. In principe zou de mailinglijstsoftware een eigen ondertekening kunnen toevoegen, maar dan horen het domein en de ondertekening niet meer bij elkaar. Alleen al daarom voorziet de DKIM-specificatie daar niet in. In plaats daarvan zou je voor subdomeinen een afzonderlijke ondertekening voor dienstverleners kunnen vrijgeven.
Desalniettemin kun je mailinglijsten zodanig gebruiken dat de DKIM-ondertekeningen geldig blijven. De methodes daarvoor worden echter ook enkele jaren na de invoering nog amper gebruikt, want mailinglijstabonnees zijn erg gehecht aan hun gewoonten. Veel mensen willen bijvoorbeeld per se de naam van de mailinglijst in de onderwerpregel van het bericht hebben staan. Dat vergemakkelijkt het zoeken en filteren en sorteren naar verschillende mappen. Door het veranderen van de onderwerpregel klopt de DKIM-checksum in de header van de mail echter niet meer.
Onder de naam Authenticated Received Chain (ARC) bestaat een techniek die kan filteren zonder de onderwerpregel te hoeven veranderen. Mailinglijstbijdragen zijn namelijk ook aan de hand van de List-ID-header te herkennen en filteren. ARC bevindt zich na twee jaar ontwikkeling echter nog steeds in de kinderschoenen.
Domain-based Message Authentication
Met DMARC stelt een afzenderdomein onder meer vast hoe een ontvanger moet reageren als hij mail krijgt die niet voldoet aan SPF- of DKIM-controles.
