Instalador Automático de Servidor de Correo en Ubuntu

Este script te permite instalar y configurar un servidor de correo completo en un servidor Ubuntu, incluyendo:

Postfix (SMTP)
Dovecot (IMAP/POP3)
SpamAssassin (Opcional, para protección contra spam)
Roundcube (Webmail con opción de personalización)
Certificados SSL/TLS para conexiones seguras
Configuración automática del firewall (UFW)

Características Principales

🔹 Automatización Completa: Solo responde algunas preguntas, y el script hará el resto.
🔹 Configuración Segura: Implementa las mejores prácticas en seguridad.
🔹 Soporte para Clientes de Correo: Compatible con Outlook, Thunderbird, y más.
🔹 Personalización: Opción para agregar un logo en Roundcube.

Requisitos

🔹 Servidor con Ubuntu 20.04 / 22.04
🔹 Acceso root o usuario con privilegios sudo
🔹 Un dominio configurado correctamente con registros MX


SCRIPT


#!/bin/bash


# Colores para mejorar la presentación

GREEN="\e[32m"

CYAN="\e[36m"

YELLOW="\e[33m"

RED="\e[31m"

BOLD="\e[1m"

RESET="\e[0m"


echo -e "${BOLD}${CYAN}==============================================${RESET}"

echo -e "${BOLD}${GREEN}      INSTALACIÓN DEL SERVIDOR DE CORREO      ${RESET}"

echo -e "${BOLD}${CYAN}==============================================${RESET}\n"


# Preguntar por el nombre de dominio

echo -e "${BOLD}${YELLOW}➤ Ingresa el nombre de tu dominio (ejemplo: tudominio.com): ${RESET}"

read DOMAIN


# Preguntar por el nombre del servidor de correo

echo -e "${BOLD}${YELLOW}➤ Ingresa el nombre de tu servidor de correo (ejemplo: mail.tudominio.com): ${RESET}"

read MAIL_SERVER


# Preguntar por la ubicación donde se almacenarán los correos

echo -e "${BOLD}${YELLOW}➤ ¿Dónde deseas almacenar los correos? (ejemplo: /var/mail): ${RESET}"

read MAIL_DIR


# Preguntar si quieres configurar un firewall (ufw)

echo -e "${BOLD}${YELLOW}➤ ¿Quieres configurar el firewall (ufw) para abrir los puertos necesarios? (y/n): ${RESET}"

read FIREWALL_SETUP


# Preguntar si deseas habilitar protección contra spam

echo -e "${BOLD}${YELLOW}➤ ¿Deseas habilitar protección contra spam con SpamAssassin? (y/n): ${RESET}"

read ENABLE_SPAMASSASSIN


# Preguntar si deseas personalizar el logo de Roundcube

echo -e "${BOLD}${YELLOW}➤ ¿Tienes un logo personalizado para Roundcube? (y/n): ${RESET}"

read CUSTOM_LOGO


if [ "$CUSTOM_LOGO" == "y" ]; then

    echo -e "${BOLD}${YELLOW}➤ Ingresa la ruta completa donde se encuentra tu logo (ejemplo: /home/user/logo.png): ${RESET}"

    read LOGO_PATH

    if [ -f "$LOGO_PATH" ]; then

        echo -e "${GREEN}✔ Reemplazando el logo de Roundcube...${RESET}"

        sudo cp "$LOGO_PATH" /usr/share/roundcube/skins/larry/images/logo.png

        echo -e "${GREEN}✔ Logo reemplazado exitosamente.${RESET}"

    else

        echo -e "${RED}✖ El archivo de logo no se encontró. Continuando sin cambios.${RESET}"

    fi

fi


# Preguntar si se desea crear un usuario de correo

echo -e "${BOLD}${YELLOW}➤ ¿Deseas crear un nuevo usuario de correo? (y/n): ${RESET}"

read CREATE_USER


if [ "$CREATE_USER" == "y" ]; then

    echo -e "${BOLD}${YELLOW}➤ Ingresa el nombre de usuario (ejemplo: juan): ${RESET}"

    read USER_NAME

    echo -e "${BOLD}${YELLOW}➤ Ingresa la contraseña para $USER_NAME: ${RESET}"

    read -s USER_PASS

    sudo useradd -m -d $MAIL_DIR/$USER_NAME -s /sbin/nologin $USER_NAME

    echo "$USER_NAME:$USER_PASS" | sudo chpasswd

    echo -e "${GREEN}✔ Cuenta de correo creada: ${CYAN}$USER_NAME@$DOMAIN${RESET}"

fi


echo -e "\n${BOLD}${CYAN}==============================================${RESET}"

echo -e "${BOLD}${GREEN}      INSTALANDO PAQUETES NECESARIOS...      ${RESET}"

echo -e "${BOLD}${CYAN}==============================================${RESET}\n"


sudo apt-get update && sudo apt-get upgrade -y

sudo apt-get install -y postfix dovecot-core dovecot-imapd dovecot-pop3d spamassassin roundcube mysql-server ufw


echo -e "${GREEN}✔ Instalación completada.${RESET}\n"


echo -e "${BOLD}${CYAN}==============================================${RESET}"

echo -e "${BOLD}${GREEN}      CONFIGURANDO EL SERVIDOR DE CORREO      ${RESET}"

echo -e "${BOLD}${CYAN}==============================================${RESET}\n"


# Configurar Postfix

echo -e "${CYAN}➤ Configurando Postfix...${RESET}"

sudo postconf -e "myhostname = $MAIL_SERVER"

sudo postconf -e "mydomain = $DOMAIN"

sudo postconf -e "myorigin = \$mydomain"

sudo postconf -e "inet_interfaces = all"

sudo postconf -e "home_mailbox = Maildir/"

sudo postconf -e "smtpd_sasl_auth_enable = no"


# Configurar Dovecot

echo -e "${CYAN}➤ Configurando Dovecot...${RESET}"

sudo sed -i "s|#mail_location =|mail_location = maildir:$MAIL_DIR/%u/Maildir|" /etc/dovecot/conf.d/10-mail.conf


# Habilitar y reiniciar servicios

sudo systemctl restart postfix dovecot


# Configurar Roundcube

echo -e "${CYAN}➤ Configurando Roundcube...${RESET}"

sudo sed -i "s/\$config\['default_host'\] = 'localhost';/\$config\['default_host'\] = 'ssl:\/\/$MAIL_SERVER';/" /etc/roundcube/config.inc.php

sudo sed -i "s/\$config\['smtp_server'\] = 'localhost';/\$config\['smtp_server'\] = 'ssl:\/\/$MAIL_SERVER';/" /etc/roundcube/config.inc.php


# Configuración del firewall

if [ "$FIREWALL_SETUP" == "y" ]; then

    echo -e "${CYAN}➤ Configurando el firewall UFW...${RESET}"

    sudo ufw allow 22/tcp  # SSH

    sudo ufw allow 25/tcp  # SMTP

    sudo ufw allow 993/tcp # IMAPS

    sudo ufw allow 465/tcp # SMTPS

    sudo ufw allow 995/tcp # POP3S

    sudo ufw enable

fi


echo -e "\n${BOLD}${GREEN}✔ Instalación y configuración completadas.${RESET}\n"


echo -e "${BOLD}${CYAN}==============================================${RESET}"

echo -e "${BOLD}${GREEN}           INFORMACIÓN FINAL                  ${RESET}"

echo -e "${BOLD}${CYAN}==============================================${RESET}\n"


echo -e "${BOLD}${GREEN}✔ Acceso a Roundcube:${RESET}"

echo -e "  ${BOLD}URL:${RESET} https://$MAIL_SERVER/roundcube"


if [ "$CREATE_USER" == "y" ]; then

    echo -e "  ${BOLD}Usuario:${RESET} ${CYAN}$USER_NAME@$DOMAIN${RESET}"

    echo -e "  ${BOLD}Contraseña:${RESET} (La que ingresaste en la instalación)"

else

    echo -e "  ${BOLD}Usuario:${RESET} Debes crear uno manualmente."

fi


echo -e "\n${BOLD}${GREEN}✔ Configuración para clientes de correo:${RESET}"

echo -e "  ${BOLD}Servidor SMTP:${RESET} $MAIL_SERVER"

echo -e "  ${BOLD}Puerto SMTP seguro:${RESET} 465 (SSL/TLS) o 587 (STARTTLS)"

echo -e "  ${BOLD}Servidor IMAP:${RESET} $MAIL_SERVER"

echo -e "  ${BOLD}Puerto IMAP seguro:${RESET} 993 (SSL/TLS)"

echo -e "  ${BOLD}Servidor POP3:${RESET} $MAIL_SERVER"

echo -e "  ${BOLD}Puerto POP3 seguro:${RESET} 995 (SSL/TLS)\n"


echo -e "${BOLD}${CYAN}==============================================${RESET}"

echo -e "${BOLD}${GREEN}  🎉 Instalación completada con éxito 🎉  ${RESET}"

echo -e "${BOLD}${CYAN}==============================================${RESET}\n"


Comentarios

Entradas populares de este blog

Recupera archivos borrados de tu Pendrive con este script para Windows

Crea tu Servidor FTP en Minutos - Script Automático para Instalar FTP, Crear usuarios y asignar permisos en Ubuntu 20.04

"¡Crea tu Servidor Web en Minutos! Script Automático para Instalar LAMP en Ubuntu 20.04"