Skip to content

ByteCodeSecure/SMTP-Checker-GUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMTP Checker GUI


⚠️ AVISO LEGAL / LEGAL DISCLAIMER

ES: Esta herramienta es código real diseñado para verificar credenciales SMTP. Se publica exclusivamente para fines educativos, investigación de seguridad autorizada, auditorías de infraestructura propia y entornos CTF. Usar esta herramienta para acceder a cuentas de terceros sin autorización explícita es ilegal bajo leyes como la CFAA (EE.UU.), Computer Misuse Act (UK) y equivalentes en todo el mundo. El autor no asume responsabilidad por usos indebidos.

EN: This tool contains real code designed to verify SMTP credentials. It is published exclusively for educational purposes, authorized security research, audits of infrastructure you own, and CTF environments. Using this tool to access third-party accounts without explicit authorization is illegal under laws such as the CFAA (USA), Computer Misuse Act (UK), and equivalents worldwide. The author assumes no liability for misuse.


🌐 Language / Idioma


Español

Tabla de Contenidos

  1. Descripción General
  2. Características
  3. Estructura del Proyecto
  4. Requisitos del Sistema
  5. Instalación
  6. Guía de la Interfaz
  7. Formatos de Archivo de Entrada
  8. Uso Paso a Paso
  9. Resultados y Archivos de Salida
  10. Lógica de Verificación SMTP
  11. Configuración Interna
  12. Cómo Funciona Técnicamente
  13. Solución de Problemas

Descripción General

SMTP Checker GUI es una aplicación de escritorio multiplataforma construida con Python y PySide6 (Qt6) que verifica la validez de credenciales de correo electrónico mediante intentos reales de autenticación contra servidores SMTP. La aplicación procesa listas de credenciales en lote con 50 hilos concurrentes, muestra resultados en tiempo real y organiza los hallazgos en archivos de salida estructurados.

Esta herramienta está diseñada para:

  • Administradores de sistemas que auditan cuentas de correo en su propia infraestructura
  • Investigadores de seguridad que estudian el comportamiento de servidores SMTP
  • Profesionales de seguridad que realizan auditorías autorizadas de correo corporativo
  • Desarrolladores que prueban configuraciones SMTP de sistemas propios
  • Entornos CTF y laboratorios de seguridad

Características

Característica Detalle
GUI moderna Tema oscuro con acentos azules, construida con PySide6 (Qt6)
2 modos de entrada EMAIL:PASS y SERVER|PORT|USERNAME|PASS
50 hilos concurrentes ThreadPoolExecutor para procesamiento masivo rápido
Auto-detección de servidor Prueba automáticamente prefijos mail., smtp., email.
Multi-puerto Prueba puertos 465 (SSL), 587 (STARTTLS) y 25
Log en tiempo real Visualización en vivo de cada intento con estado VÁLIDO/INVÁLIDO
Resultados organizados Carpetas con timestamp, archivos por servidor, resumen estadístico
Barra de progreso Indicador visual durante la verificación
Estadísticas en vivo Contadores de válidos/inválidos actualizados en tiempo real
Lanzador Windows run.bat para inicio con un clic

Estructura del Proyecto

SMTP_GUI/
├── main.py           # Aplicación principal — GUI + motor de verificación SMTP
├── requirements.txt  # Dependencias Python (PySide6, colorama, easygui)
├── run.bat           # Lanzador Windows (doble clic para iniciar)
├── README.md         # Este archivo
├── LICENSE           # Licencia MIT
└── Result/           # Directorio de salida (creado automáticamente)
    └── MM-DD-YY_HH-MM-SS/
        ├── [servidor].txt   # Credenciales válidas por servidor
        ├── _resumen.txt     # Estadísticas del escaneo
        └── _info.txt        # Metadatos de la sesión

Requisitos del Sistema

Componente Requisito
Python 3.6 o superior
PySide6 >= 6.0.0
colorama >= 0.4.4
easygui >= 0.98.0
SO Windows, Linux o macOS
Red Conexión a internet o acceso a los servidores SMTP objetivo

Instalación

Opción A — Instalación Estándar

# 1. Clonar o descargar el repositorio
git clone https://github.com/ByteCodeSecure/SMTP-Checker-GUI.git
cd SMTP-Checker-GUI

# 2. (Recomendado) Crear entorno virtual
python -m venv venv

# Activar en Windows:
venv\Scripts\activate
# Activar en Linux/macOS:
source venv/bin/activate

# 3. Instalar dependencias
pip install -r requirements.txt

# 4. Lanzar la aplicación
python main.py

Opción B — Windows Un Clic

Doble clic en run.bat

El script ejecuta automáticamente python main.py y mantiene la ventana de consola abierta para ver errores si los hay.


Guía de la Interfaz

La ventana principal (mínimo 800×600) tiene 4 pestañas:

┌─────────────────────────────────────────────────────────────────┐
│  SMTP CHECKER                                                   │
├──────────────┬─────────────────┬──────────┬────────────────────┤
│  EMAIL:PASS  │ SERVER|PORT|... │  POP3    │  IMAP              │
├──────────────┴─────────────────┴──────────┴────────────────────┤
│                                                                 │
│  Archivo:  [ ruta/al/archivo.txt              ] [Examinar]      │
│  Email:    [ tu@email.com                     ]                 │
│                                                                 │
│  ┌─ Log de Resultados ─────────────────────────────────────┐   │
│  │ [14:32:01] VÁLIDO   → smtp.dominio.com:465:user@d.com   │   │
│  │ [14:32:02] INVÁLIDO → mail.otro.com:587:user2@otro.com  │   │
│  │ [14:32:03] ERROR    → smtp.down.com: Connection timeout  │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  Válidos: [12]  Inválidos: [88]     [████████░░░░] Progreso     │
│                                                                 │
│                    [Iniciar Verificación]                       │
└─────────────────────────────────────────────────────────────────┘

Pestaña 1 — EMAIL:PASS

Acepta archivos con formato email:contraseña. La aplicación deduce automáticamente el servidor SMTP a partir del dominio del email.

Pestaña 2 — SERVER|PORT|USERNAME|PASS

Acepta archivos con servidor SMTP explícito en formato pipe. Úsala cuando ya conoces la configuración exacta del servidor.

Pestaña 3 — POP3 (no implementado)

Infraestructura de UI preparada. Actualmente muestra: "POP3 checker not implemented yet."

Pestaña 4 — IMAP (no implementado)

Infraestructura de UI preparada. Actualmente muestra: "IMAP checker not implemented yet."


Formatos de Archivo de Entrada

Pestaña 1: EMAIL:PASS

Archivo de texto plano, una credencial por línea:

usuario@dominio.com:contraseña123
otro@empresa.com:MiPass!2024
admin@miservidor.com:P@ssw0rd

Reglas:

  • Separador: dos puntos (:)
  • El dominio del email se usa para construir el servidor SMTP
  • Líneas con formato incorrecto se registran como error y se omiten
  • Las líneas en blanco se ignoran
  • Codificación: UTF-8

Pestaña 2: SERVER|PORT|USERNAME|PASS

smtp.dominio.com|465|usuario@dominio.com|contraseña
mail.empresa.com|587|admin|MiPass!2024
correo.miserver.com|25|user@server.com|clave123

Reglas:

  • Separador: barra vertical (|)
  • Exactamente 4 campos por línea
  • El puerto debe ser numérico
  • Líneas con formato incorrecto se registran y omiten

Uso Paso a Paso

Paso 1 — Preparar el Archivo de Credenciales

Crea un archivo .txt con las credenciales a verificar en el formato correspondiente a la pestaña que usarás.

Paso 2 — Abrir la Aplicación

python main.py
# O doble clic en run.bat (Windows)

Paso 3 — Seleccionar la Pestaña

Elige EMAIL:PASS o SERVER|PORT|USERNAME|PASS según tu archivo.

Paso 4 — Cargar el Archivo

Haz clic en "Examinar" y selecciona tu archivo .txt.

Paso 5 — Ingresar Email de Prueba

En el campo "Email", ingresa una dirección de correo tuya. Las verificaciones exitosas enviarán un email de prueba a esta dirección (solo si hay credenciales válidas y el servidor lo permite).

El cuerpo del email de prueba contiene: servidor|email|contraseña|puerto|SMTP RECEIVED

Paso 6 — Iniciar Verificación

Haz clic en "Iniciar Verificación". La barra de progreso se activará y el log comenzará a mostrar resultados en tiempo real:

[14:32:01] Procesando: usuario@dominio.com
[14:32:02] VÁLIDO   → smtp.dominio.com:465:usuario@dominio.com:contraseña
[14:32:03] INVÁLIDO → mail.dominio.com:587:usuario@dominio.com:contraseña
[14:32:04] ERROR    → email.dominio.com:25 → Connection timed out

Paso 7 — Revisar Resultados

Al finalizar, la aplicación muestra el resumen y los resultados se encuentran en:

Result/
└── MM-DD-YY_HH-MM-SS/

Resultados y Archivos de Salida

Todos los resultados se guardan automáticamente en Result/[MM-DD-YY_HH-MM-SS]/:

[servidor].txt — Credenciales Válidas por Servidor

Un archivo por cada servidor donde se encontraron credenciales válidas. Formato:

servidor|puerto|email|contraseña
smtp.dominio.com|465|usuario@dominio.com|contraseña123
smtp.dominio.com|465|otro@dominio.com|pass456

_resumen.txt — Estadísticas del Escaneo

=== RESUMEN DE VERIFICACIÓN ===
Fecha: 03-28-25 14:35:22
Archivo de entrada: /ruta/al/archivo.txt
Total procesados: 500
Válidos: 12
Inválidos: 451
Errores de formato: 37

_info.txt — Metadatos de la Sesión

Timestamp: 03-28-25 14:32:00
Archivo: /ruta/al/archivo.txt
Email receptor: tu@email.com

Lógica de Verificación SMTP

Pestaña 1 — Auto-detección de Servidor

Para cada credencial email@dominio.com:contraseña, la aplicación intenta 9 combinaciones (3 prefijos × 3 puertos):

Intento Servidor Puerto Protocolo
1 mail.dominio.com 465 SMTP_SSL
2 mail.dominio.com 587 SMTP + STARTTLS
3 mail.dominio.com 25 SMTP plano
4 smtp.dominio.com 465 SMTP_SSL
5 smtp.dominio.com 587 SMTP + STARTTLS
6 smtp.dominio.com 25 SMTP plano
7 email.dominio.com 465 SMTP_SSL
8 email.dominio.com 587 SMTP + STARTTLS
9 email.dominio.com 25 SMTP plano

Se detiene en el primer éxito. Si los 9 fallan, la credencial se marca como INVÁLIDA.

Comportamiento por Puerto

Puerto 465 — SMTP_SSL (SSL/TLS Directo)

smtplib.SMTP_SSL(servidor, 465, timeout=15)
server.login(usuario, contraseña)
server.sendmail(...)

Puerto 587 — SMTP con STARTTLS

smtplib.SMTP(servidor, 587, timeout=15)
server.ehlo()
server.starttls()
server.login(usuario, contraseña)
server.sendmail(...)

Puerto 25 — SMTP Plano

smtplib.SMTP(servidor, 25, timeout=15)
server.ehlo()
server.login(usuario, contraseña)
server.sendmail(...)

Timeout

15 segundos por intento de conexión. Con 50 hilos y 9 intentos por credencial, el tiempo total depende de la velocidad de los servidores.


Configuración Interna

Valores configurados directamente en main.py:

Parámetro Valor Descripción
self.host ["mail.", "smtp.", "email."] Prefijos de servidor para auto-detección
self.port [465, 587, 25] Puertos SMTP a probar
self.timeout 15 Timeout por conexión (segundos)
ThreadPoolExecutor 50 Número de hilos concurrentes
Directorio de salida Result/ Carpeta de resultados (relativa al ejecutable)

Cómo Funciona Técnicamente

Arquitectura

Hilo Principal (GUI — Qt Event Loop)
    │
    ├── Hilo de Verificación (daemon thread)
    │       │
    │       └── ThreadPoolExecutor (50 workers)
    │               │
    │               ├── Worker 1 → intento SMTP
    │               ├── Worker 2 → intento SMTP
    │               ├── ...
    │               └── Worker 50 → intento SMTP
    │
    └── Qt Signals (thread-safe)
            ├── update_log(mensaje)    → actualiza log UI
            ├── update_stats(v, i)     → actualiza contadores
            └── finished()            → indica finalización

Pipeline de Procesamiento

Archivo de entrada
      │
      ▼
┌──────────────────┐
│  Leer líneas     │  UTF-8, ignorar errores de codificación
│  + Validar       │  Verificar separador correcto (:  o  |)
└────────┬─────────┘
         │ Formato inválido → log error + continuar
         ▼
┌──────────────────┐
│  Construir lista │  Tab 1: extraer dominio → 9 combinaciones
│  de intentos     │  Tab 2: usar servidor/puerto directamente
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Enviar a        │  ThreadPoolExecutor (50 hilos)
│  thread pool     │
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Por cada        │  Conectar SMTP → Login → Enviar email prueba
│  intento:        │  Éxito: emitir update_log("VÁLIDO", ...)
│                  │  Fallo: emitir update_log("INVÁLIDO", ...)
│                  │  Error: emitir update_log("ERROR", ...)
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Guardar         │  Result/timestamp/servidor.txt
│  resultados      │  Result/timestamp/_resumen.txt
└──────────────────┘

Solución de Problemas

Problema Causa Solución
ModuleNotFoundError: PySide6 PySide6 no instalado pip install -r requirements.txt
La app no inicia en Windows Python no en PATH Reinstalar Python marcando "Add to PATH"
Todos los resultados son error Firewall bloqueando puertos SMTP Verificar que los puertos 465/587/25 estén abiertos
Resultado vacío en Result/ Ninguna credencial válida Normal — ningun servidor aceptó las credenciales
Muy lento con muchas líneas Servidores lentos + timeout 15s Normal; 50 hilos procesan en paralelo
SMTPAuthenticationError Credencial incorrecta Se registra como INVÁLIDO correctamente
ConnectionRefusedError Puerto cerrado en ese servidor Se prueba el siguiente puerto automáticamente
La GUI se congela Proceso en segundo plano activo La verificación corre en hilo separado — esperar a que termine
Archivo _info.txt incorrecto Ruta con caracteres especiales Usar rutas sin espacios o caracteres especiales


English

Table of Contents

  1. Overview
  2. Features
  3. Project Structure
  4. System Requirements
  5. Installation
  6. Interface Guide
  7. Input File Formats
  8. Step-by-Step Usage
  9. Output & Result Files
  10. SMTP Verification Logic
  11. Internal Configuration
  12. How It Works Technically
  13. Troubleshooting

Overview

SMTP Checker GUI is a cross-platform desktop application built with Python and PySide6 (Qt6) that verifies the validity of email credentials through real SMTP authentication attempts. It processes credential lists in batch using 50 concurrent threads, displays results in real-time, and organizes findings into structured output files.

This tool is designed for:

  • System administrators auditing email accounts on infrastructure they own
  • Security researchers studying SMTP server behavior and configuration
  • Security professionals performing authorized corporate email audits
  • Developers testing SMTP configurations of their own systems
  • CTF environments and security labs

Features

Feature Detail
Modern GUI Dark theme with blue accents, built with PySide6 (Qt6)
2 input modes EMAIL:PASS and SERVER|PORT|USERNAME|PASS
50 concurrent threads ThreadPoolExecutor for fast bulk processing
Server auto-detection Automatically tests mail., smtp., email. prefixes
Multi-port Tests ports 465 (SSL), 587 (STARTTLS), and 25
Real-time log Live display of each attempt with VALID/INVALID status
Organized results Timestamped folders, per-server files, statistics summary
Progress bar Visual indicator during verification
Live stats Valid/invalid counters updated in real-time
Windows launcher run.bat for one-click start

Project Structure

SMTP_GUI/
├── main.py           # Main application — GUI + SMTP verification engine
├── requirements.txt  # Python dependencies (PySide6, colorama, easygui)
├── run.bat           # Windows launcher (double-click to start)
├── README.md         # This file
├── LICENSE           # MIT License
└── Result/           # Output directory (auto-created)
    └── MM-DD-YY_HH-MM-SS/
        ├── [server].txt     # Valid credentials per server
        ├── _resumen.txt     # Scan statistics
        └── _info.txt        # Session metadata

System Requirements

Component Requirement
Python 3.6 or higher
PySide6 >= 6.0.0
colorama >= 0.4.4
easygui >= 0.98.0
OS Windows, Linux, or macOS
Network Internet connection or access to the target SMTP servers

Installation

Option A — Standard Installation

# 1. Clone or download the repository
git clone https://github.com/ByteCodeSecure/SMTP-Checker-GUI.git
cd SMTP-Checker-GUI

# 2. (Recommended) Create virtual environment
python -m venv venv

# Activate on Windows:
venv\Scripts\activate
# Activate on Linux/macOS:
source venv/bin/activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Launch the application
python main.py

Option B — Windows One-Click

Double-click run.bat

The script runs python main.py and keeps the console window open to display any errors.


Interface Guide

The main window (minimum 800×600) has 4 tabs:

┌─────────────────────────────────────────────────────────────────┐
│  SMTP CHECKER                                                   │
├──────────────┬─────────────────┬──────────┬────────────────────┤
│  EMAIL:PASS  │ SERVER|PORT|... │  POP3    │  IMAP              │
├──────────────┴─────────────────┴──────────┴────────────────────┤
│                                                                 │
│  File:   [ path/to/credentials.txt            ] [Browse]        │
│  Email:  [ you@yourdomain.com                 ]                 │
│                                                                 │
│  ┌─ Results Log ───────────────────────────────────────────┐   │
│  │ [14:32:01] VALID   → smtp.domain.com:465:user@d.com     │   │
│  │ [14:32:02] INVALID → mail.other.com:587:user2@other.com │   │
│  │ [14:32:03] ERROR   → smtp.down.com: Connection timeout  │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  Valid: [12]  Invalid: [88]     [████████░░░░] Progress         │
│                                                                 │
│                 [Start Verification / Iniciar Verificación]     │
└─────────────────────────────────────────────────────────────────┘

Tab 1 — EMAIL:PASS

Accepts files with email:password format. The application automatically deduces the SMTP server from the email domain.

Tab 2 — SERVER|PORT|USERNAME|PASS

Accepts files with an explicit SMTP server in pipe format. Use this when you already know the exact server configuration.

Tab 3 — POP3 (not implemented)

UI infrastructure prepared. Currently displays: "POP3 checker not implemented yet."

Tab 4 — IMAP (not implemented)

UI infrastructure prepared. Currently displays: "IMAP checker not implemented yet."


Input File Formats

Tab 1: EMAIL:PASS

Plain text file, one credential set per line:

user@domain.com:password123
other@company.com:MyPass!2024
admin@myserver.com:P@ssw0rd

Rules:

  • Separator: colon (:)
  • The email domain is used to construct the SMTP server hostname
  • Lines with incorrect format are logged as errors and skipped
  • Blank lines are ignored
  • Encoding: UTF-8

Tab 2: SERVER|PORT|USERNAME|PASS

smtp.domain.com|465|user@domain.com|password
mail.company.com|587|admin|MyPass!2024
mail.myserver.com|25|user@server.com|key123

Rules:

  • Separator: pipe (|)
  • Exactly 4 fields per line
  • Port must be numeric
  • Lines with incorrect format are logged and skipped

Step-by-Step Usage

Step 1 — Prepare the Credentials File

Create a .txt file with the credentials to verify in the format corresponding to the tab you will use.

Step 2 — Open the Application

python main.py
# Or double-click run.bat (Windows)

Step 3 — Select the Tab

Choose EMAIL:PASS or SERVER|PORT|USERNAME|PASS depending on your file format.

Step 4 — Load the File

Click "Examinar" (Browse) and select your .txt file.

Step 5 — Enter Test Email

In the "Email" field, enter your own email address. Successful verifications will attempt to send a test email to this address (only if valid credentials are found and the server allows it).

The test email body contains: server|email|password|port|SMTP RECEIVED

Step 6 — Start Verification

Click "Iniciar Verificación" (Start Verification). The progress bar will activate and the log will start showing real-time results:

[14:32:01] Processing: user@domain.com
[14:32:02] VALID   → smtp.domain.com:465:user@domain.com:password
[14:32:03] INVALID → mail.domain.com:587:user@domain.com:password
[14:32:04] ERROR   → email.domain.com:25 → Connection timed out

Step 7 — Review Results

When complete, the application shows a summary and results are saved in:

Result/
└── MM-DD-YY_HH-MM-SS/

Output & Result Files

All results are saved automatically to Result/[MM-DD-YY_HH-MM-SS]/:

[server].txt — Valid Credentials per Server

One file per server where valid credentials were found. Format:

server|port|email|password
smtp.domain.com|465|user@domain.com|password123
smtp.domain.com|465|other@domain.com|pass456

_resumen.txt — Scan Statistics

=== VERIFICATION SUMMARY ===
Date: 03-28-25 14:35:22
Input file: /path/to/file.txt
Total processed: 500
Valid: 12
Invalid: 451
Format errors: 37

_info.txt — Session Metadata

Timestamp: 03-28-25 14:32:00
File: /path/to/file.txt
Recipient email: you@email.com

SMTP Verification Logic

Tab 1 — Server Auto-Detection

For each credential email@domain.com:password, the application tries 9 combinations (3 prefixes × 3 ports):

Attempt Server Port Protocol
1 mail.domain.com 465 SMTP_SSL
2 mail.domain.com 587 SMTP + STARTTLS
3 mail.domain.com 25 SMTP plain
4 smtp.domain.com 465 SMTP_SSL
5 smtp.domain.com 587 SMTP + STARTTLS
6 smtp.domain.com 25 SMTP plain
7 email.domain.com 465 SMTP_SSL
8 email.domain.com 587 SMTP + STARTTLS
9 email.domain.com 25 SMTP plain

Stops at the first success. If all 9 fail, the credential is marked INVALID.

Per-Port Behavior

Port 465 — SMTP_SSL (Direct SSL/TLS)

smtplib.SMTP_SSL(server, 465, timeout=15)
server.login(username, password)
server.sendmail(...)

Port 587 — SMTP with STARTTLS

smtplib.SMTP(server, 587, timeout=15)
server.ehlo()
server.starttls()
server.login(username, password)
server.sendmail(...)

Port 25 — Plain SMTP

smtplib.SMTP(server, 25, timeout=15)
server.ehlo()
server.login(username, password)
server.sendmail(...)

Timeout

15 seconds per connection attempt. With 50 threads and up to 9 attempts per credential, total time depends on server response speed.


Internal Configuration

Values configured directly in main.py:

Parameter Value Description
self.host ["mail.", "smtp.", "email."] Server prefixes for auto-detection
self.port [465, 587, 25] SMTP ports to test
self.timeout 15 Timeout per connection (seconds)
ThreadPoolExecutor 50 Number of concurrent threads
Output directory Result/ Results folder (relative to executable)

How It Works Technically

Architecture

Main Thread (GUI — Qt Event Loop)
    │
    ├── Verification Thread (daemon thread)
    │       │
    │       └── ThreadPoolExecutor (50 workers)
    │               │
    │               ├── Worker 1 → SMTP attempt
    │               ├── Worker 2 → SMTP attempt
    │               ├── ...
    │               └── Worker 50 → SMTP attempt
    │
    └── Qt Signals (thread-safe UI updates)
            ├── update_log(message)    → appends to log UI
            ├── update_stats(v, i)     → updates counters
            └── finished()            → signals completion

Processing Pipeline

Input File
    │
    ▼
┌──────────────────┐
│  Read lines      │  UTF-8, ignore encoding errors
│  + Validate      │  Check correct separator (: or |)
└────────┬─────────┘
         │ Invalid format → log error + continue
         ▼
┌──────────────────┐
│  Build attempt   │  Tab 1: extract domain → 9 combinations
│  list            │  Tab 2: use server/port directly
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Send to thread  │  ThreadPoolExecutor (50 workers)
│  pool            │
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Per attempt:    │  Connect SMTP → Login → Send test email
│                  │  Success: emit update_log("VALID", ...)
│                  │  Failure: emit update_log("INVALID", ...)
│                  │  Error:   emit update_log("ERROR", ...)
└────────┬─────────┘
         ▼
┌──────────────────┐
│  Save results    │  Result/timestamp/server.txt
│                  │  Result/timestamp/_resumen.txt
└──────────────────┘

Troubleshooting

Problem Cause Solution
ModuleNotFoundError: PySide6 PySide6 not installed pip install -r requirements.txt
App won't launch on Windows Python not in PATH Reinstall Python checking "Add to PATH"
All results are errors Firewall blocking SMTP ports Verify ports 465/587/25 are open
Empty Result/ folder No valid credentials found Normal — no server accepted the credentials
Very slow with many lines Slow servers + 15s timeout Normal; 50 threads process in parallel
SMTPAuthenticationError Wrong credential Correctly recorded as INVALID
ConnectionRefusedError Port closed on that server Next port is tried automatically
GUI freezes Background process active Verification runs on separate thread — wait for completion
Incorrect _info.txt Path with special characters Use paths without spaces or special characters

License / Licencia

This project is licensed under the MIT License. See LICENSE for details.

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.

About

SMTP credential verification GUI built with Python and PySide6 — security research and authorized audits

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors