IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

ping d'un server smtp


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Par défaut ping d'un server smtp
    Bonjour,

    je code un script python3 sous linux debian qui doit vérifier la validité d'un email. J'en suis au stade où je dois vérifier si le server smtp est bien fonctionel.

    Je récupère bien le(s) server(s) smtp de mon domaine mail, et je veux juste le pinger pour voir si le server est bien OK.

    Sauf que j'obtiens :

    39 packets transmitted, 0 received, 100% packet loss, time 38916ms
    Ma question est du coup : comment vérifier la validité d'un server smtp ?

    si besoin je peux vous fournir mon code mais c'est en phase de construction donc c'est un peu bordélique pour l'instant.

    Merci.

  2. #2
    Membre Expert Avatar de Ti-Slackeux
    Homme Profil pro
    Robotique
    Inscrit en
    Août 2007
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Robotique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 095
    Par défaut
    Bonjour,

    J'ai un gros doute avec le ping.
    L'hôte, genre mon serveur.fr, peut le pas répondre au ping.
    Ceci étant rien ne l'empêche d'écouter sur les ports mail configurés.
    Et une réponse au ping ne signifie pas que le serveur mail soit OK.
    Du coup un telnet ou un openssl serait peut-être plus judicieux non ?

    hth,

  3. #3
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Par défaut
    Salut,

    alors ping j'ai laissé tombé, j'utilise la lib python3 aismtplib.

    J'arrive a testé la connection au server smtp, mais ça me renvoies un timeout, j'ai pourtant bien la bonne adresse du smtp.

    je vous donne mon code là où j'en suis, et je retourne bucher le truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    async def find_smtp_server() :
    	with open("emails.txt") as file :
    		for ligne in file :
    			fai = ligne.split("@", 1)
    			print(fai[1])
     
    			smtp = subprocess.run(["host", "-t", "mx", fai[1].replace("\n", "")], capture_output=True, text=True)
    			#print(smtp)
     
    			for line in smtp.stdout.splitlines():
    				if "mail is handled by" in line:
    					smtp = line.split()[-1].rstrip(".")
    					print(smtp)
    	try:
    		smtp_server = aiosmtplib.SMTP(hostname=smtp, port=25, timeout=10)
    		print(f"Tentative de connexion ...")
    		await smtp_server.connect()
     
    		print("Connexion SMTP réussie ✅")
    		print("Réponse du serveur:", smtp.last_helo_response)
     
    		await smtp_server.quit()
     
    	except Exception as e:
    		print("Erreur lors du test SMTP ❌")
    		print(e)
     
    	file.close()
    le code n'est certainement pas parfait, c'est normal je tatone.

    edit: je crois que je pourrais plus tester le server smpt j'ai eu ça comme un retour :

    (550, 'opmta1mti35nd1 smtp.orange.fr zbaXvsfauKFQS Adresse IP source bloquee par Abusix. IP blocked by Abusix,

  4. #4
    Membre Expert Avatar de Ti-Slackeux
    Homme Profil pro
    Robotique
    Inscrit en
    Août 2007
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Robotique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 095
    Par défaut
    sous linux ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    import subprocess
    import aiosmtplib
    import asyncio
     
    async def find_smtp_server():
     
        with open("emails.txt") as file:
     
            for ligne in file:
     
                domaine = ligne.strip().split("@", 1)[1]
                print("Domaine:", domaine)
     
                result = subprocess.run(
                    ["host", "-t", "mx", domaine],
                    capture_output=True,
                    text=True
                )
     
                mx_server = None
     
                for line in result.stdout.splitlines():
                    if "mail is handled by" in line:
                        mx_server = line.split()[-1].rstrip(".")
                        print("MX:", mx_server)
                        break
     
                if not mx_server:
                    print("Pas de MX trouvé")
                    continue
     
                try:
     
                    smtp_server = aiosmtplib.SMTP(
                        hostname=mx_server,
                        port=25,
                        timeout=10
                    )
     
                    print("Tentative de connexion ...")
     
                    await smtp_server.connect()
     
                    print("Connexion SMTP réussie ✅")
                    print("Réponse:", smtp_server.last_helo_response)
     
                    await smtp_server.quit()
     
                except Exception as e:
     
                    print("Erreur SMTP ❌")
                    print(e)
     
    asyncio.run(find_smtp_server())
    Les lignes du fichiers emails.txt sont du type

    hth,

  5. #5
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Par défaut
    Avec le code ci-dessus j'ai toujours un timeout en retour.

    Peut être dois je ouvrir le port 25 ? je sais pas.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 441
    Par défaut
    Bonjour,

    Pour une adresse email, tu peux vérifier si la syntaxe est correcte, si son mx existe mais au-dela tu auras souvent des incertitudes, comme des serveurs qui ne répondent pas, ou te disent toujours que l'adresse existe ou toujours que l'adresse n'existe pas.

    sinon, il existe, à priori, des package tout prêt comme email-validator...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quel server smtp + pop + admin
    Par simoelasimo dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 22/04/2011, 09h16
  2. comment déclarer un server smtp
    Par manu7607 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/08/2009, 14h51
  3. Server SMTP Valide
    Par alaa_85 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/11/2007, 16h40
  4. Faut-il un server smtp?
    Par Jidefix dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 11/05/2007, 12h09
  5. Installation du server smtp sous win 2003
    Par ChristopheOce dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 11/10/2006, 08h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo