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

Tags: #<Tag:0x00007f63f3399aa0> #<Tag:0x00007f63f33999d8> #<Tag:0x00007f63f33998c0>

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 répertoire ./dmarc/
# Executer le script depuis le sous-répertoire ./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.

NdMoi-même 20221003 : J’ai créé un « tar.gz » des « dmarc-script-bash-to-unzip-range-files » avec les 3 fichiers pour unziper :slight_smile:

# tar xzvfp dmarc-script-bash-to-unzip-range-files.tar.gz
dmarc-file-dzip.sh
extract-dmarc-file.bash
extract-dmarc-file-vs2.bash

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

Histoire de vous prévenir :slight_smile:

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

J’avais une « erreur » de génération du fichier JSON qui ne se créait pas une fois le mois passé - donc il manquait des jours de stats - par exemple si j’étais passé sur la page DMARC le 25 du mois.

C’est ce que je voulais faire (et qui est toujours actif) pour pas que le fichier JSON soit régénéré à chaque chargement de page du tableau HTML des rapports DMARC - des mois précédents.

J’ai ajouté une vérification pour que le fichier soit régénéré même le mois d’après (pour avoir les stats du mois complet).

PS : J’ai laissé en commentaire la ligne 531 : qui génère le fichier à chaque fois et modifié la vérification en ligne 535.

Note de Moi-même : L’intégration finale du tableau HTML des rapports DMARC sur mon site web est cette page écrite en Français | English | Español | العربية

Bon dimanche à vous.

Salutations,
Romain

1 J'aime

Bonjour,

Pour agrémenter ce code PHPsource qui représente la visualisation des rapports DMARC mensuel + création d’un fichier JSON des statistiques mensuel.

NdMoi-même 20220710 : J’ai modifié le code PHPsource avec une demande de FQDN (Fully Qualified Domain Name) dans la visualisation des rapports mensuel - Pour avoir leur FQDN du mois courant - au cas où ils changeraient de nom - tous les mois - ou qu’ils couperaient leur serveur :wink:

En plus, j’ai créais ce code PHPsource d’un autre tableau HTML d’analyse globale des rapports DMARC qui représente les statistiques globales des serveurs mail non-authorisés en erreur sur toute durée depuis la mise en place de DMARC .

Note de Moi-même 20220709 18h05 : Archives de fichiers GeoIP*.dat à mettre dans le répertoire /usr/share/GeoIP/ - Sauvegarder votre répertoire s’il contient déjà des fichiers :wink:

Dézipper le fichier comme cela : tar -xvf /home/orj/GeoIP-LAB3W.tar.gz -C /root/ pour le décompresser dans le répertoire /root/.

Je ne trouve pas de fichier GeoIPISP.dat valide - On peut le générer avec la commande /usr/lib/geoip/geoip-generator du paquet geoip-bin je crois depuis un CSV ? Comment-faire ?

Bonne fin de journée, bon weekend.

Salutations,
Romain

Bonjour, j’ai ajouté une variable à ce code PHPsource d’un autre tableau HTML d’analyse globale des rapports DMARC - La variable « ?get=json » que j’ai bloqué (lignes 217-382) à la sortie (avec le protocole de partage de ressources HTTP CORS) à un, deux client(s) - Client : qui représente un site web ; qui souhaiterait afficher la ressource du site web serveur, propriétaire de la donnée, de la ressource sur le sien !

En test - développement…

Donc, ci-joint un essaie, le code PHPsource d’une API cliente RESTful pour lire le fichier au format JSON pour afficher la ressource serveur sur un autre site web (le client) - En Cross-origin resource sharing - par exemple d’ici - C’est en JS (JavaScript) - je n’aime pas trop . Il faudrait faire un client en PHP curL sur requête POST ce serait mieux - bien gérer l’authentification du client en POST toujours, le jeton (token) d’accès, le refresh etc… :wink:


API (Application Programming Interface ) est un ensemble normalisé de classes, de méthodes, de fonctions et de constantes qui sert de façade par laquelle un logiciel offre des services à d’autres logiciels.

CORS (Cross-Origin Resource Sharing) (littéralement « partage de ressources entre origines multiples ») est un mécanisme qui permet à des ressources restreintes d’une page web d’être récupérées par un autre domaine extérieur au domaine à partir duquel la première ressource a été servie.

RESTful (Representational State Transfer) est un style d’architecture logicielle définissant un ensemble de contraintes à utiliser pour créer des services web.


Bonne soirée - du 13 juillet - Faites pas trop les imbéciles !

Pour en revenir au sujet :

Personne n’a de réponse à me donner - sur cette analyse / question / pensée ?

Me serais-je fais piraté !? Comment-faire pour savoir ? D’où cela peut t’il venir !?

A vos humbles avis, votre opinion ?

Merci :slight_smile: :innocent:

Salutations,
Romain

Bonjour,

J’écris une API client PHP pour que tout le monde puisse lire et se servir des données d’analyse suite aux rapports DMARC que je reçois régulièrement.

Si cela vous intéresse :

La classe PHP Source « zw3bApiClient.class.php » à copier/coller sur votre serveur Web - exemple intégration par ici :wink:

C’est en développement côté serveur et client - çà va prendre du temps de bien tout sécuriser.

J’ai ajouté sur l’API serveur une authentification et ai créé un compte BETA-TESTEURS - qui peut utiliser l’application depuis n’importe quelle origine de sites/serveurs Web - pour qui, pour que vous puissiez récupérer le(s) JSON « normalement/facilement/fonctionnellement ».

Bonne journée, bon courage, bonnes vacances.

Note de Moi-même :

Qui me donnerait une URL de ses rapports d’analyse - en se créant un serveur API JSON de son côté ? Pour cumuler les « statistiques des adresses IP des serveurs mails d’usurpateurs de chacun de nous » :crazy_face: Et faire, donc, une grande base de données internationale d’usurpateurs d’identité :confused: La première :star_struck: -

Comme OpenRDAP en JSON / IP …

Infos hors sujet :)

Si vous n’étiez pas au courant, je me suis fait une Class PHP que j’ai partagé y’a quelques temps - pas très belle :wink: - Doc ici et rendu ici :slight_smile:

Techniquement, vu que je n’usurpe personne, vous ne devriez pas trouver mes IPs SPF dans vos journaux/rapports DMARC. N’est-ce pas ? J’en suis sûr :joy:

Salutations,
Romain

J’en ai marre que Gmail n’accepte pas mes mails (ou 1 fois sur 10) !!! Sniff !!


This is the mail system at host mail.zw3b.net.

I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                       The mail system

address_mail@gmail.com: host gmail-smtp-in.l.google.com[142.251.16.26] said:
550-5.7.1 [158.69.126.137 18] Our system has detected that this
message is 550-5.7.1 likely suspicious due to the very low reputation of
the sending IP 550-5.7.1 address. To best protect our users from spam, the
message has been 550-5.7.1 blocked. Please visit 550 5.7.1
Why has Gmail blocked my messages? - Gmail Help for more information.
6-20020a05621420e600b004737906ac89si6565856qvk.438 - gsmtp (in reply to end
of DATA command)


Reporting-MTA: dns; mail.zw3b.net
X-Postfix-Queue-ID: 1DC8A5650CC
X-Postfix-Sender: rfc822; address_mail@lab3w.fr
Arrival-Date: Mon, 8 Aug 2022 14:02:13 +0200 (CEST)

Final-Recipient: rfc822; address_mail@gmail.com
Original-Recipient: rfc822;address_mail@gmail.com
Action: failed
Status: 5.7.1
Remote-MTA: dns; gmail-smtp-in.l.google.com
Diagnostic-Code: smtp; 550-5.7.1 [158.69.126.137 18] Our system has
detected that this message is 550-5.7.1 likely suspicious due to the very
low reputation of the sending IP 550-5.7.1 address. To best protect our
users from spam, the message has been 550-5.7.1 blocked. Please visit 550
5.7.1 Why has Gmail blocked my messages? - Gmail Help for more information.
6-20020a05621420e600b004737906ac89si6565856qvk.438 - gsmtp


Return-Path: address_mail@lab3w.fr
Received: from localhost (ip6-localhost [IPv6:::1])
by mail.zw3b.net (Postfix) with ESMTP id 1DC8A5650CC
for address_mail@gmail.com; Mon, 8 Aug 2022 14:02:13 +0200 (CEST)
Received: from mail.zw3b.net ([IPv6:::1])
by localhost (mail.zw3b.net [IPv6:::1]) (amavisd-new, port 10032)
with ESMTP id LxM5Uzfd3R-t for address_mail@gmail.com;
Mon, 8 Aug 2022 14:02:07 +0200 (CEST)
Received: from localhost (ip6-localhost [IPv6:::1])
by mail.zw3b.net (Postfix) with ESMTP id 75DC45650D0
for address_mail@gmail.com; Mon, 8 Aug 2022 14:02:07 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.zw3b.net 75DC45650D0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lab3w.fr;
s=D169D816-836E-11EC-0000-F2FADF2C65F6; t=1659960127;
bh=OZ/pG1T0eII60+331pet61zTvvsJYp0uhNIl8eSs/po=;
h=Message-ID:Date:MIME-Version:From:To;
b=ooaHSxqleiN8i1eX8wgyD3Ckqaxut7+BRq05YN3zfptBP7plBxzYhAdV0hZjZLbsP
JCAMeiZlD/dJExwo5VEDAT3r5QvwQmnR2rjBw5/TOOMN63bi/Y6INR64z9DXQNu+aC
ywCNCYXW+Q0BJWBKIUoGCZLs581RPPT3MpzzFJOJ/fpU2wSZln7+8eP1AUWDCyswZ9
4HeNzFx3uNU2/lF3iJegTTKVjqREZyfjh2hjy8rDH2Fpeu7Ud/QL5Hf0BYSyYj0xe5
Q7vK9TjaBCzZVM3wkulufb9phpxUpYhU9j4dL2bVOLGZ9jZ3UHdGg76SIG60Za3WJW
dLKtoVFY9Rmyw==
X-Virus-Scanned: amavisd-new at zw3b.net
Received: from mail.zw3b.net ([IPv6:::1])
by localhost (mail.zw3b.net [IPv6:::1]) (amavisd-new, port 10026)
with ESMTP id 8sIoKCqiUQaQ for address_mail@gmail.com;
Mon, 8 Aug 2022 14:02:06 +0200 (CEST)
Received: from [IPV6:2607:5300:60:9389:58:eeee:ffdd:1678] (unknown [IPv6:2607:5300:60:9389:58:eeee:ffdd:1678])
by mail.zw3b.net (Postfix) with ESMTPSA id 803AD5650CC
for address_mail@gmail.com; Mon, 8 Aug 2022 14:01:27 +0200 (CEST)
Content-Type: multipart/alternative;
boundary="------------f8qCs8gsFLfKH6nGxN7lPWzX"
Message-ID: 4cfabf3b-dbe6-a456-ffb4-fe55d02c2508@lab3w.fr
Date: Mon, 8 Aug 2022 14:00:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Content-Language: fr
From: « O.Romain.Jaillet-ramey » address_mail@lab3w.fr
To: address_mail@gmail.com
Subject: Solution pour « File Transfert » - Ile Maurice

:upside_down_face:

J’ajoute les specs DKIM RFC4871 !

DomainKeys Identified Mail (DKIM) Signatures

Romain !

C’est quoi que tu ne comprends pas dans cette ligne ?

Problème de DNS sur le sous-domaine pour le mail …

Après en étant listé chez UCEProtect … pas de bol c’est rat pour faire délister si t’arrive en niv2 chez eux, mais c’est sans doute l’AS de ton provider qui est listé et là ce sera plus compliqué …

Merci @Clochette pour cette réponse.

Je comprend que mon serveur mail a une mauvaise réputation.

Je vois que j’ai une erreur de DNS Record :confused: sur le mx:mail.zw3b.net et pourtant - que faire de plus ?

dig MX zw3b.net @8.8.8.8 +short
10 mail.zw3b.net.

dig AAAA mail.zw3b.net @8.8.8.8 +short
2607:5300:60:9389:17:4:0:1

dig A mail.zw3b.net @8.8.8.8 +short
158.69.126.137

Oui :confused: la galère !

J’ai remarqué aussi que tout le bloc IPv6::/32 du mon FAI OVH est black-listé : ce block 2607:5300:0:0:0:0:0:0/32

CF :

Votre adresse IP est dans une plage qui a été bloquée sur tous les wikis de la Fondation Wikimédia.

Le blocage a été réalisé par Trijnstel (meta.wikimedia.org). Le motif fourni est Open proxy: abused proxy by LTAs and spambots - should you be affected by this block, please email stewards (at) wikimedia (dot) org.

Début du blocage : 1 juin 2018 à 09:49
Expiration du blocage : 1 juin 2023 à 09:49

Oui mais en y regardant bien c’est surtout les Ips d’OVH qui sont douteuses …

Mettre un champs MX sur le record utilisé pour l’envoi de mail …

 ab  ~  dig -t any mail.zw3b.net @8.8.8.8 +short
158.69.126.137
A 7 3 3600 20220908040421 20220809031223 17360 zw3b.net. Lw2Qsu4/r0nzjMEnmi7+Moxkko5oI9qURDJKAA7kpZ/nE78+k75WTck2 y3kUS6EU44k9339QJXuyXP9KdI2+izVPkQpGJ4z7oCZxumQTQbVHa2dN x1Ez6laV4MDi/fi33G93PLLrCZIEgwEh7txN2ZfmZaRFGzRV9uhCA0Kp iRLXbrHLOA+E5HEBTu9R9Cs0StUrH9QYmqIQyGXS5P0QMNz2Oh/L7frc Bf5HXylloc72HiplcdMIwbOzC1pKNYkHqJpUpYMkMYgitADGl5YQMtAP D1YeII70nJUydNZ/5fVw+FCKfk6BGN2OY1DEoGFWjs7q/SCGBqiVTqPP zT3e3w==
2607:5300:60:9389:17:4:0:1
AAAA 7 3 3600 20220908040507 20220809031223 17360 zw3b.net. dpcMXbS7PlO8pPV1ylMjrv4eMzjURpGMePWwnp+HGihFFt+8z1jmbahU 5Avnfv+1FyQ95SrYPlekOAzdY0KRuzZl6M0gZgX9pItUoPxKEhJ1yE/3 8dLuM+E9e+KAlm2zaI4h1Q2Cjzg+16GPgh5TKHIGK6/eVMqqGregCReK yhL+Kq3UKrsZs/yty2FyZJemv/6pUmT6DpUqxSQwdarwmwKt3mQPAd+K R0SIPxgfVLrWgkqM12XezRZcwiHsHYQwcr3Z+d4crfKBsDmmrRybns8I Dgefbz+sdwxlJ3Qf2MZGuwGqtXOrAhH4KSlUYFeP3EmjBWeU6UDdAZLi a4u/VQ==

Le champs MX ne doit pas être positionné sur ton domaine mais sur ton sous-domaine si c’est lui qui émet les mails et porte le reverse DNS en acord avec le hostname qui envoi les mails.

En gros ton MX semble (c’est même sûr) positionné sur le mauvais enregistrement DNS.

Le bloc IPV4 est listé chez UCE Protect … change de provider pour les mails.