smtp-user-enum

Outil d'énumération d'utilisateurs SMTP. Utilise les commandes VRFY, EXPN et RCPT TO pour énumérer des adresses e-mail et pseudonymes valides sur des serveurs SMTP sans authentification. SMTP user enumeration tool. Uses VRFY, EXPN, and RCPT TO commands to enumerate valid email addresses and usernames on SMTP servers without authentication.

↗ https://pentestmonkey.net/tools/user-enumeration/smtp-user-enum

Overview

smtp-user-enum exploits SMTP server commands (VRFY, EXPN, RCPT TO) to verify whether usernames/email addresses exist on a mail server. Many SMTP servers respond differently to valid vs. invalid addresses, enabling user enumeration without authentication.

Basic Usage

Enumerate with VRFY method

smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1

Enumerate with RCPT method

smtp-user-enum -M RCPT -U users.txt -t 10.10.10.1

Enumerate with EXPN method

smtp-user-enum -M EXPN -U users.txt -t 10.10.10.1

Test single username

smtp-user-enum -M VRFY -u admin -t 10.10.10.1

SMTP Methods

# VRFY — directly asks if user exists
# EHLO test.com
# VRFY username
# 250 = exists, 550 = doesn't exist

# EXPN — expand mailing list
# EXPN username
# 250 = user/list exists

# RCPT TO — send test email (most widely supported)
# MAIL FROM: fake@fake.com
# RCPT TO: target@target.com
# 250 = accepted (user exists), 550 = rejected

Username Lists

Use built-in username lists

smtp-user-enum -M VRFY -U /usr/share/wordlists/metasploit/unix_users.txt -t 10.10.10.1

Common username list

smtp-user-enum -M VRFY -U /usr/share/seclists/Usernames/top-usernames-shortlist.txt -t 10.10.10.1

Custom list from OSINT

smtp-user-enum -M RCPT -U discovered_users.txt -t mail.target.com

Options

Set port (default: 25)

smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -p 25

Set EHLO domain

smtp-user-enum -M RCPT -U users.txt -t 10.10.10.1 -D target.com

Verbose output

smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -v

Multiple threads

smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -w 20

Timeout

smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -T 10

Manual Testing

# Connect and test manually
nc -nv 10.10.10.1 25
EHLO test.com
VRFY root
VRFY admin
VRFY nobody

# For RCPT method:
EHLO test.com
MAIL FROM:<fake@fake.com>
RCPT TO:<admin@target.com>

Tips

  • RCPT TO is the most reliable method — works even when VRFY/EXPN are disabled
  • Use SMTP enumeration in combination with OSINT usernames for targeted attacks
  • Discovered usernames feed directly into SSH/FTP brute-force with hydra
  • Some servers respond to VRFY with 252 (ambiguous) regardless — try RCPT
  • Port 587 (submission) may also be enumerable with the same techniques
Help / Man page
smtp-user-enum [options]

-M METHOD   Method: VRFY, EXPN, or RCPT (default: VRFY)
-u USER     Single username to test
-U FILE     Username list file
-t HOST     Target host
-p PORT     SMTP port (default: 25)
-D DOMAIN   Domain for RCPT TO and EHLO
-w N        Number of threads (default: 5)
-T N        Timeout in seconds (default: 5)
-v          Verbose

Vue d’ensemble

smtp-user-enum exploite les commandes de serveur SMTP (VRFY, EXPN, RCPT TO) pour vérifier si des pseudonymes/adresses e-mail existent sur un serveur de messagerie. De nombreux serveurs SMTP répondent différemment aux adresses valides et invalides, ce qui permet une énumération d’utilisateurs sans authentification.

Utilisation de base

# Énumérer avec la méthode VRFY
smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1

# Énumérer avec la méthode RCPT
smtp-user-enum -M RCPT -U users.txt -t 10.10.10.1

# Énumérer avec la méthode EXPN
smtp-user-enum -M EXPN -U users.txt -t 10.10.10.1

# Tester un seul pseudonyme
smtp-user-enum -M VRFY -u admin -t 10.10.10.1

Méthodes SMTP

# VRFY : demande directement si l'utilisateur existe
# EHLO test.com
# VRFY username
# 250 = existe, 550 = n'existe pas

# EXPN : développe une liste de diffusion
# EXPN username
# 250 = l'utilisateur/la liste existe

# RCPT TO : envoie un e-mail de test (le plus largement supporté)
# MAIL FROM: fake@fake.com
# RCPT TO: target@target.com
# 250 = accepté (l'utilisateur existe), 550 = rejeté

Listes de pseudonymes

# Utiliser les listes de pseudonymes intégrées
smtp-user-enum -M VRFY -U /usr/share/wordlists/metasploit/unix_users.txt -t 10.10.10.1

# Liste de pseudonymes courants
smtp-user-enum -M VRFY -U /usr/share/seclists/Usernames/top-usernames-shortlist.txt -t 10.10.10.1

# Liste personnalisée issue d'OSINT
smtp-user-enum -M RCPT -U discovered_users.txt -t mail.target.com

Options

# Définir le port (défaut : 25)
smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -p 25

# Définir le domaine EHLO
smtp-user-enum -M RCPT -U users.txt -t 10.10.10.1 -D target.com

# Sortie verbeuse
smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -v

# Threads multiples
smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -w 20

# Timeout
smtp-user-enum -M VRFY -U users.txt -t 10.10.10.1 -T 10

Test manuel

# Se connecter et tester manuellement
nc -nv 10.10.10.1 25
EHLO test.com
VRFY root
VRFY admin
VRFY nobody

# Pour la méthode RCPT :
EHLO test.com
MAIL FROM:<fake@fake.com>
RCPT TO:<admin@target.com>

Conseils

  • RCPT TO est la méthode la plus fiable : fonctionne même quand VRFY/EXPN sont désactivés
  • Utiliser l’énumération SMTP en combinaison avec des pseudonymes issus d’OSINT pour des attaques ciblées
  • Les pseudonymes découverts alimentent directement le brute-force SSH/FTP avec hydra
  • Certains serveurs répondent à VRFY avec 252 (ambigu) quel que soit le cas : essayer RCPT
  • Le port 587 (submission) peut aussi être énumérable avec les mêmes techniques
Aide / Page de manuel
smtp-user-enum [options]

-M METHOD   Method: VRFY, EXPN, or RCPT (default: VRFY)
-u USER     Single username to test
-U FILE     Username list file
-t HOST     Target host
-p PORT     SMTP port (default: 25)
-D DOMAIN   Domain for RCPT TO and EHLO
-w N        Number of threads (default: 5)
-T N        Timeout in seconds (default: 5)
-v          Verbose