DomainKeys, DKIM
Vérification en réception
La vérification en réception est l'opération la plus facile, pour peu que l'on dispose des outils appropriés. Il n'y a en effet rien à faire au-delà de l'installation des outils adéquats et d'une configuration somme toute très réduite. Le MX de réception (tous les MX associés à un domaine, si vous en avez plusieurs) doit simplement contrôler la signature DK/DKIM des messages reçus, lorsque cette signature est présente. Il doit aussi (pour suivre la RFC 4870, tant qu'aucune autre RFC ne redéfinit le protocole de diffusion de la politique de signature des messages d'un domaine) vérifier si un message non signé est normal par rapport à la politique de signature du domaine émetteur.
Par exemple, pour activer ce contrôle avec SpamAssassin, il suffit de modifier l'un des fichiers de configuration (ici /etc/spamassassin/v312.pre) :
$ cat /etc/spamassassin/v312.pre
# DKIM - perform DKIM verification
#
# Mail::DKIM module required for use, see INSTALL for more information.
#
# Note that if C version 0.20 or later is installed, this
# renders the DomainKeys plugin redundant.
#
loadplugin Mail::SpamAssassin::Plugin::DKIM
dkim_timeout 5
Ce greffon utilise le module perl Mail::DKIM, qui doit être installé avant d'activer la configuration précédente. Si Mail::DKIM (ou l'une de ses dépendances) n'est pas installé,spamassassin démarrera mais, de manière très logique, les contrôles DK/DKIM ne seront pas exécutés :
spamd[24124]: Can't locate Mail/DKIM.pm in @INC (@INC contains ...) at /.../SpamAssassin/Plugin/DKIM.pm line 77.
spamd[24124]: plugin: failed to parse plugin (from @INC):
Can't locate Mail/DKIM.pm in @INC (@INC contains ...) at /.../SpamAssassin/Plugin/DKIM.pm line 77.
Pour vérifier si les contrôles sont correctement exécutés, il suffit d'envoyer un message à partir d'un système ayant mis en place la signature DK/DKIM des messages sortants (Yahoo ou GMail par exemple). A la réception de ce message, on observe (dans le journal d'activité de la messagerie) que la signature a été contrôlée :
amavis[30453]: (30453-01) SPAM-TAG -> No, score=-1.49 tagged_above=-2 required=5
tests=[AWL=-1.110, BAYES_00=-2.599, DKIM_SIGNED=0.001, DKIM_VERIFIED=-0.001, TVD_SPACE_RATIO=2.219]
ou dans les en-têtes du message en question :
X-Spam-Status: No, score=1.093 tagged_above=-2 required=5
tests=[AWL=-0.185, BAYES_20=-0.74, DKIM_SIGNED=0.001,
DKIM_VERIFIED=-0.001, HTML_MESSAGE=0.001,
MIME_HEADER_CTYPE_ONLY=0.56, MIME_HTML_ONLY=1.457]
Dans les deux exemples ci-dessus, SpamAssassin (appelé via Amavis) a bien détecté une signature DKIM (marqueur DKIM_SIGNED) et l'a vérifiée (marqueur DKIM_VERIFIED). Vous noterez que les modifications du score (dans la configuration par défaut de SpamAssassin) ne sont pas très importantes (un centième de point dans un sens ou dans l'autre).