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 updateInstalar 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 nodejsInstalar 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.repoAgrega 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 mariadbPara iniciar MariaDB y habilitarlo para que se inicie al arrancar, utiliza los siguientes comandos.
systemctl start mariadb
systemctl enable mariadbAhora ejecuta los siguientes comandos para asegurar tu instalación de MySQL o MariaDB.
mysql_secure_installationEjecutará 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 -pEsto 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++ makeImageMagick 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 redisDescargar e instalar Mailtrain
Clona los archivos de instalación de Mailtrain usando Git.
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrainCrea 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/mailtrainEl 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/mailtrainAntes 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.tomlPuebla 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.tomlPuebla 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 --productionUna vez que la aplicación esté instalada, puedes iniciarla inmediatamente usando:
NODE_ENV=production npm startSi 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/configConfiguració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.servicePuebla 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 mailtrainPara verificar el estado del servicio, ejecuta:
systemctl status mailtrainDeberí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/mailtrainPuebla 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 nginxCrea un nuevo archivo de bloque de servidor para el host virtual de Nginx:
nano /etc/nginx/conf.d/mailtrain.confPuebla 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 nginxConfigurar 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 --reloadSi 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:
getenforceSi tienes SELinux habilitado, entonces ejecuta:
setsebool -P httpd_can_network_connect 1Accediendo 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.

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.

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.

Además, es importante actualizar la configuración antes de que puedas usar 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.

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.

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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.