Servers Mails - Reports DMARC (SPF - DKIM) - analyse file XML?

Tags: #<Tag:0x00007f58d029b690> #<Tag:0x00007f58d029b528> #<Tag:0x00007f58d029b320>

Bonjour mesdames, messieurs.

Maintenant que çà rentre bien chez les serveurs de mails des destinataires.

Screenshot 2022-02-13 at 15-19-02 Emails Reports - Conformance DMARC - DKIM - SPF


J’aurais besoin d’un analyste - Smile :wink: leader européen de l’intégration et de l’infogérance de solutions open source. 1700 Smiliens vous, nous accompagnent dans votre, notre stratégie digitale - Smile.fr :wink: - qui pourrait / voudrait bien m’aider à analyser les rapports DMARC en profondeur - gratuitement :slight_smile: :slight_smile: :slight_smile: Merci - sans déconner :heart: - Je n’ai pas 1.4K d’€ pour l’analyse journée :crazy_face:

Pour que l’on et vous identifions les spammeurs - usurpateurs d’identité d’emails et de noms (de domaines) qui voudraient faire du phishing - hameçonnage (Technique de fraude sur Internet visant à obtenir des renseignements confidentiels (mot de passe, informations bancaires…) afin d’usurper l’identité de la victime.) Synonymes : filoutage :confused: ils prennent pour des (gros) malins !

Le header_from est visible au dessus (en mettant sa souris au dessus) du champ de l’adresse IP et le résulats de l’authentification SPF au dessus des champs FAIL ou PASS et le résultats de l’authentification DKIM au dessus des champs DKIM FAIL ou PASS sur mon tableau HTML des rapports DMARC et mon fichier PHPsource .

Merci à vous toutes et tous de protéger nos OS ( Operating Systems) et notre cerveau (Chair - Cervelle d’Humains :slight_smile: - En chair et en OS nous sommes - des Seigneur.e.s à la ressemble des DieuX d’Amour de la Vie - nos créateur.rice.s - fondateur, fondatrices de nos systèmes opérationnels - cette télécommunication Internationale et spatiale :slight_smile:

Merci - C’est dimanche.

Note de Moi-même : Cours de croyants - en l’autre (les méchants et les gentils), en mes prochains (enfants), en DieuX (mes parents) et en mes Seigneur.e.s (vous) :heart:

Romain (IPv10.Net)

Mesdames, messieurs bonjour.

A titre d’informations j’ai modifié le code PHPsource de mon tableau HTML des rapports DMARC pour afficher en « title » les informations des, de la Politique DMARC configurée.

J’avais configuré la politique DMARC pour la quarantine avec 5% d’analyse et laissé par default (détendu - relaxed) les champs sur l’alignement SPF et DKIM.

Et j’ai changé çà - et donc j’ai ajouté toutes les valeurs des rapports DMARC « visible » à mon tableau HTML des rapports DMARC ! C’est mieux :wink:

Romain.

Bonne fin d’journée.

Je n’arrive (toujours) pas à rentrer sur MSN, Hotmail - Qui a des infos !?
Je n’ai pas de compte MSN en plus :confused:
Cà va être obligé je crois !

Ciao ciao mesdames, messieurs.


NdMoi-même 20220217 : J’ai ajouté un preg_replace à mon code PHP pour me permettre d’avoir plusieurs fichiers du même domain sender, même destinataire rapports et de la même journée.

Par exemple, 2 fichiers XML qui porte le même nom (c’est dû au fait que hier j’ai changé mes valeurs de Politique DMARC) :

google.com!mydomain.tld!1644969600!1645055999-0.xml
google.com!mydomain.tld!1644969600!1645055999-1.xml

J’ai ajouté le Javascript « jquery-tablesorter » - (donc externe) - qui permet de classer les colonnes des tableaux :heart: sans rechargement de page :crazy_face:

Cà facilite la Vie - les outils comme celui-ci :slight_smile:


Et j’ai ajouté un menu pour les années et les mois - C’est mieux !

Cordialement,

Romain

Bonne journée :slight_smile: soirée :wink:

J’suis dev … ma passion c’est les bons réseaux - Tu m’embauches ??

Je rigoLe !!! Bonne nuit ! Bises :heart: :heart: :heart: :heart:

Cordialement,
Romain

NdM : Je supprime çà demain :rofl: :crazy_face: çà fait (H)up :slight_smile:

Coucou les loulous !

Mon serveur mail destinataire doit envoyer des rapports DMARC au serveur de l’envoyeur :wink:

Donc est-ce que quelqu’un pourrait (m’envoyer un mail) et m’envoyer un rapport DMARC qu’il, qu’elle recevrait de mon serveur Mail ?

Vu que j’ai installé DMARC : SPF et DKIM :slight_smile: :slight_smile: :slight_smile: :slight_smile: - que je vois la force de DMARC :slight_smile:

Je n’ai pas d’ami(e) moi ^^ qui veut l’Être :grin: !?

Cordialement,
Romain


  1. J’ai envoyé ma mailing à 1 mail toutes les 10 secondes - cette semaine - (6 jours et demi d’envoie) - Charge serveur à 90%
  2. Au paravant j’avais configuré à 1 mail pour 1 seconde - (9 heures et demi d’envoie) - Charge serveur à 400%
  3. Par default sans « sleep », il y avait 8 mails qui partaient en 1 seconde. (4 heures d’envoie) - Charge serveur à 900% - Plus personne ne pouvait accéder au serveur Web !

W1A.ZW3B MRTG : Multi Routeur Traffic Graph - J’nai pas installer de MRTG sur ma VM Mail :frowning:


Il me reste 8380 mails qui doivent partir avant ce soir minuit - pour la mailing de cette semaine - Cà craind !


Les mails deferred au bout de 6 jours (1)

/opt/zimbra/bin/qshape deferred

		 T  5 10 20 40 80 160 320 640 1280 1280+
	TOTAL 8380  9  6  5 20 49  82 241 403  816  6749

Les mails deferred au bout de 9 heures (2).

/opt/zimbra/bin/qshape deferred

	      T  5 10 20 40 80 160   320  640 1280 1280+
    TOTAL 48849  0  0  0  0  0   0 11714 7923  798 28414

Petit serveur :slight_smile:

cat /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz x8

cat /proc/meminfo
MemTotal:       65834144 kB

64 GB de RAM

dmidecode --type 16
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0029, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 512 GB
        Error Information Handle: Not Provided
        Number Of Devices: 8

Linux : Comment identifier les modules de mémoire ECC du serveur !


:wink:

PS : Je vais envoyé la mailing en aléatoire :slight_smile: Dirais-je :confused:

Sinon la chose la plus grave !

Je ne reçois toujours pas de mails - par exemple - sur mon adresse gmail !
ni ma mailing - ni les mails d’alerte d’authentification, de mise à jour des modifications de mon compte (de mon site), ni d’ajout d’articles, ni d’ajout de commentaires etc…

J’ai même dû couper toute inscription et récupération de mot de passe à cause de cela il y’a quelques (années) temps ! M**** !

Je ne sais plus quoi faire !

Je leur envoie seulement (environ) 100 mails (CF) par jours et j’ai un taux d’erreurs de distribution entre 96% et 100% et pourtant je passe bien les authentifications et conformité des messages basés sur le domaine DMARC DKIM et SPF !

Google Support : Limites d’envoi et de réception des messages !

J’ai passé ma politique DMARC du(des) serveur(s) Web en reject - C’est sûrement mieux pour les machines SenderDomainSub de mails depuis mes scripts) - Vu qu’ils rejettent tout dirait-on !! Pour les adresses mails normales (au pire) çà arrivera dans le dossiers SPAMs -de mes SenderDomains :wink:

Que faire ?

En plus d’Être passionné :wink:

J’aurai dû faire une école d’ingénieurs en 1993 - à la place d’un CAP (Contrat d’Apprentissage Professionnel) de BMA (Bois et Matériaux Associés).

J’aurai eu sûrement des potes dans le domaine et le réseau International - de consultant informatique, technico marketing, commercial - social ! Un bon (gros) réseau de pot-OS !

Difficile de se faire une place dans ce Monde :heart:

J’essaie de mettre ne place une MFA (Multi-Facteur Authentification) pour mes sites Web mais je ne vais pas y arriver si tous les hébergeurs de mails ne me font pas rentrer mes mails (malgré mon Authentification et Conformité des messages basés sur le domaine avec création de rapports - Domain-based Message Authentication, Reporting, and Conformance) DMARC : SPF + DKIM + rDNS

Comme nous conseille L’agence américaine de cybersécurité qui vient de publier une liste d’outils et de services de sécurité gratuits :slight_smile: :slight_smile:

Note on Me : J’vais installer un téléphone portable pour envoyer des SMS (Short Message Service) sur mon serveur - un autre - pas celui du data-center :rofl: si çà continu !

J’ai ajouté quelques informations sur cette page MTA - Messages d’erreur Mail - SMTP return codes * Serveurs * OS GNU/Linux * Comment-faire :grinning:

Cordialement,
O.Romain.Jaillet-ramey alias ORJ aKa Kss*
LAB3W : Laboratoire Web et réseaux - Ingénierie de l’Internet

J’ajoute un bon article : Directives de mise en œuvre - protection du domaine de courrier (ITSP.40.065 v1.1) du Centre canadien pour la cybersécurité.

J’ajoute un article de Stéphane Bortzmeyer : RFC 7960 : Problèmes d’interopérabilité entre l’authentification, la création de rapports et la conformité des messages basés sur le domaine (DMARC) et les flux d’e-mails indirects :slight_smile:

Bonne journée !

J’ajoute un truc :

Quand j’envoie une mailing, je reçois les rapports DMARC que soit disant j’envoie des mails en mon nom de domaine principal zw3b.net, (chose fausse, puisque je n’envoie AUCUN mail en ce nom de domaine (sauf bien sûr depuis ma boîte mail - et encore puisque j’envoie depuis le .fr) !

C’est quand (et seulement) quand j’envoie un mailing avec mon script PHP (donc, avec toujours, le même Sender (envoyeur d’emails : www-data@mon-serveur-web(dot)zw3b.net) que je reçois des alertes (des rapports DMARC) des serveurs destinataires - Rapports concernant un (mon) domaine et un (mon) sous-domaine, comme quoi certains (d’autres serveurs que le mien - avec d’autres IP enverraient des mails en mon nom de domaine - et que les serveurs destinataires me retourneraient une erreur).

Je reçois des rapports DMARC sur mon nom de domaine d’envoi d’emails ; mon serveur Web ; un sous domaine - et sur mon nom de de domaine (principal) user@zw3b.tld

Puis sinon, tous les autres jours, je ne reçois aucun rapport DMARC !? Comme si personne n’usurpé mon identité les autres jours :confused:

Je me demande, puis, je me dis que cela est (bien) bizarre !

Style personne n’envoie/ou me répond (les serveurs MX destinataires)… enfin personne (soit-disant) usurpe mon identité - sauf si j’envoie une mailing ?
Bizarre et IMPOSSIBLE que cela soit seulement à ce moment - seulement à ce/cet instant - seulement quand j’envoie un mailing !

Je vais attendre, un mois pour vérifier (peut-être que DMARC envoie les rapports mensuellement si il y a plus de « 100 » mails reçus par jour par un serveur destinataire) ce que je dis - comme si soit-disant c’était comme par hasard, un jour précis… incompréhensible puisque impossible !

Merci :confused:

Cordialement,
Romain (LAB3W.COM) - Créateur ZW3B !

Bonjour - re - Up ce sujet de discussion.

Histoire de passer le mot :wink:

J’ai envoyé un mailing hier minuit - Par exemple - les mails en attente de livraison/réception.

                  T  5 10 20 40  80 160 320 640 1280 1280+
         TOTAL 2220 11 15 20 51 124 204 456 832  507     0
      yahoo.fr  912  5  4  6 19  50  85 184 348  211     0
       free.fr  762  4  5  7 25  43  74 162 272  170     0
       aol.com  221  0  2  3  2   9  20  53  77   55     0
      tele2.fr   77  2  1  0  2   5   7  11  33   16     0
libertysurf.fr   57  0  1  1  0   4   2  10  22   17     0
     yahoo.com   29  0  1  0  1   2   3   4  12    6     0
    infonie.fr   24  0  0  0  0   2   0   5  12    5     0
     chello.fr   18  0  0  0  0   0   2   4   8    4     0
   ifrance.com   17  0  0  0  0   1   1   4   5    6     0
  aliceadsl.fr   17  0  0  0  0   1   2   4   8    2     0
   freesbee.fr    7  0  0  0  0   2   1   1   3    0     0
   laposte.net    5  0  0  0  0   0   0   0   3    2     0
worldonline.fr    5  0  0  0  0   0   0   1   2    2     0
     nomade.fr    3  0  0  0  0   0   1   0   2    0     0
    fcvnet.net    3  0  0  0  0   0   0   1   2    0     0
   yahoo.co.uk    3  0  0  0  1   0   0   0   2    0     0
      chez.com    2  0  0  0  0   0   0   0   2    0     0
    humour.com    2  0  0  0  0   0   0   1   1    0     0
 esf-xerox.com    2  0  0  0  0   0   1   0   0    1     0

Je m’aperçois que l’adresse IP 158.69.126.137 de mon serveur mail est déjà bloquée sur le serveur destinataire d’adresses email (at) free (dot) fr : https://postmaster.free.fr

Si on regarde la 1ère ligne du retour de la commande « qshape.pl deferred » qui me signale le temps ; en 21h (1280 / 60) je n’ai envoyé que 762 mails à l’ISP : 170 (il y a 21h) + 272 (il y a 10h) + 162 (il y a 5h) + 74 + 43 + 25 + 7 + 5 + 4.

J’ai déjà configuré mon script pour qu’il n’envoie qu’un seul mail par seconde.

Je ne vois pas - comment - ou qui contacter chez free (dot) fr pour qu’il accepte mes mails (en plus) conforment à DMARC :wink:

Qui me contacte en Message Privé :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile: Merci !

Bon weekend de Pâques - On n’est pas des cloches - ne buvez pas trop !

Ciao ciao.

Romain

Une semaine après (pour archive) :

                  T  5 10 20 40 80 160 320 640 1280 1280+
         TOTAL 1846  0  0  0  0  0   0   0   0    0  1846
       free.fr  715  0  0  0  0  0   0   0   0    0   715
      yahoo.fr  700  0  0  0  0  0   0   0   0    0   700
       aol.com  112  0  0  0  0  0   0   0   0    0   112
      tele2.fr   95  0  0  0  0  0   0   0   0    0    95
libertysurf.fr   57  0  0  0  0  0   0   0   0    0    57
     chello.fr   20  0  0  0  0  0   0   0   0    0    20
    infonie.fr   18  0  0  0  0  0   0   0   0    0    18
   ifrance.com   17  0  0  0  0  0   0   0   0    0    17
  aliceadsl.fr   12  0  0  0  0  0   0   0   0    0    12
     yahoo.com   11  0  0  0  0  0   0   0   0    0    11
worldonline.fr   10  0  0  0  0  0   0   0   0    0    10
   laposte.net    7  0  0  0  0  0   0   0   0    0     7
   freesbee.fr    7  0  0  0  0  0   0   0   0    0     7
boursorama.com    4  0  0  0  0  0   0   0   0    0     4
      yahoo.de    2  0  0  0  0  0   0   0   0    0     2
     online.fr    2  0  0  0  0  0   0   0   0    0     2
   eurelec.com    2  0  0  0  0  0   0   0   0    0     2
   clubobs.com    2  0  0  0  0  0   0   0   0    0     2
   jetable.com    2  0  0  0  0  0   0   0   0    0     2

Je réfléchis - qu’est ce que cela veut-dire tout çà eXactement !! :wink:

Je me demande si je fais bien de désactiver toutes les adresses mail (at) free (dot) fr 1 semaine sur 2.

Bon (hors sujet (ou pas)) jour.

J’ai installé #DNSSEC sur une de mes zones déjà « zw3b.net.hosts » et toutes les autres - tous mes noms de domaines :slight_smile: (20220521)

DNSSEC est une extension de sécurité du protocole DNS. Il s’agit d’une signature numérique sur les informations publiées par les DNS, mise en place par une paire de clé de chiffrement, rendant plus difficile la falsification, et donc plus sécurisée.

Tout fonctionne - Super !

CF :

dig DNSKEY zw3b.net. @dns.google +multiline
dig A zw3b.net. @dns.google +noadditional +dnssec +multiline
dig AAAA www.zw3b.net. @dns.google +noadditional +dnssec +multiline
dig +trace +noadditional DS zw3b.net @dns.google | grep DS

Pourrais-je avoir des explications sur le but d’ajouter mes zones signés (clefs ZSK et KSK publiques) chez mon register - par exemple Gandi.net ?

gandi-dnsec-keyadd

Est-ce pour déclarer à l’autorité supérieure (le TLD net) que mon nom de domaine est signé ? Cà doit être cela ^^

DS qu’est ce que cela veut dire ? Domain Secure ?

Delegation Signed me signale t’on :wink: - Un admin de Gandi.Net - Jérémie merci :slight_smile:

Merci à vous :slight_smile:

Romain

PS : J’ai suivis ce super tuto : How To Setup DNSSEC on an Authoritative BIND DNS Server - Merci !
D’autres infos par ici : DNSSEC Howto for BIND 9.9+ et surtout là Bind9 > 5. Advanced DNS Features > 5.8. DNSSEC

Bonne journée !

Salut,

À titre d’informations j’ai modifié le code PHPsource de mon tableau HTML des rapports DMARC avec les nombres globals des emails envoyés ou rejetés par mois.

Note de Moi-même du 20220506 : Ajout du nombre d’emails envoyés depuis chaque IP des serveurs d’usurpateurs et en erreurs (par mois).

A votre avis - je les scannes ?

Bonne soirée, fin de journée !

Cordialement,
Romain :slight_smile:

Oui j’avais oublié :wink:

J’ai écris un code BaSH pour dé-zipper les fichiers DMARC dans le répertoire du mois :wink:
Cà permet de ne pas oubliez de fichiers non dézipper - Au cas où l’Humain que je suis en aurais oublié :wink:

Le script est le suivant : dmarc-file-dzip.sh

#!/bin/bash
#-------------------------------------------------------------
# Script pour dezipper les fichiers DMARC
# Author : O.Romain.Jaillet-ramey (orj (at) lab3w (dot) fr)
# Date Create : 20220527
#-------------------------------------------------------------
DIR="/var/pro/web_sites/zw3b_site/www/dmarc/"
YEAR="2022"
MONTH="06"

FOLDER="${DIR}/${YEAR}/${MONTH}"

FILE_OK=`/bin/ls ${FOLDER} | awk "/(gz|zip)/"`

NB_FILES=`/bin/ls ${FOLDER} | wc -l`

echo '+-----------------------------------------------'
echo NB FILES : ${NB_FILES} IN FOLDER
echo '+-----------------------------------------------'
echo ""

c=0;
for i in `ls ${FOLDER} | awk "/(gz|zip)/"`;
do

        EXT=`echo ${i} | awk '{n=split($0,tab,"."); print tab[n];}'`

        FILE_DZIPED="`echo ${i} | sed -E 's/\.(zip|gz)//g'`"

#       echo "Extension : $EXT"

#       file ${FOLDER}/${i};

        if [ ${EXT} = 'zip' ];
        then
#               echo 'File Type : ZIP';
                if [ `echo ${FILE_DZIPED} | grep "xml"`  ];
                then
                        FILE_DZIPED="${FILE_DZIPED}"
                else
                        FILE_DZIPED="${FILE_DZIPED}.xml"
                fi
        fi

        if [ ${EXT} = 'gz' ];
        then
#               echo 'File type : GZ';
                FILE_DZIPED="${FILE_DZIPED}"
        fi

#       echo '+-----------------------------------------------'
#       echo ""
#       echo "FILE : "${i};
#       echo "TYPE DZIPED : " ${FILE_DZIPED};
#       echo ""
#       echo '+--------------'

        if [ ! -f "${FOLDER}/${FILE_DZIPED}" ] && [ -f "${FOLDER}/$i" ];
        then
                c=$(($c+1))

                echo '+-----------------------------------------------'
                echo -n "\ $c";
                echo " - "${i};
                echo " \ "
                echo -n '  +-- Unzip file '

                if [ ${EXT} = 'zip' ];
                then
                        echo ' type : ZIP';
                        echo ""
                        unzip "${FOLDER}/${i}" -d ${FOLDER}

                fi
                if [ ${EXT} = 'gz' ];
                then
                        echo ' type : GZ';
                        echo ""
                        gzip -dk "${FOLDER}/${i}"
                fi
#               echo '+-----------------------------------------------'
                echo ""

        fi

done;

echo '+-----------------------------------------------'
echo NB FILES : ${c} PROCESSED
echo '+-----------------------------------------------'
echo ""

Lancez la commande comme cela : sh dmarc-file-dzip.sh

On peut mieux faire hein :smiley:


NdMoi-même : Ajout du 20220624 - Optimisation du script par @PengouinPdt.

time dmarc-file-dzip.sh

real 0m0,026s
user 0m0,029s
sys 0m0,003s

Donc, gentiment, @PengouinPdt a optimisé le script sous le nom extract-dmarc-file.bash :wink:

#!/bin/bash
#-------------------------------------------------------------
# Author : O.Romain.Jaillet-ramey (orj (at) lab3w (dot) fr)
# Contributor : Stephane Huc (PengouinPdt)
# Desc : Script pour dezipper les fichiers DMARC
# ATTENTION à la variable $DIR, elle est juste si ton script shell
# est bien à la racine de ton sous-répertoire "/dmarc"
# Date Create : 20220527
# Date modify : 20220622
#-------------------------------------------------------------

DIR="$(dirname "$(readlink -f -- "$0")")"
#DIR="/var/pro/web_sites/zw3b_site/www/dmarc/"

YEAR="2022"
MONTH="06"

FOLDER="${DIR}/${YEAR}/${MONTH}"
if [ ! -d "${FOLDER}" ]; then mkdir -p "${FOLDER}"; fi

## find . -maxdepth 1 -type f \( -iname "*.gz" -o -iname "*.zip" \) -printf '%f\n'
# build an array by listing the folder only with files *.(gz|zip)
readarray -d '' lists < <(find "${FOLDER}" -maxdepth 1 -type f \( -iname "*.gz" -o -iname "*.zip" \) -print0)

echo "+-----------------------------------------------"
echo "NB FILES : ${#lists[@]} IN FOLDER"
echo -e "+-----------------------------------------------\n"

c=0;
for name in "${lists[@]}"; do

        #echo "name: ${name}"
        EXT="${name##*.}"
#       echo "EXT: ${EXT}"

        FILE_DZIPED="$(basename "${name%.*}")"
#       echo "Filename: ${FILE_DZIPED}"

        case "${EXT}" in
                'zip')
                        [ "$(echo "${FILE_DZIPED}" | grep -q "xml")" ] || FILE_DZIPED="${FILE_DZIPED}.xml"
                ;;
        esac

        if [ ! -f "${FOLDER}/${FILE_DZIPED}" ] && [ -f "${name}" ]; then
                c=$((c+1))

                echo "+-----------------------------------------------"
                echo -n "\ $c";
                echo " - ${name}";
                echo " \ "
                echo -n "  +-- Unzip file "
                echo -e " type : ${EXT} \n";

                case "${EXT}" in
                        'gz')
                                gzip -dk "${name}"
                        ;;
                        'zip')
                                unzip "${name}" -d ${FOLDER}
                        ;;
                esac

                echo -e "\n"

        fi

done;

echo "+-----------------------------------------------"
echo "NB FILES : ${c} PROCESSED"
echo -e "+-----------------------------------------------\n"

time extract-dmarc-file.bash

real 0m0,014s
user 0m0,014s
sys 0m0,001s

Et une autre version :

Super génial :slight_smile:

#!/bin/bash
#-------------------------------------------------------------
# Author : O.Romain.Jaillet-ramey (orj (at) lab3w (dot) fr)
# Contributor : Stephane Huc (PengouinPdt)
# Desc : Script pour dezipper les fichiers DMARC
# Pour ne pas avoir à créer manuellement les répertoires de destination « AAAA/MM ».
# Ils seront créés à partir du timestamp récupéré depuis le nom de fichier compressé reçu
# Fichier GZ/IP dans le sous-reperoire ./dmarc/
# Date Create : 20220527
# Date modify : 20220622
#-------------------------------------------------------------

DIR="$(dirname "$(readlink -f -- "$0")")"
#DIR="/var/pro/web_sites/zw3b_site/www/dmarc/"

## find . -maxdepth 1 -type f \( -iname "*.gz" -o -iname "*.zip" \) -printf '%f\n'
# build an array by listing the folder only with files *.(gz|zip)
readarray -d '' lists < <(find "${DIR}" -maxdepth 1 -type f \( -iname "*.gz" -o -iname "*.zip" \) -print0)

echo "+-----------------------------------------------"
echo "NB FILES : ${#lists[@]} IN FOLDER"
echo -e "+-----------------------------------------------\n"

c=0;
for name in "${lists[@]}"; do

	#echo "name: ${name}"
	EXT="${name##*.}"
	#echo "EXT: ${EXT}"

	FILE_DZIPED="$(basename "${name%.*}")" 
#	echo "Filename: ${FILE_DZIPED}"

	case "${EXT}" in
		'zip')
			[ "$(echo "${FILE_DZIPED}" | grep -q "xml")" ] || FILE_DZIPED="${FILE_DZIPED}.xml"
		;;
	esac
	#echo "Filename: ${FILE_DZIPED}"
	
	# get timestamp into filename to build folder
	timestamp="$(echo "${FILE_DZIPED}" | awk -F '!' '{ print $3 }')"
	#echo "timestamp: $timestamp"
	datename="$(date +'%Y/%m' -d "@${timestamp}")"
	#echo "date: $datename"
	unset timestamp
	
	FOLDER="${DIR}/${datename}"
	#echo "Folder: $FOLDER"
	unset datename
	
	# mkdir folder if not exists
	if [ ! -d "${FOLDER}" ]; then mkdir -p "${FOLDER}"; fi

	if [ ! -f "${FOLDER}/${FILE_DZIPED}" ]; then
		c=$((c+1))

		echo "+-----------------------------------------------"
		echo -n "\ $c";
		echo " - ${name}";
		echo " \ "
		echo -n "  +-- Unzip file "
		echo -e " type : ${EXT} \n";
		
		case "${EXT}" in
			'gz')
				gunzip -ck "${name}" > "${FOLDER}/${FILE_DZIPED}"
			;;
			'zip')
				unzip "${name}" -d "${FOLDER}"
			;;
		esac

		echo -e "\n"

	fi

done;

echo "+-----------------------------------------------"
echo "NB FILES : ${c} PROCESSED"
echo -e "+-----------------------------------------------\n"

Je soulignais malgré tout :sweat_smile: que plus de 1000 fichiers dans un et même répertoire çà craind - çà rame - que je reçois par exemple environ 200 fichiers / mois - Il faudrait simplement déplacer les ZIP/GZ dans le répertoire à côté des XML dézipper - Pour celles et ceux qui auraient mis tous les fichiers DMARC de rapports GZ/ZIP dans un dossier sans savoir en faire quoi :rofl: :crazy_face: - Y’a un super tableau HTML maintenant, le PHPSource ici :slight_smile:

Bonne journée à vous.

Romain :slight_smile:

J’essaie les « Balises facultatives recommandées » du DNS record pour la signature DKIM :slight_smile:

Et d’autres informations ici :

Bonne journée.

Salutations,
Romain

1 J'aime

À titre d’informations j’ai modifié le code PHPsource de mon tableau HTML des rapports DMARC avec les la création d’un fichier JSON.

Note de Moi-même du 20220620-21 :wink: : Création d’un fichier JSON des nombre d’emails envoyés depuis chaque IP des serveurs d’usurpateurs et autres.

Generate JSON FILE
Toutes les (n) secondes pour le mois en cours ou une seule fois pour les mois d’avant.
Execution de la fonction en bas de page/script PHP (ligne 1613)

Note de Moi-même du 20220621 : Pour infos - le bout de code, que j’ai ajouté hier, créait ce(s) fichier(s) https://www.zw3b.site/var/dmarc/dmarc_stats-mail_zw3b_net-202206.json que l’on peut stoker pour archives :wink:

Bonne soirée à vous, mesdames, messieurs.

Salutations,
Romain

2 J'aime

Pour archive - j’ajoute 2 impressions d’écran des XML de rapport DMARC.

  1. 1 fichier XML de infomaniak.com
  2. et 1 autre fichier XML de google.com

Chez infomaniak - ils ne retournent pas l’auth_result sur DKIM - seulement sur les SPF - Ils retournent seulement la policy evaluated à « pass » - J’ai bien DKIM (configuré et valide)

NdMoi-même : J’ai remarqué cela en voyant sur le tableau HTML ci-joint de mes rapports DMARC.

Les XML :
dmarc-xml-exemple-google

dmarc-xml-exemple-infomaniak

Les tables :
dmarc-mytable-exemple-google

dmarc-mytablel-exemple-infomaniak

Je trouvais cela bien d’analyser le fichier XML en vérifiant - l’auth_result puis la policy_evalued. C’est chiant :wink: !
Cà doit être leur politique de réception d’emails chez infomaniak - Pour le moment, ils ne doivent pas vérifier le protocol DKIM - tout simplement ou pas - Et, valident la politique DKIM - Bizarre :thinking:

:confused:

NdMoi-même 15h40 : J’ai mis à jour le PHPSource :wink: :laughing: pour afficher « la value auth_result null qui n’existe pas » :slight_smile: :rofl: C’est mieux et on comprend mieux :wink: :crazy_face:

PS : J’ai fais pareil pour les SPF - c’est toujours mieux de retourner ‹ null › s’il n’y a pas de valeur (et ‹ 0 › si elle a échouée).

NdMoi-même 20220624 : J’ai fais un « Mise À Jour » du fichier PHPSource avec « une constante » File identification name (mail server name) pour les JSON files :slight_smile:

Salutations,
Romain.

2 J'aime

NdMoi-même : Ajout du 20220624 - Optimisation du script BASH par @PengouinPdt.

:wink:

Merci. Bonne journée.

1 J'aime