GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instale la aplicación Mailtrain Self-Hosted Newsletter en el servidor Ubuntu 16.04

Este tutorial le mostrará cómo instalar Mailtrain en el servidor Ubuntu 16.04. Mailtrain es una aplicación de boletín de noticias autohospedado de código abierto, una alternativa a los proveedores de servicios de correo electrónico comerciales como Mailchimp. Puede usar Mailtrain para enviar correos electrónicos a sus suscriptores de correo electrónico a través de su propio servidor de correo electrónico o mediante cualquier servicio de retransmisión SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, etc.).

Mailtrain se publica bajo los términos de la licencia GPL v3.0, basada en Node.js y MySQL/MariaDB. La última versión es v1.24.1, lanzada el 28 de septiembre de 2018. Las características de Mailtrain son las siguientes:

  • Te permite administrar fácilmente grandes listas de correo (como 1 millón de suscriptores).
  • Puede agregar suscriptores manualmente, a través de la API o importar desde un archivo CSV.
  • Admite campos personalizados (campos de texto, números, menús desplegables o casillas de verificación), etiquetas de combinación y formularios personalizados.
  • Segmentación de listas.
  • Campaña RSS:genera automáticamente un boletín a partir de un feed RSS y envíalo a los suscriptores.
  • Los suscriptores pueden cargar sus claves públicas GPG y Mailtrain cifrará el boletín para ellos.
  • Le permite comprobar estadísticas de clics individuales para cada enlace.
  • Editores avanzados de plantillas de correo electrónico y editor de código HTML.
  • Automatización:envíe correos electrónicos específicos cuando el usuario active su disparador predefinido.
  • Puede crear una lista de correo electrónico abierta (permitir la suscripción pública) y una lista de correo electrónico cerrada (el administrador agrega los suscriptores a la lista).

Requisitos previos para instalar Mailtrain en el servidor Ubuntu 16.04

Para ejecutar Mailtrain, necesita un servidor con al menos 1 GB de RAM. Puede hacer clic en este enlace especial para obtener $100 de crédito gratis en DigitalOcean. (Solo para nuevos usuarios). Si ya es usuario de DigitalOcean, puede hacer clic en este enlace especial para obtener $ 50 de crédito gratis en Vultr (solo para nuevos usuarios). Una vez que tenga una cuenta en DigitalOcean o Vultr, instale Ubuntu 16.04 en su servidor y siga las instrucciones a continuación.

También es necesario tener un nombre de dominio. Registré mi nombre de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois de forma gratuita.

Paso 1:Instalar el servidor de base de datos MariaDB

Los datos de sus suscriptores se almacenarán en una base de datos. Mailtrain es compatible con MySQL y MariaDB. MariaDB es un reemplazo directo para MySQL. Está desarrollado por antiguos miembros del equipo de MySQL que están preocupados de que Oracle pueda convertir a MySQL en un producto de código cerrado. Así que instalemos el servidor de base de datos MariaDB.

Ingrese el siguiente comando para instalarlo en Ubuntu 16.04.

sudo apt install mariadb-server mariadb-client

Una vez instalado, el servidor MariaDB debería iniciarse automáticamente. Usar systemctl para comprobar su estado.

systemctl status mysql

Salida de muestra:

● mariadb.service - MariaDB 10.1.34 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-09-08 11:13:27 UTC; 21s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 3473 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 505)
   CGroup: /system.slice/mariadb.service
           └─3473 /usr/sbin/mysqld

Si no se está ejecutando, inícielo con este comando:

sudo systemctl start mysql

Para permitir que MariaDB se inicie automáticamente en el momento del arranque del sistema, ejecute

sudo systemctl enable mysql

Ahora ejecute el script de seguridad posterior a la instalación.

sudo mysql_secure_installation

Cuando le pida que ingrese la contraseña raíz de MariaDB, presione la tecla Intro ya que la contraseña raíz aún no está configurada. Luego ingresa y para establecer la contraseña raíz para el servidor MariaDB.

A continuación, puede presionar Entrar para responder a todas las preguntas restantes, lo que eliminará al usuario anónimo, deshabilitará el inicio de sesión raíz remoto y eliminará la base de datos de prueba. Este paso es un requisito básico para la seguridad de la base de datos MariaDB. (Tenga en cuenta que la letra Y está en mayúscula, lo que significa que es la respuesta predeterminada).

Paso 2:Crear una base de datos y un usuario para Mailtrain

Ahora debemos iniciar sesión en la consola de MariaDB y crear una base de datos y un usuario para Mailtrain. De forma predeterminada, el paquete MaraiDB en Ubuntu usa unix_socket para autenticar el inicio de sesión del usuario, lo que básicamente significa que puede usar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Entonces puede ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña de root de MariaDB.

sudo mysql -u root

Cree una base de datos para Mailtrain usando el siguiente comando. Lo llamé mailtrain , pero puedes usar el nombre que quieras. (No omita el punto y coma).

create database mailtrain;

Luego ingrese el siguiente comando para crear un usuario de base de datos para Mailtrain y otorgar todos los privilegios de la base de datos de Mailtrain al usuario. Reemplazar mtuseryour-password con su nombre de usuario y contraseña preferidos.

grant all privileges on mailtrain.* to mtuser@localhost identified by 'mtuser_password';

A continuación, cree un usuario con acceso de solo lectura a la base de datos de mailtrain. Nombré a este usuario mt_readonly .

grant select on mailtrain.* TO mt_readonly@localhost identified by 'mt_readonly_password';

Vacíe la tabla de privilegios para que los cambios surtan efecto y luego salga de la consola de MariaDB.

flush privileges;

exit;

Paso 3:Instalar Node.js

Mailtrain se basa en Node.js, que es un entorno de tiempo de ejecución de JavaScript que traduce el código JavaScript legible por humanos en código de máquina. Entonces, necesitamos instalar Node.js en Ubuntu 16.04 para ejecutar Mailtrain. Mailtrain requiere Node.js 7+. Este tutorial instalará la versión LTS actual de Node.js (V8.x) desde el repositorio de NodeSource.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt install -y nodejs

Los nodejs El paquete contiene el binario npm (administrador de paquetes Node.js), por lo que no es necesario instalarlo por separado. Para verificar su versión de Node.js y npm, ejecute

node -v

npm -v

Salida:

Para compilar e instalar complementos nativos de npm, también necesita instalar herramientas de compilación:

sudo apt install -y build-essential

Paso 4:Ejecutar Mailtrain

Vaya a /var/www/ y obtener archivos de Mailtrain de Github.

cd /var/www/

sudo git clone https://github.com/Mailtrain-org/mailtrain.git

Importe los datos SQL iniciales a la base de datos de mailtrain usando el siguiente comando. Debe ingresar la contraseña de mtuser .

mysql -u mtuser -p mailtrain < /var/www/mailtrain/setup/sql/mailtrain.sql

Cree el archivo de configuración production.toml.

sudo nano /var/www/mailtrain/config/production.toml

En este archivo, puede agregar configuraciones que reemplazan las configuraciones predeterminadas en /var/www/mailtrain/config/default.toml expediente. Solo necesitamos agregar las siguientes configuraciones.

user="mailtrain"
group="mailtrain"
[log]
level="error"
[www]
secret="Replace this with some random characters"
[mysql]
user="mtuser"
password="mtuser_password"
[queue]
processes=5

Guarde y cierre el archivo. Luego crea el mailtrain usuario y grupo para que se ejecute el demonio mailtrain. Tenga en cuenta que no necesitamos crear una contraseña para este usuario, por lo que creamos un usuario del sistema en lugar de un usuario normal.

sudo adduser --system --group mailtrain

Cree un archivo de configuración para el trabajador de informes.

sudo nano /var/www/mailtrain/workers/reports/config/production.toml

Agregue las siguientes configuraciones. Este trabajador de informes tendrá acceso de solo lectura a la base de datos de mailtrain.

[log]
level="error"
[mysql]
user="mt_readonly"
password="mt_readonly_password"

Guarde y cierre el archivo. Luego cambie el permiso de /var/www/mailtrain/ .

sudo chown mailtrain:mailtrain /var/www/mailtrain/ -R

sudo chmod o-rwx /var/www/mailtrain/config/

E instale los paquetes de nodos necesarios.

cd /var/www/mailtrain

sudo npm install --no-progress --production --unsafe-perm=true

Copie el archivo de la unidad de servicio de systemd en /etc/systemd/system/ directorio.

sudo cp /var/www/mailtrain/setup/mailtrain.service /etc/systemd/system/

Abre este archivo.

sudo nano /etc/systemd/system/mailtrain.service

Porque descargamos Mailtrain a /var/www/mailtrain/ directorio, así que cambie el directorio de trabajo de /opt/mailtrain a /var/www/mailtrain . Guarde y cierre este archivo. Luego inicie mailtrain.service .

sudo systemctl start mailtrain.service

Habilite el inicio automático en el momento del arranque del sistema.

sudo systemctl enable mailtrain.service

Compruebe su estado. Asegúrate de que esté funcionando. Si la salida dice activación (reinicio automático), espere unos momentos para que se inicie Mailtrain.

sudo systemctl status mailtrain.service

Ahora que Mailtrain se está ejecutando, puede acceder a la interfaz web de Mailtrain a través del puerto 3000.

your-server-ip:3000

Configurar proxy inverso y habilitar HTTPS

Antes de usar la interfaz web de Mailtrain, pongámosla detrás de Nginx y luego habilitemos HTTPS. Instale el servidor web Nginx en Ubuntu 16.04 con:

sudo apt install nginx

Ahora puedes copiar el ejemplo mailtrain-nginx.conf archivo a /etc/nginx/conf.d/ directorio.

sudo cp /var/www/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/

Abre este archivo.

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

Busque la siguiente línea.

server_name mailtrain.org www.mailtrain.org;

Cambiar el valor de server_name parámetro a su propio nombre de dominio como newsletter.your-domain.com . No olvide crear un registro A para este subdominio.

server_name newsletter.linuxbabe.com;

Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora debería poder acceder a la interfaz web de Mailtrain a través de su subdominio: newsletter.your-domain.com .

Ahora edite /var/www/mailtrain/config/production.toml archivo.

sudo nano /var/www/mailtrain/config/production.toml

En el [www] sección, agregue las siguientes dos líneas para indicar que mailtrain está detrás del proxy Nginx y haga que escuche solo en la dirección del host local.

host="127.0.0.1"
proxy=true

Guarde y cierre el archivo. Luego reinicie Mailtrain para que el cambio surta efecto.

sudo systemctl restart mailtrain

Habilitar HTTPS con Let's Encrypt

Instale el cliente Let's Encrypt (certbot) en su servidor Ubuntu 16.04.

sudo apt install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

sudo apt install certbot python3-certbot-nginx

Luego, puede usar el complemento Nginx para obtener e instalar automáticamente un certificado TLS ejecutando el siguiente comando.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address -d newsletter.your-domain.com

Ahora puede acceder a la interfaz web de Mailtrain a través de su nombre de dominio y una conexión HTTPS segura.

Iniciar sesión con nombre de usuario admin y contraseña test . Luego cambie la dirección de correo electrónico y la contraseña de su cuenta. Ve a settings página para cambiar las configuraciones predeterminadas. Debe cambiar la dirección del servicio de http://localhost:3000/ a su subdominio (https://newsletter.your-domain.com ).

Nota:la cuenta de administrador es un objetivo fácil para los piratas informáticos. Para mayor seguridad, se recomienda que cambie el nombre de usuario de admin a otra cosa La interfaz web de Mailtrain no ofrece esa opción, pero puede cambiar el nombre de usuario en la base de datos MariaDB mediante el comando SQL.

En la Mailer Settings , puede usar SMTP si tiene su propio servidor de correo electrónico o usar Amazon SES. En realidad, también puede usar otros servicios de retransmisión SMTP en SMTP pestaña. En la captura de pantalla a continuación, uso mi propio servidor de correo electrónico. Los correos electrónicos se enviarán en el puerto 587 con cifrado STARTTLS.

Guarde su configuración. Luego puedes crear una lista para probar las funcionalidades de Mailtrain.

Cómo manejar mensajes devueltos en Mailtrain

Tarde o temprano, su lista de correo electrónico contendrá direcciones a las que no podrá enviar correos electrónicos. Por ejemplo, cuando un suscriptor que usa una dirección de correo electrónico de la empresa deja la empresa, esa dirección de correo electrónico se eliminará. Por lo tanto, su servidor de correo electrónico recibirá un mensaje de rebote que indica que el correo electrónico no se puede entregar.

Si utiliza un servicio de retransmisión SMTP para enviar correos electrónicos, ellos se encargarán de los mensajes devueltos por usted. Si usa su propio servidor de correo electrónico para enviar correos electrónicos, entonces necesita manejar los mensajes devueltos en Mailtrain. Mailtrain ofrece dos formas de gestionar los mensajes devueltos.

  • a través de VERP
  • a través del registro de Postfix

Yo personalmente uso el método VERP, porque es ampliamente utilizado en la comunidad de correo electrónico y también porque el segundo método provoca un alto uso de la CPU en mi servidor.

Gestión de rebotes VERP

Con VERP (ruta de devolución de sobre variable), el administrador de su lista de correo electrónico utiliza direcciones de sobre únicas para cada suscriptor. Para habilitar VERP, edite el production.toml archivo.

sudo nano /var/www/mailtrain/config/production.toml

Si su host de Mailtrain no tiene un servidor SMTP en ejecución, agregue el siguiente texto.

[verp]
enabled=true
port=25
disablesenderheader=true

Si su servidor Mailtrain tiene un servidor SMTP como Postfix en ejecución, agregue el siguiente texto. El servidor de gestión de rebotes escuchará en 127.0.0.1:2525 .

[verp] 
enabled=true 
port=2525 
host="127.0.0.1"
disablesenderheader=true

Guarde y cierre el archivo. Luego reinicie Mailtrain para que los cambios surtan efecto.

sudo systemctl restart mailtrain

En la interfaz web de Mailtrain, vaya a Settings -> VERP Bounce Handlding . Marque Use VERP to catch bounces . Guarde su configuración.

A continuación, debe crear un registro MX para el nombre de host del servidor (bounces.your-domain.com ), luego agregue un registro para este nombre de host, apuntando a su host de Mailtrain, para que los mensajes de rebote se puedan enviar a su host de Mailtrain. Cada suscriptor en su lista tendrá una dirección de sobre única como [email protected] .

Tenga en cuenta que si implementó un registro DMARC para su nombre de dominio, entonces la alineación SPF debe establecerse en modo relajado. Si está configurado en modo estricto, su boletín podría fallar en la verificación de DMARC.

Si el servidor de manejo de rebotes de Mailtrain está escuchando en el puerto 2525 de 127.0.0.1 y el servidor SMTP de Postfix está escuchando en el puerto 25 de la dirección IP pública, entonces debe configurar el mapa de transporte para que Postfix pueda transmitir el mensaje de rebote a Mailtrain. Cree el archivo de mapa de transporte.

sudo nano /etc/postfix/transport

Agregue la siguiente línea a este archivo. Esto le dice a Postfix que retransmita correos electrónicos con direcciones como [email protected] al servidor de gestión de rebotes de Mailtrain.

bounces.your-domain.com  smtp:[127.0.0.1]:2525

Guarde y cierre el archivo. Luego genere el archivo de índice.

sudo postmap /etc/postfix/transport

Edite el archivo de configuración principal de Postfix.

sudo nano /etc/postfix/main.cf

Agregue la siguiente línea al archivo.

transport_maps = hash:/etc/postfix/transport

Guarde y cierre el archivo. Luego reinicie Postfix para que el cambio surta efecto.

sudo systemctl restart postfix

Trabajo de Cron para limpiar automáticamente las direcciones de correo electrónico canceladas

Puede eliminar manualmente las direcciones de correo electrónico canceladas en el panel de administración basado en la web de Mailtrain, pero es mucho más eficiente eliminarlas usando los comandos MySQL/MariaDB, luego simplemente cree un trabajo Cron para automatizar esta tarea.

Primero, inicie sesión en el servidor de base de datos MySQL/MariaDB.

sudo mysql -u root

Luego conéctese a la base de datos de mailtrain.

use mailtrain;

La información de los suscriptores se almacena en la subscription mesas. Si tiene varias listas de correo, entonces tendrá varias subscription mesas. Puede listar todas estas tablas usando el siguiente comando SQL.

show tables like 'subscription%';

Salida en mi servidor.

+-------------------------------------+
| Tables_in_mailtrain (subscription%) |
+-------------------------------------+
| subscription                        |
| subscription__1                     |
| subscription__2                     |
+-------------------------------------+

La primera mesa es una mesa vacía. Tengo dos listas en Mailtrain. Se almacenan en subscription__1 y subscription__2 mesa. Las direcciones de correo electrónico suscritas tienen un código de estado establecido en 1 . Las direcciones de correo electrónico canceladas tienen un código de estado establecido en 2 . Entonces, para eliminar las direcciones de correo electrónico canceladas, puede ejecutar los siguientes comandos SQL.

DELETE FROM subscription__1 where status = '2';
DELETE FROM subscription__2 where status = '2';

Para salir del servidor de base de datos MySQL/MariaDB, ejecute

exit;

Ahora abra el archivo crontab del usuario root.

sudo crontab -e

Agregue las siguientes dos líneas.

# Delete unsubscribed email addresses from mailing list daily
@daily /usr/bin/mysql -u root mailtrain -Bse "DELETE FROM subscription__1 where status = '2';DELETE FROM subscription__2 where status = '2';"

Guarde y cierre el archivo. Y listo.

Lidiar con el registro malicioso

Hay personas que no tienen nada que hacer más que usar una dirección de correo electrónico falsa para registrarse en su lista de correo electrónico, por lo que el correo electrónico de confirmación de registro se enviará a una dirección de correo electrónico falsa y es posible que reciba un informe de correo electrónico no entregado en su bandeja de entrada.

Puede usar su webmail como roundcube para crear un filtro, que elimina automáticamente este tipo de mensaje de correo electrónico. En la siguiente captura de pantalla, puede ver que creé un filtro que elimina automáticamente un mensaje si

  • El asunto contiene "Correo no entregado devuelto al remitente"
  • El informe de mensajes no entregados se envía a mi dirección.
  • El cuerpo contiene "Por favor, confirme la suscripción". (Porque el correo electrónico de confirmación de registro contiene esta frase).


Ubuntu
  1. Instalar servidor SSH Ubuntu 22.04

  2. Cómo instalar MariaDB en Ubuntu 18.04

  3. Cómo instalar MariaDB en Ubuntu 20.04

  4. Instale MariaDB 10.1 Estable en Ubuntu 14.04

  5. Cómo instalar MariaDB en Ubuntu 22.04

Cómo instalar Plex Media Server en Ubuntu 16.04 Server/Desktop

Instale la aplicación Mailtrain Self-Hosted Newsletter en el servidor Ubuntu 16.04

Instale Mailtrain v1.24 en el servidor Ubuntu 20.04 sin Docker

Instale OpenLiteSpeed, MariaDB, PHP8.0 en el servidor Ubuntu 20.04/18.04

Cómo instalar MariaDB en Ubuntu 16.04

Cómo instalar el servidor EteSync en Ubuntu 20.04 LTS