Forum Linux.débutant POSTFIX : ne signe pas les emails sortant via OPENDKIM

Posté par . Licence CC by-sa
Tags : aucun
2
10
fév.
2015

Bonjour,

J’espère être au bon endroit.

Petite histoire :
Je cherche à créer une passerelle SMTP via POSTFIX, je tourne sous Debian 7
L’authentification DKIM est gérée par opendkim
J’avance pas à pas sur cette installation, car je veux comprendre au maximum le fonctionnement.

Je peux envoyer des mails via cette passerelle.
Je ne sais pas si je peux recevoir les emails (chaque chose en son temps)

Mon problème :
Impossible de faire signer mes emails avec l'authentification DKIM.
Absolument aucun marquage.

  • # Quelle configuration est utilisée ?

    Posté par (page perso) . Évalué à 2. Dernière modification le 10/02/15 à 18:36.

    Je pars du principe que les enregistrements DNS pour la vérification de signature sont en place (dans tous les cas, ce n'est pas cela qui influe sur le mécanisme de signature proprement dit).

    Quelle configuration est en place pour Postfix ? Voici quelques conseils basés sur mon propre serveur (Slackware 14.0).

    Les choses fonctionnent en ayant ajouté les lignes suivantes dans le fichier main.cf :

    smtpd_milters = inet:127.0.0.1:8891
    non_smtpd_milters = $smtpd_milters
    milter_default_action = accept
    milter_protocol = 2

    Le daemon OpenDKIM fonctionne en local, et les paramètres suivants ont été définis dans le fichier opendkim.conf (en gardant les paramètres par défaut par ailleurs) :

    Selector                smtps
    KeyFile                 /usr/local/etc/smtps.private
    Mode                    s
    Socket                  inet:8891@localhost
    PidFile                 /var/run/opendkim.pid
    Domain                  example.net

    L'un des points important ici est d'avoir le Mode s qui définit la signature des messages (l'autre mode, v, peut être utilisé indépendamment ou en combinaison pour vérifier les messages entrants).

    Au final, y a t-il des messages d'erreurs dans les fichiers journaux ? OpenDKIM envoie probablement ses messages dans le même fichier que Postfix.

    • [^] # Re: Quelle configuration est utilisée ?

      Posté par . Évalué à 1.

      Merci pour cette participation,

      je fonctionne avec un fichier de socket (j'ai aussi essayé via ip)

      /etc/postfix/main.cf

      milter_default_action = accept
      milter_protocol = 6
      smtpd_milters = unix:/var/run/opendkim/opendkim.sock
      non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock

      /etc/opendkim.conf

      Syslog yes
      UMask 002
      Canonicalization relaxed/relaxed
      Mode sv
      OversignHeaders From
      UserID opendkim:opendkim
      Domain mondomain.com
      KeyFile /etc/dkim/mail.private
      Selector mail
      DNSTimeout 5

      /etc/default/opendkim

      SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"

      Concernant les fichier de log je ne suis pas capable de les afficher.

      • [^] # Re: Quelle configuration est utilisée ?

        Posté par . Évalué à 1.

        je suis preneur sur la commande à taper pour accéder aux fichiers de log

        • [^] # Re: Quelle configuration est utilisée ?

          Posté par (page perso) . Évalué à 3.

          Les fichiers journaux se trouvent dans /var/log

          Pour trouver quel fichiers sont utilisés par Postfix ou OpenDKIM, tu peux utiliser la commande suivante :

          grep -i --color postfix /var/log/*

          Et selon les résultats tu peux consulter les fichiers indiqués avec la commande view (qui lance l'éditeur vi en mode lecture seule, ce qui évite de modifier les fichiers par accident) ou tout autre commande utilisable pour afficher le contenu d'un fichier texte (cat, more, …) :

          view /var/log/mail

          Une commande utile pour effectuer des tests est d'utiliser la commande tail en mode "flux" :

          tail -f /var/log/mail

          De cette manière l'affichage du fichier se fait en continu (les nouveaux messages apparaissent au fur et à mesure). Utiliser la combinaison Ctrl + C pour l'arrêter.

          • [^] # Re: Quelle configuration est utilisée ?

            Posté par . Évalué à 1.

            Merci pour l'aide apporté voila un petite exemple du fichier de log :

            Feb 11 13:22:39 enfer opendkim[12285]: OpenDKIM Filter: mi_stop=1
            Feb 11 13:22:39 enfer opendkim[12285]: OpenDKIM Filter v2.6.8 terminating with status 0, errno = 0
            Feb 11 13:22:39 enfer opendkim[12825]: OpenDKIM Filter v2.6.8 starting (args: -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/var/run/opendkim/opendkim.sock)
            Feb 11 13:22:46 enfer postfix/master[12786]: terminating on signal 15
            Feb 11 13:22:46 enfer postfix/master[12969]: daemon started—version 2.9.6, configuration /etc/postfix
            Feb 11 13:23:07 enfer postfix/smtpd[12989]: warning: database /etc/aliases.db is older than source file /etc/aliases
            Feb 11 13:23:07 enfer postfix/smtpd[12989]: connect from mon.domaine.fr[... (mon ip)]
            Feb 11 13:23:07 enfer postfix/smtpd[12989]: BC73B2241099: client=mon.domaine.fr[... (mon ip]
            Feb 11 13:23:07 enfer postfix/cleanup[12993]: BC73B2241099: message-id=
            Feb 11 13:23:07 enfer opendkim[12825]: BC73B2241099: external host mon.domaine.fr attempted to send as domaine.com
            Feb 11 13:23:08 enfer postfix/qmgr[12975]: BC73B2241099: from=monuser@domaine.com, size=636, nrcpt=1 (queue active)
            Feb 11 13:23:08 enfer postfix/smtp[12995]: BC73B2241099: to=<**********@mail-tester.com>, relay=mail-tester.com[94.23.206.89]:25, delay=0.94, delays=0.92/0.01/0.01/0, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 71226A80D2)

            enfer et le nom de mon serveur Debian ;)

            • [^] # Re: Quelle configuration est utilisée ?

              Posté par (page perso) . Évalué à 3.

              Je n'ai pas vu d'erreur particulière dans la configuration, mais il y a un détail qui me fait réagir dans les logs:

              Feb 11 13:23:07 enfer opendkim[12825]: BC73B2241099: external host mon.domaine.fr attempted to send as domaine.com

              OpenDKIM ne signera pas les messages pour un autre domaine que celui pour lequel il est configuré, et il semble que ton message est envoyé depuis un domaine différent. Je n'ai pas regardé ce point dans la documentation, mais il est peut-être possible de paramétrer la signature pour une liste de domaines ; c'est à vérifier.

              • [^] # Re: Quelle configuration est utilisée ?

                Posté par . Évalué à 1.

                J’ai manqué de donner des informations je pense.

                Le serveur Debian et virtualisé à l’extérieur.
                Mon principal objectif est que ce serveur soit utilisé pour acheminer les emails (déjà sortant pour le moment)
                De mon serveur Exchange. (Pour la petite histoire)

                Actuellement pour tester cette passerelle smtp, j'ai configuré un Outlook pour envoyer les emails.
                Quand j'envoie l'email je pense que le POSTFIX fait un reverse de mon ip et récupère le nom de mon.domaine.fr
                Suite à ta remarque, je viens d'envoyer un email avec la commande MAIL. Je me retrouve avec un root@enfer, qui lui à bien l'authentification DKIM

                Donc il faut que je creuse du côté de la liaison extérieure.
                J’avais installé SASLAUTH pour avoir une liaison TLS, Outlook détecte bien qu'il y a un certificat que j'ai installé.
                J’ai créé un compte user avec mot de passe, je l’ai ajouté dans /etc/aliases (pour faire mes testes)
                user: user@domaine.com
                C'est avec lui que je fais mes testes d'envoi d'email. Les emails parte bien, mais arrive sans signature DKIM.
                J’espère que mes explications sont compréhensibles.

                • [^] # Re: Quelle configuration est utilisée ?

                  Posté par (page perso) . Évalué à 2.

                  Si un message envoyé via la commande mail est signé correctement par OpenDKIM alors la configuration du serveur n'est pas en cause, et la source est probablement "du côté de la liaison extérieure".

                  Voici un petit script shell que j'utilise pour effectuer des tests avec la commande mail et différentes options (bien indiquer le nom d'utilisateur et le mot de passe pour les options correspondantes [ oui le mot de passe est en clair, attention à ne pas laisser le script traîner n'importe où ] ) :

                  #!/bin/bash
                  
                  # test email script
                  
                  # Options for a SMTPS server:
                  # - smtp-auth-user=<username>
                  # - smtp-auth-password=<password>
                  # - smtp-auth=login
                  # - smtp-use-starttls=1
                  # - ssl-verify=ignore (not necessary if the certificate is known by the system)
                  
                  # create a temporary file for the message
                  TMPFILE=$(mktemp /tmp/test-mail.XXXXXX)
                  OUTFILE=$TMPFILE
                  (
                  cat << EOF
                  Hi,
                  
                  This is a test e-mail.  Please do not respond.
                  
                  Sincerely.
                  --
                  Me
                  EOF
                  ) > $OUTFILE
                  
                  env MAILRC=/dev/null smtp=smtp://smtps.example.net smtp-auth-user=username smtp-auth-password=password smtp-auth=login smtp-use-starttls=1 from="user@example.net (Me)" mailx -n -s "Test Message" recipient@example.com < $TMPFILE
                  
                  if [ $? -eq 0 ]
                  then
                      printf "\n Sending e-mail to: recipient@example.com\t[ "'\e[1;32m'"\033[1mOK\033[0m"" ]\n"
                  else
                      printf "\n Sending e-mail to: recipient@example.com\t[ "'\e[1;31m'"\033[1mFAIL\033[0m"" ]\n"
                  fi
                  
                  rm $TMPFILE
                  
                  # EoF

                  Après, pour la connexion avec MS Outlook, je ne peux malheureusement pas apporter beaucoup d'aide.

                  Pour le fichier aliases, il faudrait vérifier que le domaine listé est bien celui qui doit être signé (par de confusion entre .fr et .com). Également, régénérer le fichier aliases (avec la commande newaliases) pour que les changements soit pris en compte (ce qui est signalé dans les logs avec la ligne "warning: database /etc/aliases.db is older than source file /etc/aliases").

                  • [^] # Re: Quelle configuration est utilisée ?

                    Posté par . Évalué à 1.

                    Je n’ai pas eu le temps de m'en occuper en ce moment,

                    Par contre je n'ai rien compris au script, (désolé) je ne sais sous quel format il faut que je le transforme et j'imagine qu'il faut l’exécuter depuis le serveur debian ?
                    Je ne vois pas la commande mail apparaitre dans le script.

                    • [^] # Re: Quelle configuration est utilisée ?

                      Posté par . Évalué à 1. Dernière modification le 19/02/15 à 11:37.

                      j'ai réussi à exécuter le script, surement très mal car c'est toujours le compte root qui envoi. Et en plus non signé DKIM

                    • [^] # Re: Quelle configuration est utilisée ?

                      Posté par (page perso) . Évalué à 2.

                      Par contre je n'ai rien compris au script, (désolé)

                      Aucun souci, les scripts shells ne sont pas toujours limpides ; voici quelques détails :

                      • de la ligne commençant par "TMPFILE" jusqu'à celle finissant par "$OUTFILE", c'est la création d'un fichier temporaire qui contient le message de test. Cela évite d'utiliser un fichier texte externe pour le corps du message.

                      • la ligne débutant par "env MAILRC" est celle qui effectue l'envoi du mail. Un certain nombre d'options sont définies en premier lieu (serveur SMTP utilisé, utilisateur et mot de passe, adresse et identité de l'expéditeur puis la commande mailx (mail est généralement un alias pour cette commande) est lancée en définissant le sujet, l'adresse de destination et le corps du message (le fichier temporaire crée précédemment) est envoyé en entrée. Si tu as besoin de plus de détails, le mieux est de consulter la documentation (man mailx).

                      • enfin, les lignes suivantes sont là pour afficher un message de réussite ou d'échec selon le résultat de la commande mailx, et comme des codes couleurs (vert/OK, rouge/FAIL) sont utilisés, le code est indigeste à lire. Et le fichier temporaire est supprimé au final.

                      Ce script peut être utilisé depuis un compte utilisateur standard (non root), il faut bien renseigner les options pour l'identité de l'expéditeur (smtp-auth-user, smtp-auth-password, from).

                      Et pour rappel, il peut être bon de vérifier et mettre à jour le fichier /etc/aliases sur la machine.

                      • [^] # Re: Quelle configuration est utilisée ?

                        Posté par . Évalué à 1.

                        Il y a quelque chose qui m'échappe, concernant le fichier Aliases.

                        Mon serveur a l'utilisateur root, je travaille sur ce compte là.

                        J’ai créé un compte que l'on nommera "authmail" ce compte me sert (ou doit servir) pour l'authentification TSL de mon serveur postfix.

                        Je n'ai rien d'autre que ces 2 comptes.
                        Dans le fichier aliases j’ai : postmaster: root
                        Je veux pouvoir envoyer des emails de cette façon : cequejeveux@mondomaine.com
                        Avec l’authentification "authmail"
                        Pour le moment j’aimerais, via l’aide de ton script, arriver à envoyer un email depuis mon serveur pour voir ci la signature DKIM fonctionne.
                        Pour le moment dans from : "quelquechose@mondomaine.com" me l’envoi toujours avec le compte root.

                        Je pense avoir bien compris ton script, mais cette fois ci, c'est "aliases" qui m’échappe, ou les histoires de comptes utilisateurs pour envoyer des emails via postfix.

                        Merci beaucoup pour ton aide.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.