Skip to content

veyralabsgroup/vps-email-setup

Repository files navigation

🚀 VPS Email Setup - Universal Email Installer

Instalador universal de sistema de emails para VPS usando Postfix + Resend. Compatible con cualquier servidor Ubuntu/Debian, con o sin CloudPanel.

License: MIT Ubuntu Debian


✨ Características

  • Instalación en 2 minutos - Un solo comando
  • Completamente automático - Detecta CloudPanel, PHP, etc.
  • Universal - Funciona en Hetzner, DigitalOcean, AWS, etc.
  • Modo interactivo y no-interactivo - Usa variables de entorno
  • Configura automáticamente PHP - Todas las versiones detectadas
  • Scripts de prueba incluidos - Verifica que todo funcione
  • 3,000 emails gratis/mes con Resend
  • Excelente deliverability - No más emails en spam

🎯 ¿Para qué sirve?

Después de instalar, CUALQUIER aplicación en tu VPS podrá enviar emails:

  • WordPress: Verificaciones, recuperación de contraseña, Contact Form 7, WooCommerce
  • Laravel/Symfony: Notificaciones, verificaciones de registro
  • Plugins: Códigos de verificación, notificaciones
  • Scripts PHP: Función mail() funcionará automáticamente

⚡ Instalación Rápida

Opción 1: Modo interactivo (recomendado para primera vez)

curl -sSL https://raw.githubusercontent.com/veyralbasgroup/vps-email-setup/main/install.sh | sudo bash

El script te pedirá:

  • API Key de Resend
  • Email remitente
  • Hostname (opcional)

Opción 2: Modo no-interactivo (para automatización)

curl -sSL https://raw.githubusercontent.com/veyralbasgroup/vps-email-setup/main/install.sh | \
  sudo RESEND_API_KEY="re_xxxxx" \
       FROM_EMAIL="noreply@tudominio.com" \
       bash

Opción 3: Clonar el repositorio

git clone https://github.com/veyralbasgroup/vps-email-setup.git
cd vps-email-setup
sudo bash install.sh

📋 Prerequisitos

  1. Servidor VPS con Ubuntu 20.04+ o Debian 11+
  2. Acceso root o sudo
  3. Cuenta en Resend (gratis): https://resend.com/signup
  4. API Key de Resend: Créala en https://resend.com/api-keys
  5. (Opcional) Dominio verificado en Resend para mejor deliverability

🔧 Uso Detallado

1. Obtén tu API Key de Resend

  1. Regístrate en Resend
  2. Ve a API KeysCreate API Key
  3. Dale un nombre descriptivo (ej: "VPS-Production")
  4. Copia tu API Key (formato: re_xxxxxxxxxxxxx)

2. (Opcional) Verifica tu dominio

Para mejor deliverability:

  1. Ve a Resend Domains
  2. Añade tu dominio
  3. Configura los registros DNS que te proporcionen

3. Ejecuta el instalador

# Descarga y ejecuta
curl -sSL https://raw.githubusercontent.com/veyralabsgroup/vps-email-setup/main/install.sh | sudo bash

4. Prueba el sistema

# Enviar email de prueba
bash /root/test_email.sh tu-email@gmail.com

# Ver logs
tail -f /var/log/mail.log

# Verificar configuración
bash /root/verify_email.sh

🎪 Ejemplos de Uso

Instalación básica interactiva

curl -sSL https://raw.githubusercontent.com/veyralabsgroup/vps-email-setup/main/install.sh | sudo bash

Instalación automatizada (CI/CD)

# En tu script de provisioning
export RESEND_API_KEY="re_41DfAfqe_9xXHH3EVs6ifYceRbwEDC8VT"
export FROM_EMAIL="noreply@midominio.com"
export HOSTNAME="servidor.midominio.com"

curl -sSL https://raw.githubusercontent.com/veyralbasgroup/vps-email-setup/main/install.sh | sudo bash

Usando con Terraform / Ansible

Terraform:

resource "null_resource" "email_setup" {
  provisioner "remote-exec" {
    inline = [
      "curl -sSL https://raw.githubusercontent.com/veyralabsgroup/vps-email-setup/main/install.sh | RESEND_API_KEY='${var.resend_api_key}' FROM_EMAIL='${var.from_email}' bash"
    ]
  }
}

Ansible:

- name: Install email system
  shell: |
    curl -sSL https://raw.githubusercontent.com/veyralabsgroup/vps-email-setup/main/install.sh | \
      RESEND_API_KEY="{{ resend_api_key }}" \
      FROM_EMAIL="{{ from_email }}" \
      bash
  become: yes

📊 ¿Qué hace el instalador?

El script realiza automáticamente:

  1. Detecta el sistema operativo (Ubuntu/Debian)
  2. Detecta CloudPanel si está instalado
  3. Detecta todas las versiones PHP instaladas
  4. Instala Postfix con configuración automática
  5. Configura Resend como relay SMTP
  6. Configura PHP en todas las versiones detectadas
  7. Reinicia servicios (Postfix, PHP-FPM, Nginx/Apache)
  8. Crea scripts de prueba para verificar el funcionamiento
  9. Genera logs detallados de todo el proceso

📁 Archivos Creados

Después de la instalación:

Archivo Descripción
/etc/postfix/main.cf Configuración de Postfix
/etc/postfix/main.cf.backup Backup de configuración original
/etc/postfix/sasl_passwd Credenciales de Resend
/etc/postfix/generic Mapeo de remitentes
/root/test_email.sh Script de prueba (línea de comandos)
/root/test_email.php Script de prueba PHP
/root/verify_email.sh Script de verificación
/var/log/email-installer.log Log de instalación
/var/log/mail.log Log de Postfix

🐛 Solución de Problemas

Emails no llegan

  1. Verifica logs:

    tail -f /var/log/mail.log
  2. Verifica que Postfix esté activo:

    systemctl status postfix
  3. Verifica configuración PHP:

    php -i | grep sendmail_path
    # Debería mostrar: sendmail_path => /usr/sbin/sendmail -t
  4. Prueba conectividad con Resend:

    telnet smtp.resend.com 587

Error: "Relay access denied"

  • Verifica que tu API Key sea correcta en /etc/postfix/sasl_passwd
  • Asegúrate de que el dominio esté verificado en Resend

Error: "Connection refused"

  • Verifica firewall: ufw status
  • Asegúrate de que el puerto 587 esté abierto

PHP no envía emails

  1. Verifica configuración:

    php -i | grep sendmail_path
  2. Reinicia PHP-FPM:

    systemctl restart php*-fpm

🔄 Actualización

Para actualizar la configuración o cambiar credenciales:

# Opción 1: Volver a ejecutar el instalador
curl -sSL https://raw.githubusercontent.com/veyralbasgroup/vps-email-setup/main/install.sh | \
  sudo RESEND_API_KEY="nueva_api_key" \
       FROM_EMAIL="nuevo-email@dominio.com" \
       bash

# Opción 2: Editar manualmente
sudo nano /etc/postfix/sasl_passwd
# Cambiar la API Key
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl restart postfix

🗑️ Desinstalación

# Detener Postfix
sudo systemctl stop postfix
sudo systemctl disable postfix

# Eliminar Postfix
sudo apt-get remove --purge postfix libsasl2-modules

# Eliminar archivos de configuración
sudo rm -rf /etc/postfix
sudo rm /root/test_email.sh /root/test_email.php /root/verify_email.sh

📊 Límites y Pricing de Resend

Plan Gratuito

  • 3,000 emails/mes
  • ✅ Todos los features
  • ✅ API completa

Plans Pagos

  • Pro: Desde $20/mes - 50,000 emails
  • Enterprise: Contactar ventas

Ver pricing completo


🤝 Compatibilidad

Sistemas Operativos

  • ✅ Ubuntu 20.04 LTS
  • ✅ Ubuntu 22.04 LTS
  • ✅ Ubuntu 24.04 LTS
  • ✅ Debian 11 (Bullseye)
  • ✅ Debian 12 (Bookworm)

Paneles de Control

  • ✅ CloudPanel
  • ✅ Sin panel (servidor limpio)
  • ⚠️ cPanel (no probado, debería funcionar)
  • ⚠️ Plesk (no probado, debería funcionar)

Proveedores VPS

  • ✅ Hetzner
  • ✅ DigitalOcean
  • ✅ AWS EC2
  • ✅ Linode
  • ✅ Vultr
  • ✅ OVH
  • ✅ Contabo
  • ✅ Cualquier VPS con Ubuntu/Debian

🔐 Seguridad

  • ✅ Credenciales almacenadas con permisos 600
  • ✅ Conexión TLS/SSL con Resend
  • ✅ No se almacenan credenciales en logs
  • ✅ Backup automático de configuraciones originales

📚 Recursos Adicionales


🤝 Contribuir

¡Las contribuciones son bienvenidas!

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📝 Changelog

v1.0.0 (2025-11-05)

  • ✨ Lanzamiento inicial
  • ✅ Soporte para Ubuntu 20.04+
  • ✅ Soporte para Debian 11+
  • ✅ Detección automática de CloudPanel
  • ✅ Configuración automática de PHP
  • ✅ Modo interactivo y no-interactivo
  • ✅ Scripts de prueba incluidos

📄 Licencia

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.


👤 Autor

Tu Nombre / Veyra Labs


⭐ Apóyanos

Si este proyecto te ayudó, ¡dale una estrella en GitHub! ⭐


🙏 Agradecimientos


📞 Soporte

¿Necesitas ayuda?


Hecho con ❤️ para la comunidad de desarrolladores

Si te ahorra tiempo, considera invitarme un café ☕

About

Instalador universal de sistema de emails para VPS usando Postfix + Resend.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages