Information Gatheringsmtpusernameenumerationvrfyexpnrcpt

smtp-user-enum

smtp-user-enum is a username guessing tool for SMTP services. It uses VRFY, EXPN, or RCPT TO methods to check for valid usernames on target servers.

Description

smtp-user-enum is designed primarily for use against the default Solaris SMTP service but works with other SMTP implementations. It enumerates valid usernames by sending specific SMTP commands that reveal whether a user exists. This tool is useful in penetration testing to identify valid accounts on mail servers before attempting further attacks like brute-force or phishing.

The tool supports multithreaded operation with configurable worker processes and can handle single targets or lists of hosts and usernames. It can also append domains to usernames to guess full email addresses, making it versatile for both username and email enumeration scenarios.

Use cases include reconnaissance during network pentests, especially when targeting mail servers that have VRFY or EXPN enabled, which are often disabled on hardened systems.

How It Works

The tool connects to the SMTP service on TCP port 25 and uses one of three methods: VRFY (verify user), EXPN (expand mailing list), or RCPT TO (recipient validation during SMTP transaction). It sends these commands for each username against the target(s), interpreting responses to determine if the user exists. Multiple worker processes handle parallel queries with configurable timeouts. For RCPT TO mode, it uses a MAIL FROM address to initiate the transaction. Domain appending transforms usernames into email addresses for validation.

Installation

bash
sudo apt install smtp-user-enum

Flags

-m nMaximum number of processes (default: 5)
-M modeMethod to use for username guessing EXPN, VRFY or RCPT (default: VRFY)
-u userCheck if user exists on remote system
-f addrMAIL FROM email address. Used only in "RCPT TO" mode (default: [email protected])
-D domDomain to append to supplied user list to make email addresses (Default: none)

Examples

Uses VRFY method to check if user 'root' exists on target 192.168.1.25
smtp-user-enum -M VRFY -u root -t 192.168.1.25
Uses VRFY against a file of usernames on single target
smtp-user-enum -M VRFY -U users.txt -t 10.0.0.1
Uses EXPN to check single user 'admin1' on target
smtp-user-enum -M EXPN -u admin1 -t 10.0.0.1
Uses RCPT against username file and target file
smtp-user-enum -M RCPT -U users.txt -T mail-server-ips.txt
Uses EXPN with domain append to guess emails like user@example.com
smtp-user-enum -M EXPN -D example.com -U users.txt -t 10.0.0.1
Displays help and usage information
smtp-user-enum -h
Updated 2026-04-16kali.org ↗