Signature DKIM et amavis

dkim

Comme vous avez peut être constaté mes derniers billets parlent de DKIM. J’ai essayé différentes solution sur le marché dkim , dkimproxy. L’inconvénient majeur que j’ai pu constater c’est qu’avec ce genre de configuration mes mails ne passaient plus par amavis mais que par ces outils (sauf erreur de ma part.)
La j’en ai un peu marre je me dis et pourquoi doit-on ajouter une couche supplémentaire à notre serveur de mail qui est déjà assez chargé. Après quelques recherches on peut voir que amavisd-new propose dans c’est release la signature DKIM depuis la version 2.6 . Biensur la je suis chaud et tout exité.

  1. /*
  2. dpkg -l |grep amavis
  3. ii amavis-stats 0.1.12-10 Virus statistics RRDtool frontend for Amavis
  4. ii amavisd-new 1:2.6.1.dfsg-1 Interface between MTA and virus scanner/cont
  5. */

Jackpot je suis en 2.6.1 🙂 on va pouvoir commencer à bosser. Passons maintenant à la configuration.

  1. /*
  2. /etc/amavis/
  3. mkdir -p keys/{domain1.com,domain2.com}
  4. cd keys/domain1.com
  5. amavisd-new genrsa domain1.com 1024 // A ré-éditer pour l‘ensemble de vos domaines.
  6. */

On modifie notre fichier 50-user (pour ceux qui sont sur debian)

  1. /*
  2. $inet_socket_port = [10024,10026] #Variable présente dans le fichier 20-debian_defaults mais si cette ligne est présente dans le 50-user cela va surcharger les valeurs précédentes. On indique ici que amavisd-new écoute sur les 2 ports
  3. $enable_dkim_verification = 1;
  4. $enable_dkim_signing = 1;
  5. dkim_key(‘domain1’, ‘domain1’, ‘/etc/amavis/keys/domain1/domain1.com.pem’);
  6. dkim_key(‘domain2’, ‘domain2’, ‘/etc/amavis/keys//domain2/domain2.com.pem’);
  7. @dkim_signature_options_bysender_maps = (
  8. { ‘.’ => { ttl => 21*24*3600, c => ‘relaxed/simple’ } } );
  9. #@mynetworks = qw(127.0.0.0/8 10.0.0.0/8 ); # list your internal networks
  10. #$interface_policy{‘10024’} = ‘DKIM_ALWAYS’;
  11. ##$policy_bank{‘DKIM_ALWAYS’} = { originating => 1, };
  12. $interface_policy{‘10026’} = ‘ORIGINATING’;
  13. $policy_bank{‘ORIGINATING’} = { originating => 1, };
  14. */

Passons maintenant à la configuration du master.cf , on ajoute les lignes suivantes :

  1. /*
  2. submission inet n – – – – smtpd #Le port utilisé ne sera plus le 25 ou le 465 mais le 587.
  3. -o smtpd_enforce_tls=yes
  4. -o smtpd_sasl_auth_enable=yes
  5. -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  6. -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  7. -o content_filter=smtp-amavis:[127.0.0.1]:10026 #Les mails qui seront authentifiés par le port 587 seront envoyés par le port 10026 vers amavis et sera utilisé par la variable $interface_policy{‘10026’} vu plus haut.
  8. */

Biensur pour que tout ceci fonctionne postfix doit être configuré avec du TLS.

Maintenant il faut renseigner notre clé dans notre configuration DNS.

  1. /*
  2. amavisd-new showkeys domain1 « Coller le résultat à la fin de votre fichier de conf DNS »
  3. rndc reload votre_zone_dns
  4. */

Pour terminer vous pouvez vérifier que les informations renseignées dans vos DNS sont correctes

  1. /*
  2. # amavisd-new testkeys robertain.com
  3. TESTING: robertain._domainkey.robertain.com => pass
  4. */

Vous pouvez vérifier que la signature DKIM fonctionne correctement en envoyant tout simplement un mail à cette addresse « [email protected].port25.com » .

Related posts

5 Thoughts to “Signature DKIM et amavis”

  1. phil

    Bonjour,

    Merci pour votre topics.
    Il me semble qu’il manque l’indication du retour des messages de amavis -> postfix.
    Dans le fichier 50-user, je rajouterai:
    $forward_method = ‘smtp:[127.0.0.1]:10025’;
    $notify_method = ‘smtp:[127.0.0.1]:10027
    La notify_method renvoie les mails signés sur le port 10027.

    On configure Postfix pour traiter les mails envoyé par amavis:
    localhost:10025 inet n – n – – smtpd
    -o content_filter=
    -o header_checks=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o myhostname=local.impmc.jussieu.fr
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8

    localhost:10027 inet n – n – – smtpd
    -o content_filter=
    -o header_checks=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o myhostname=local.impmc.jussieu.fr
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8

    J’ajouterai aussi dans le main.cf, l’envoi à amavis des mails qui ne sont pas signés:
    content_filter = amavisfeed:[127.0.0.1]:10024

    J’espère ne pas me tromper étant donné que je n’ai pas encore tester DKIM avec amavisd.

  2. phil

    J’avais posté un message indiquant que la configuration était incomplète et proposé de la compléter.
    Ce message a été effacé sans aucune autre réponse.
    Dommage, il me semble que ce n’est pas très fair-play pour un forum.
    Et pourquoi laisser ouvert des commentaires ?

  3. lmns972

    Votre message n’a pas été effacé il était juste en attente de validation 😉

  4. lmns972

    Dans le fichier 50-user, je rajouterai:
    $forward_method = ‘smtp:[127.0.0.1]:10025’;
    $notify_method = ‘smtp:[127.0.0.1]:10027
    La notify_method renvoie les mails signés sur le port 10027.

    Je ne connais pas c’est 2 paramètres je testerais afin de voir le comportement .

    On configure Postfix pour traiter les mails envoyé par amavis:
    localhost:10025 inet n – n – – smtpd
    -o content_filter=
    -o header_checks=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o myhostname=local.impmc.jussieu.fr
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8

    Oui parfaitement d’accord il n’est pas dans ce billet car je suppose que le serveur est déjà configuré . Mais dans la rubrique mail cette partie est configurée

    localhost:10027 inet n – n – – smtpd
    -o content_filter=
    -o header_checks=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o myhostname=local.impmc.jussieu.fr
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    Pour ma part je n’utilise pas ceci

    J’ajouterai aussi dans le main.cf, l’envoi à amavis des mails qui ne sont pas signés:
    content_filter = amavisfeed:[127.0.0.1]:10024
    Idem je considère que la conf postfix est déjà fonctionnel . Pour ma part j’utilise :
    content_filter = smtp-amavis:[localhost]:10024

    Je mettrais cependant à jour le billet afin que cela soit plus clair pour tous 🙂

    Merci pour les remarques et corrections elles sont tjrs les bienvenues 😉

  5. lmns972

    Concernant c’est 2 paramètres :
    $forward_method = ‘smtp:[127.0.0.1]:10025’;
    $notify_method = ‘smtp:[127.0.0.1]:10027

    Je peux avoir la version de debian utilisée ainsi que amavis .
    Amavis est compilé et en package ?

Leave a Comment