Instalación Mailtrain · 11 min read · Sep 29, 2025

Cómo instalar la aplicación de boletín Mailtrain en CentOS 7

Mailtrain es una aplicación de boletín de código abierto autoalojada escrita en Node.js. Utiliza una biblioteca de Node.js muy popular llamada Nodemailer para enviar correos electrónicos. Ofrece una automatización y análisis excepcionales sin costo alguno. Puedes crear o importar fácilmente una lista de correos electrónicos de un millón de direcciones de correo electrónico utilizando la importación de archivos CSV. También admite campos y formularios personalizados. Proporciona automatización a través de disparadores, que pueden enviar mensajes específicos a usuarios específicos cuando se activa la acción. Puedes usar cualquier proveedor de correo electrónico para enviar el boletín que soporte el protocolo SMTP junto con soporte para Amazon SES, ZoneMTA, SendGrid y Mailgun, etc. Proporciona múltiples editores WYSIWYG para crear hermosas plantillas para boletines.

En este tutorial, instalaremos Mailtrain junto con todas las dependencias necesarias en CentOS 7. También configuraremos Nginx como un proxy inverso para servir la aplicación en el puerto HTTP estándar.

Requisitos

Mailtrain requiere al menos 1GB de RAM. Todas las dependencias necesarias se instalarán a lo largo del tutorial. Necesitarás una instalación mínima de CentOS 7 con acceso root. Si has iniciado sesión como un usuario no root, puedes ejecutar sudo -i para cambiar a usuario root.

Actualizar el sistema base

Antes de instalar cualquier paquete, se recomienda que actualices los paquetes y el repositorio utilizando el siguiente comando.

yum -y update

Instalar Node.js

Node.js es requerido por Mailtrain ya que está construido utilizando Nodemailer. Node.js es un entorno de ejecución de JavaScript muy popular y Nodemailer es un módulo para aplicaciones de Node.js para enviar correos electrónicos.

Agrega el repositorio de Node.js 8.x:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

Instala Node.js.

yum -y install nodejs

Instalar MariaDB

Para almacenar la base de datos de Mailtrain, necesitaremos instalar MariaDB. MariaDB es un fork de MySQL.
Instala el repositorio de MariaDB en tu sistema.

nano /etc/yum.repos.d/mariadb.repo

Agrega las siguientes líneas al archivo.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Ahora instala MariaDB ejecutando.

yum -y install mariadb-server mariadb

Para iniciar MariaDB y habilitarlo para que se inicie al arrancar, utiliza los siguientes comandos.

systemctl start mariadb  
systemctl enable mariadb

Ahora ejecuta los siguientes comandos para asegurar tu instalación de MySQL o MariaDB.

mysql_secure_installation

Ejecutará un pequeño script que te pedirá que proporciones la contraseña root para MariaDB. Como acabamos de instalar MariaDB, la contraseña root no está configurada, simplemente presiona enter para continuar. Te preguntará si deseas establecer una contraseña root para tu instalación de MariaDB, elige y establece una contraseña fuerte para la instalación. También te preguntará sobre la eliminación de bases de datos de prueba y usuarios anónimos. La mayoría de las preguntas son autoexplicativas y deberías responder sí o y a todas las preguntas.

Mailtrain requiere dos usuarios de bases de datos para funcionar, uno para administrar la base de datos de Mailtrain y otro para generar los informes de trabajo.

Para crear una base de datos, primero necesitaremos iniciar sesión en la línea de comandos de MySQL. Ejecuta el siguiente comando para ello.

mysql -u root -p

Esto te pedirá la contraseña, proporciona la contraseña root de MySQL que configuraste anteriormente. Ahora ejecuta la siguiente consulta para crear una nueva base de datos para tu instalación de Mailtrain.

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

La consulta anterior creará una base de datos llamada mailtrain. Asegúrate de usar un punto y coma al final de cada consulta, ya que la consulta siempre termina con un punto y coma. Una vez que se crea la base de datos, puedes crear un nuevo usuario y otorgar todos los permisos al usuario para la base de datos. No se recomienda usar el usuario root para las bases de datos. Para crear un nuevo usuario de base de datos, ejecuta la siguiente consulta.

CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';

La consulta anterior creará un usuario con el nombre de usuario mailtrain. Puedes usar cualquier nombre de usuario preferido en lugar de mailtrain. Reemplaza StrongPassword con una contraseña fuerte. Ahora proporciona los privilegios apropiados a tu usuario de base de datos sobre la base de datos que has creado. Ejecuta el siguiente comando.

GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';

Ahora crea un nuevo usuario para Mailtrain RO.

CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';

Proporciona acceso de lectura al usuario RO sobre la base de datos de Mailtrain.

GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';

Ahora ejecuta el siguiente comando para aplicar inmediatamente los cambios en los privilegios de la base de datos.

FLUSH PRIVILEGES;

Sal del aviso de MySQL utilizando el comando exit.

EXIT;

Instalar dependencias

Mailtrain requiere algunas dependencias más para funcionar. Instala las dependencias ejecutando:

yum -y install ImageMagick git python redis bind-utils gcc-c++ make

ImageMagick es una herramienta para procesar imágenes de mapa de bits y Git se utilizará para clonar el repositorio del proyecto de la aplicación. Redis es una aplicación de caché de sesión muy popular y Python, bind-utils, gcc-c++ y make se utilizarán para compilar los archivos de las aplicaciones.

Inicia Redis y habilítalo para que se inicie automáticamente:

systemctl start redis  
systemctl enable redis

Descargar e instalar Mailtrain

Clona los archivos de instalación de Mailtrain usando Git.

git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrain

Crea un nuevo usuario de Mailtrain para ejecutar el demonio de Mailtrain. Esto asegurará que Mailtrain se ejecute en un entorno aislado.

adduser mailtrain -d /opt/mailtrain

El comando anterior creará un nuevo usuario mailtrain y /opt/mailtrain se utilizará como el directorio de inicio.

Cambia al directorio de Mailtrain ejecutando:

cd /opt/mailtrain

Antes de continuar, debes generar una cadena aleatoria que se utilizará para cifrar los datos de la sesión. Para generar la cadena aleatoria, puedes usar la utilidad pwgen.

Ejecuta yum -y install pwgen para instalar la utilidad pwgen. Ejecuta pwgen -1 64 para generar una cadena con longitud de 64 caracteres. Verás:

[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied

Crea un nuevo archivo de configuración production.toml. La configuración proporcionada en este archivo anula el archivo de configuración predeterminado default.toml. No debemos modificar el archivo de configuración predeterminado. Crea un nuevo archivo production.toml para almacenar la configuración de anulación.

nano config/production.toml

Puebla el archivo con la siguiente configuración.

language="en"

user="mailtrain"
group="mailtrain"
rouser="nobody"
rogroup="nobody"

[log]
level="error"

[www]
host="localhost"
port="3000"
secret="RandomString"
remember=604800
proxy=true
tmpdir="/tmp"

[mysql]
user="mailtrain"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8"


[redis]
enabled=true

[queue]
processes=5

[reports]
enabled=true

La configuración anterior permite que Mailtrain se ejecute como el usuario mailtrain y el usuario del trabajador de informes de Mailtrain se ejecute como el usuario nobody. Además, configura el servidor integrado para escuchar en localhost en el puerto 3000. Configuraremos Nginx como un proxy inverso para que la interfaz web de Mailtrain se pueda acceder a través del puerto HTTP estándar.

Reemplaza RandomString en secret= con la cadena aleatoria generada anteriormente. Establece proxy en true ya que ejecutaremos el servidor integrado de Mailtrain detrás del proxy de Nginx.

Establece el nombre de usuario, la contraseña y el nombre de la base de datos de la base de datos que has creado para almacenar los datos de Mailtrain.

Además, crea un nuevo archivo para almacenar la configuración de producción para los informes de trabajadores.

nano workers/reports/config/production.toml

Puebla el archivo con la siguiente configuración.

[log]
level="error"

[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"

Ahora baja las dependencias necesarias de Node.js e instala el software:

npm install --production

Una vez que la aplicación esté instalada, puedes iniciarla inmediatamente usando:

NODE_ENV=production npm start

Si el servidor está en funcionamiento, deberías ver la siguiente salida.

[root@liptan-pc mailtrain]# NODE_ENV=production npm start

> [email protected] start /opt/mailtrain
> node index.js
    
info Using local auth

Pero en lugar de iniciar la aplicación directamente, utilizaremos un servicio systemd. Detén la ejecución presionando ctrl + C.

Proporciona la propiedad de los archivos al usuario Mailtrain y elimina todos los permisos sobre la configuración de otros usuarios no root del sistema:

chown -R mailtrain:mailtrain /opt/mailtrain  
chmod o-rwx /opt/mailtrain/config

Configuración del servicio Systemd

Crea un nuevo archivo de servicio Systemd. Usar Systemd en lugar de un comando directo para ejecutar el servidor asegurará que el servidor se inicie automáticamente en caso de fallo y reinicio. Facilita la gestión del servicio.

nano /etc/systemd/system/mailtrain.service

Puebla el archivo con la siguiente configuración.

[Unit]
Description=Servidor Mailtrain
Requires=mariadb.service
After=syslog.target network.target

[Service]
user=mailtrain
group=mailtrain
Environment="NODE_ENV=production"
WorkingDirectory=/opt/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mailtrain

[Install]
WantedBy=multi-user.target

Inicia Mailtrain y habilítalo para que se inicie automáticamente al arrancar:

systemctl enable mailtrain  
systemctl start mailtrain

Para verificar el estado del servicio, ejecuta:

systemctl status mailtrain

Deberías ver que el servicio está funcionando activamente.

[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Servidor Mailtrain
   Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago
 Main PID: 18092 (mailtrain)
   CGroup: /system.slice/mailtrain.service
           ??18092 mailtrain
           ??18105 /usr/bin/node /opt/mailtrain/services/executor.js
           ??18112 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18117 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18125 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18131 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18136 /usr/bin/node /opt/mailtrain/services/sender.js

Oct 09 11:15:40 liptan-pc systemd[1]: Started Servidor Mailtrain.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Servidor Mailtrain...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth

Configurar Logrotate

Logrotate es una utilidad muy útil para refrescar registros obsoletos. Cuando un servicio está funcionando continuamente, genera una gran cantidad de registros. Los archivos que contienen los registros consumen mucho espacio en disco. Logrotate elimina periódicamente los registros antiguos para que las entradas de registro puedan ser reemplazadas por nuevos registros.

Crea un nuevo archivo de configuración de logrotate:

nano /etc/logrotate.d/mailtrain

Puebla el archivo con la siguiente configuración:

/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}

Configurar Nginx como Proxy Inverso

Hemos configurado la interfaz web integrada de Mailtrain para escuchar en localhost en el puerto 3000, ya que es importante ejecutar un servidor web de producción para servir el sitio web a los usuarios. En este tutorial, utilizaremos Nginx como el proxy inverso para que la aplicación se pueda acceder a través del puerto HTTP estándar. Instala el servidor web Nginx:

yum -y install nginx

Crea un nuevo archivo de bloque de servidor para el host virtual de Nginx:

nano /etc/nginx/conf.d/mailtrain.conf

Puebla el archivo con:

server {
    listen 80;
    listen [::]:80;

    server_name news.example.com www.news.example.com ;
    access_log /var/log/nginx/mailtrain.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:3000;
        proxy_redirect off;
    }
}

Reinicia el servidor web Nginx y habilítalo para que se inicie automáticamente al arrancar:

systemctl restart nginx  
systemctl enable nginx

Configurar Firewall y SELinux

Si estás ejecutando un firewall en tu servidor, necesitarás configurar el firewall para establecer una excepción para el servicio HTTP. Permite que el proxy inverso de Nginx se conecte desde fuera de la red.

firebase-cmd --zone=public --permanent --add-service=http  
firebase-cmd --reload

Si tienes SELinux habilitado en tu sistema, entonces necesitarás agregar algunas excepciones en las políticas de SELinux.

Para verificar si SELinux está habilitado, ejecuta:

getenforce

Si tienes SELinux habilitado, entonces ejecuta:

setsebool -P httpd_can_network_connect 1

Accediendo a la interfaz web

La instalación de Mailtrain ahora está terminada. Ahora puedes acceder al servidor de Mailtrain en http://news.example.com. Verás la siguiente interfaz.

Mailtrain

Haz clic en el botón de inicio de sesión e inicia sesión usando el nombre de usuario admin y la contraseña test.

Inicio de sesión de Mailtrain

Navega por la sección Cuenta del panel y actualiza la dirección de correo electrónico y la contraseña. Es muy importante actualizar la contraseña lo antes posible.

Crear cuenta en Mailtrain

Además, es importante actualizar la configuración antes de que puedas usar Mailtrain.

Configuraciones de Mailtrain

Actualiza la URL del sitio y el correo electrónico del administrador. También puedes proporcionar el ID de seguimiento de Google Analytics para rastrear las estadísticas a través de Google Analytics. Puedes poner algún código HTML que se mostrará en la página de inicio de tu servidor.

Valores predeterminados de campaña de Mailtrain

Establece los valores predeterminados de la campaña, como el nombre de tu remitente, dirección predeterminada, nombre de remitente predeterminado, correo electrónico y URL, etc. Al enviar los correos electrónicos, si estas opciones no están configuradas, se utilizarán los valores predeterminados.

Configuraciones de Mailer

Finalmente, la configuración más importante es proporcionar las credenciales del servidor de correo electrónico. Puedes usar cualquier servidor SMTP o Amazon SES (Servicio de Correo Electrónico Simple). Si estás utilizando SMTP, proporciona el nombre de host del servidor de correo, puerto, nombre de usuario y contraseña de tu servidor SMTP. Si estás utilizando Amazon SES, proporciona la clave API y otras credenciales.

También puedes configurar tu propio servidor SMTP. solo sigue alguna de estas guías:

  • Cómo crear un servidor de correo completamente funcional utilizando Postal
  • Construir un servidor de correo completamente funcional en CentOS 6 con Postfix, Dovecot, PostgreSQL
  • Configuración de un servidor de correo utilizando Exim4, Clamav, Dovecot, SpamAssassin y mucho más en Debian

Ahora tienes un servidor Mailtrain completamente funcional instalado en tu servidor CentOS 7. Crea tu primera lista y comienza a enviar boletines a los suscriptores. Puedes crear una plantilla interactiva utilizando el editor WYSIWYG y enviar los correos electrónicos utilizando las campañas. Mailtrain también proporciona informes de los correos electrónicos enviados y abiertos. Puedes usar la pestaña de Automatización para crear disparadores que envían correos electrónicos cuando se realiza alguna acción específica. También puedes configurar el cifrado GPG. Si una lista tiene un campo personalizado para una clave pública GPG configurada, entonces los suscriptores pueden cargar su clave pública GPG para recibir mensajes cifrados de la lista.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.