Vérifier si le SMTP d'un email est valide chez Gmail


#1

Bonjour,

Pour mon premier message, je commence par quelque chose d’assez technique. Je suis en train de faire un générateur d’email sur la base d’un nom et prénom d’utilisateurs récupérer sur Linkedin.

Mon objectif est de tester si le SMTP est valide sur plusieurs domaine dont Gmail. Comme techno de base j’utilise j’utilise Node.js.

Savez-vous s’il existe une librairie NPM spécifique à Gmail, car je ne parviens pas à le tester. Et l’API de base ne fourni pas fonctionnalité pour tester si une adresse email est valide ou non.

Merci pour votre aide ou idées :slight_smile:


#2

Bonsoir,

Je comprends ce que tu essayes de faire, néanmoins saches qu’il ne s’agit malheureusement pas d’une technique fiable.

La raison en est toute simple, certains providers / serveur SMTP sont configurés pour contrer les pings de type “mail valide”, de telle sorte qu’en testant ces SMTP ils répondront toujours par une réponse positive pour l’email en cours de test, alors même que celui-ci n’existe pas.

J’imagine que des serveurs SMTP de chez Google ou autres grands du web, sont extrêmement bien protégés contre les techniques comme celle que tu tentes de mettre en place.


#3

Oui, j’ai remarqué que le test était toujours valide sur certain smtp.


#4

pour tester sur node.js.
Je l’avais fait il y a longtemps:

var dns = require(‘dns’);
dns.resolveMx(domain, function(err, addresses) {
…smtp check
});

Pour le smtp check, je crois que j’avais utilisé:
https://www.npmjs.com/package/smtp-client
ce qui donne:
import {SMTPClient} from ‘smtp-client’;

let s = new SMTPClient({
host: ‘mx.domain.com’,
port: 25
});

(async function() {
await s.connect();
await s.greet({hostname: ‘mx.domain.com’}); // runs EHLO command or HELO as a fallback
await s.authPlain({username: ‘john’, password: ‘secret’}); // authenticates a user
await s.mail({from: ‘from@sender.com’}); // runs MAIL FROM command
// ici tu loop sur les emails a tester (par contre pas plus de 25 par batch de mémoire)
await s.rcpt({to: ‘to@recipient.com’}); // runs RCPT TO command (run this multiple times to add more recii)

await s.quit(); // runs QUIT command
})().catch(console.error);


#5

Il te faut également un serveur avec une ip clean hors de toutes blacklists (il faut oublier aws, digital ocean and co …).

Si possible une ip d’un serveur ayant été défini comme ayant déjà un flux conséquent d’envoi d’email.


#6

Ca c’est cool, perso j’étais parti sur un script shell :

#!/usr/bin/env bash

RESULT=$(
(
    sleep 1
    echo "MAIL FROM: <$1>"
    sleep 1
    echo "RCPT TO: <$2>"
    sleep 1
    echo "QUIT"
) | telnet HOST 25
)

IS_EMPTY=$(echo "$RESULT" | grep "Recipient ok")

if [[ $IS_EMPTY == "250 2.1.5 Recipient ok" ]]
then
    exit
fi

exit 1

Mais ton script est mieux je vais tester


#7

Un moyen simple pour savoir si un un serveur est configuré en “accept all”, c’est de générer un email aléatoire sur le domaine et voir s’il est deliverable. Si oui, c’est que le serveur accepte tout et les vérifications ont peu d’utilité.

Je suppose que si tu le développes c’est que tu préfère le faire toi même, mais je poste quand même ça là, sait-on jamais :slight_smile:


Team : CamilleBriceJulienVivianBorisXavierSteven.
Follow @growthhackingfr