Este tutorial le mostrará cómo instalar Mailtrain en Ubuntu 20.04 sin Docker. Mailtrain es una aplicación de boletín de noticias autohospedada de código abierto, una alternativa a los proveedores de servicios de correo electrónico comerciales como Mailchimp. Puede utilizar Mailtrain para enviar boletines a sus suscriptores de correo electrónico a través de su propio servidor de correo electrónico o utilizando cualquier servicio de retransmisión SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, etc.).
Actualizar :Se lanza Mailtrain V2. Los nuevos usuarios deben usar V2 en lugar de V1.24 :Cómo instalar Mailtrain v2 en el servidor Ubuntu 20.04
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).
- Le permite reanudar campañas de correo electrónico antiguas (enviar campañas antiguas a nuevos suscriptores).
Paso 1:elija el proveedor de alojamiento adecuado
El alojamiento propio puede ahorrarle mucho dinero. Mailtrain es un software gratuito y de código abierto. Solo necesita pagar $ 26 / mes por el VPS (servidor privado virtual), que puede ejecutar un servidor de correo con todas las funciones y la plataforma de marketing por correo electrónico Mailtrain. Puede manejar fácilmente millones de suscriptores. Por lo tanto, su costo total siempre es de $26/mes sin importar cuántos suscriptores tenga . Si posee millones de suscriptores en MailChimp, el costo sería de miles de dólares por mes.
No es una tarea fácil encontrar un proveedor de VPS (servidor privado virtual) adecuado para alojamiento de correo electrónico y marketing por correo electrónico. Muchas empresas de alojamiento como DigitalOcean bloquean el puerto 25. DigitalOcean no desbloquearía el puerto 25, por lo que deberá configurar el relé SMTP para evitar el bloqueo, lo que puede costarle dinero adicional. Si usa Vultr VPS, el puerto 25 está bloqueado de forma predeterminada. Pueden desbloquearlo si abre un ticket de soporte, pero pueden volver a bloquearlo en cualquier momento si deciden que su actividad de envío de correo electrónico no está permitida. Vultr en realidad puede volver a bloquearlo si usa sus servidores para enviar boletines.
Otro problema es que los spammers abusan de los grandes proveedores de hosting conocidos como DigitalOcean o Vultr. A menudo, la dirección IP del servidor está en varias listas negras. Vultr tiene algunos rangos de IP completos en la lista negra.
ScalaHosting es una muy buena opción para ejecutar un servidor de correo porque
- No bloquean el puerto 25.
- La dirección IP no está en ninguna lista negra de correo electrónico. (Al menos esto es cierto en mi caso. Elegí el centro de datos de Dallas). Definitivamente no desea aparecer en la temida lista negra de IP de Microsoft Outlook o en la lista negra de SpamRats. Algunas listas negras bloquean un rango completo de IP y no tiene forma de eliminar su dirección IP de este tipo de listas negras.
- Puede editar el registro PTR para mejorar la capacidad de entrega de correo electrónico.
- Le permiten enviar boletines a sus suscriptores de correo electrónico sin ninguna límites horarios o límite diario, cualquiera que sea. Tenga en cuenta que no puede enviar spam, también conocido como no solicitado correo electrónico a granel. Si el destinatario no le da permiso explícitamente para enviar correos electrónicos y usted se los envía, se trata de un correo electrónico no solicitado.
Recomiendo seguir el tutorial vinculado a continuación para configurar correctamente un servidor Linux VPS en ScalaHosting. Utilice el código de cupón linuxbabe2021
en ScalaHosting página de pago para ahorrar $100 si elige pagar 12 meses por adelantado.
- Cómo crear un servidor VPS Linux en ScalaHosting
También necesita un nombre de dominio. Registré mi nombre de dominio de NameCheap porque el precio es bajo y te brindan protección de privacidad whois gratis de por vida.
Si aún no tiene su propio servidor de correo, le recomiendo usar el programa gratuito iRedMail para configurar rápidamente su propio servidor de correo antes de instalar Mailtrain, para que no tenga que gastar dinero en el servicio comercial de retransmisión SMTP.
Paso 2:Instale 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 20.04.
sudo apt install mariadb-server mariadb-client
Una vez instalado, el servidor MariaDB debería iniciarse automáticamente. Usa systemctl para comprobar su estado.
systemctl status mariadb
Salida de muestra:
● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: e> Active: active (running) since Mon 2020-04-20 15:31:14 HKT; 52s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 1826628 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 9451) Memory: 73.0M CGroup: /system.slice/mariadb.service └─1826628 /usr/sbin/mysqld
Si no se está ejecutando, inícielo con este comando:
sudo systemctl start mariadb
Para permitir que MariaDB se inicie automáticamente en el momento del arranque del sistema, ejecute
sudo systemctl enable mariadb
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 ingrese 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).
Consulte la información de la versión del servidor MariaDB.
mariadb --version
Salida:
mariadb Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Paso 3: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 mariadb -u root
Cree una base de datos para Mailtrain usando el siguiente comando. Lo nombré 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 mtuser
y your-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 4: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 20.04 para ejecutar Mailtrain. Mailtrain requiere Node.js 7+. La última versión de Node.js es v14. Sin embargo, no recomiendo usar la última versión, porque no es compatible con Mailtrain v1.24. Para una mejor compatibilidad, recomiendo instalar Node.js 8 desde Snap Store.
Si instaló Node.js desde el repositorio oficial de APT, debe desinstalarlo, ya que interferiría con la versión Snap de Node.js.
sudo apt remove nodejs
A continuación, instale el demonio de complemento.
sudo apt install snapd
Hay varias versiones de Node.js en Snap Store, que se pueden ver con:
snap info node
Salida:
channels: latest/stable: – latest/candidate: – latest/beta: – latest/edge: 15.0.0-nightly2020042524a4e615 2020-04-25 (2668) 30MB classic 14/stable: 14.0.0 2020-04-23 (2647) 30MB classic 14/candidate: ↑ 14/beta: ↑ 14/edge: ↑ 13/stable: 13.13.0 2020-04-14 (2635) 29MB classic 13/candidate: ↑ 13/beta: ↑ 13/edge: ↑ 12/stable: 12.16.2 2020-04-23 (2644) 21MB classic 12/candidate: ↑ 12/beta: ↑ 12/edge: ↑ 11/stable: 11.15.0 2019-06-26 (2336) 19MB classic 11/candidate: ↑ 11/beta: ↑ 11/edge: ↑ 10/stable: 10.20.1 2020-04-23 (2638) 20MB classic 10/candidate: ↑ 10/beta: ↑ 10/edge: ↑ 9/stable: 9.11.2 2018-12-14 (1407) 17MB classic 9/candidate: ↑ 9/beta: ↑ 9/edge: ↑ 8/stable: 8.16.0 2019-06-24 (2310) 16MB classic 8/candidate: ↑ 8/beta: ↑ 8/edge: ↑ 6/stable: 6.17.1 2019-06-24 (2311) 13MB classic 6/candidate: ↑ 6/beta: ↑ 6/edge: ↑
Podemos instalar Node.js desde el canal 8/estable.
sudo snap install node --classic --channel=8/stable
Para verificar su versión de Node.js y npm, ejecute
node -v npm -v
Salida:
Nota :Si es la primera vez que instala un paquete Snap en el servidor, debe cerrar la sesión y volver a iniciarla para utilizar la versión Snap de Ruby.
Para compilar e instalar complementos nativos de npm, también necesita instalar herramientas de compilación:
sudo apt install -y build-essential
Paso 5: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
.
mariadb -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/
Instale Python2.7 y cree un enlace simbólico.
sudo apt install python2.7 sudo ln -s /usr/bin/python2.7 /usr/bin/python
E instale los paquetes de nodos necesarios.
cd /var/www/mailtrain sudo -u mailtrain npm config set scripts-prepend-node-path true sudo -u mailtrain npm install --no-progress --production --unsafe-perm=true
Copie el archivo de la unidad de servicio de Mailtrain 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
Cambiar /opt/mailtrain
a /var/www/mailtrain
. Y cambia /usr/bin/node
a /snap/bin/node
porque estamos usando la versión Snap de Node.js.
También puede comentar la siguiente línea. Porque, con la siguiente línea habilitada, si MySQL/MariaDB se reinicia, entonces mailtrain.service
también se reiniciará, y si el servidor MySQL/MariaDB se está actualizando, entonces mailtrain.service
se detendrá. Creo que no hay necesidad de requerir el mysql.service
.
Requires=mysql.service
Guarde y cierre este archivo. Luego inicie mailtrain.service
.
sudo systemctl start mailtrain.service
Compruebe su estado. Asegúrate de que se esté ejecutando.
systemctl status mailtrain.service
Salida:
● mailtrain.service - Mailtrain server Loaded: loaded (/etc/systemd/system/mailtrain.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2020-04-26 10:26:37 HKT; 11s ago Main PID: 3058360 (mailtrain) Tasks: 20 (limit: 9451) Memory: 228.6M CGroup: /system.slice/mailtrain.service ├─3058360 mailtrain └─3058396 /snap/node/2310/bin/node /var/www/mailtrain/services/sender.js
Habilite el inicio automático en el momento del arranque del sistema.
sudo systemctl enable 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
Paso 6:configurar el 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 20.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 DNS 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
Paso 7:habilite HTTPS con Let's Encrypt
Instale el cliente Let's Encrypt (certbot) en su servidor Ubuntu 20.04.
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 [email protected] -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.
htop
El comando me dice que mi servidor está usando alrededor de 500 MB de RAM. Si ejecuto Mailtrain con Docker, son unos 900 MB.
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
).
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 si usa Amazon SES. En realidad, también puede usar otros servicios de retransmisión SMTP en el 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.
Si Mailtrain está instalado en su servidor de correo electrónico, debe usar la siguiente configuración de SMTP. El nombre de host debe ser 127.0.0.1 y el puerto debe ser 25. No es necesario habilitar el cifrado o la autenticación cuando se habla con localhost.
Guarde su configuración. Luego puedes crear una lista para probar las funcionalidades de Mailtrain.
Cómo habilitar el caché de Redis
Puede instalar el servidor Redis para el caché de sesión. Esto permitirá que Mailtrain ejecute 5 procesos en lugar del proceso único predeterminado, lo que acelerará la entrega de correo electrónico si tiene muchos suscriptores de correo electrónico (tenga en cuenta que esto aumentará el uso de memoria en unos 250 MB).
sudo apt install redis
Una vez instalado, Redis debería iniciarse automáticamente. Puede comprobar su estado con:
systemctl status redis
Salida de muestra:
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-04-26 11:02:03 HKT; 4min 23s ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 3059455 (redis-server) Tasks: 4 (limit: 9451) Memory: 2.3M CGroup: /system.slice/redis-server.service └─3059455 /usr/bin/redis-server 127.0.0.1:6379
Si no se está ejecutando, puede iniciarlo con:
sudo systemctl start redis
Habilitar el inicio automático en el momento del arranque:
sudo systemctl enable redis
A continuación, edite el archivo de configuración de Mailtrain.
sudo nano /var/www/mailtrain/config/production.toml
Agregue las siguientes dos líneas al final del archivo para habilitar Redis.
[redis] enabled=true
Guarde y cierre el archivo. Luego reinicie Mailtrain.
sudo systemctl restart 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 usa un servicio de retransmisión SMTP para enviar correos electrónicos, ellos manejarán 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, entonces 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
Nota:si usó iRedMail para configurar su servidor de correo, entonces transport_maps
El parámetro tiene algunos otros valores. Debe agregar el valor al final como se muestra a continuación.
transport_maps = proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf hash:/etc/postfix/transport
Guarde y cierre el archivo. Luego reinicie Postfix para que el cambio surta efecto.
sudo systemctl restart postfix
Manejo de mensajes rebotados a través del registro de Postfix
Esto supone que Mailtrain está instalado en su servidor de correo electrónico.
Mailtrain puede detectar mensajes rebotados del registro de correo de Postfix al encontrar líneas que contengan status=bounced
. Primero, debe habilitar el servidor de lectura de registros de Postfix. Edite el production.toml
archivo.
sudo nano /var/www/mailtrain/config/production.toml
Agrega el siguiente texto.
[postfixbounce] enabled=true
Guarde y cierre el archivo. Luego reinicie Mailtrain para que los cambios surtan efecto.
sudo systemctl restart mailtrain
Ahora el servidor de lectura de registros de Postfix está escuchando en 127.0.0.1:5699. Para dejar que lea el registro de Postfix, ejecute el siguiente comando.
tail -F /var/log/mail.log | nc localhost 5699 -
Para que se ejecute en segundo plano, puede crear una unidad de servicio systemd.
sudo nano /etc/systemd/system/bouncetail.service
Agrega el siguiente texto.
[Unit] Description=Postfix bounce notifier After=mailtrain.service [Service] ExecStart=/bin/sh -c '/usr/bin/tail -F /var/log/mail.log | nc localhost 5699 -' Type=simple Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Guarde y cierre el archivo. Luego inicie este servicio y habilite el inicio automático en el momento del arranque.
sudo systemctl start bouncetail sudo systemctl enable bouncetail
Asegúrese de reiniciar el servicio bouncetail después de reiniciar el servicio mailtrain. Descubrí que el servicio Bouncetail provoca un uso elevado de la CPU en mi servidor, por lo que no utilizo este método.
Actualizar
Después de usar Mailtrain en mi propio servidor durante algún tiempo, descubrí que hay otras razones que causan el rebote de correo electrónico. Los siguientes son rebotes suaves.
- El buzón del destinatario está lleno.
- Su dirección IP está en una lista negra.
- El servidor de correo electrónico del destinatario está inactivo o fuera de línea.
También hay rebote duro, es decir, la dirección de correo electrónico del destinatario no existe. De forma predeterminada, Mailtrain cancela la suscripción de una dirección de correo electrónico si se detecta un rebote, lo cual está bien para rebotes duros, pero es una buena idea permitir varios rebotes suaves antes de cancelar la suscripción de la dirección de correo electrónico incorrecta. Puede solicitar al servidor de correo electrónico receptor que elimine su dirección IP de la lista negra y luego volver a suscribir la dirección de correo electrónico relacionada.
Subir Imágenes en Mailtrain
Para cargar imágenes en Mailtrain, debe instalar imagemagick
paquete. Sin él, Mailtrain podría arrojar errores al cargar imágenes.
sudo apt install imagemagick
Cómo insertar un formulario de registro en su sitio web
Primero, debe habilitar el uso compartido de recursos entre orígenes. Edite el production.toml
archivo.
sudo nano /var/www/mailtrain/config/production.toml
Agregue la siguiente línea en el archivo para incluir su sitio web en la lista blanca.
[cors] # Allow subscription widgets to be embedded origins=['https://www.example.com']
Guarde y cierre el archivo. Luego reinicie Mailtrain para que el cambio surta efecto.
sudo systemctl restart mailtrain
A continuación, agregue el siguiente código en su sitio web para mostrar el formulario de registro. Reemplace el texto de color rojo con el nombre de dominio de Mailtrain y su propia ID de lista.
<div data-mailtrain-subscription-widget data-url="https://newsletter.example.com/subscription/8ljDT9KMGr/widget"> <a href="https://newsletter.example.com/subscription/8ljDT9KMGr">Subscribe to our list</a> </div> <script src="https://newsletter.example.com/subscription/widget.js"></script>
Luego agregue reglas de CSS personalizadas para que sea más atractivo visualmente.
Cómo crear usuarios adicionales en Mailtrain
Mailtrain v2 permitirá al administrador crear múltiples usuarios con permisos de usuario granulares y uso compartido flexible. Pero con la versión actual v.1.24.1, puede crear usuarios solo a través de la base de datos. Inicie sesión en la consola MySQL/MariaDB.
sudo mysql -u root
Usa el mailtrain
base de datos.
USE mailtrain;
Luego cree una entrada de usuario con el siguiente comando SQL.
INSERT INTO `users` (`username`, `password`, `email`, `access_token`, `reset_token`, `reset_expire`, `created`) VALUES ('your-username',PASSWORD("your-password"),'[email protected]',NULL,NULL,NULL,NOW());
Salga del servidor de la base de datos.
EXIT;
Descubrí que los usuarios creados de esta manera no pueden iniciar sesión en la interfaz web de Mailtrain la primera vez. Los usuarios deben usar el enlace "Olvidé mi contraseña" en la página de inicio de sesión para restablecer su contraseña, luego el inicio de sesión debería funcionar. También tenga en cuenta que todos los usuarios tienen permiso administrativo en la interfaz web de Mailtrain.
Cómo importar una lista de correo electrónico desde MailChimp
Primero, debes ir a la Audience
pestaña en su tablero de MailChimp. Haga clic en View Contacts
botón para mostrar todos los suscriptores. Luego haz clic en Export Audience
botón para exportar su lista como un archivo CSV.
Luego vaya al panel de control de Mailtrain y seleccione su lista de correo electrónico. Seleccione List Actions
botón desplegable y haga clic en Import Subscribers
.
En la página siguiente, deberá cargar el archivo CSV descargado de MailChimp.
Luego, debe hacer coincidir los campos de MailChimp con los campos de su lista de correo electrónico de Mailtrain. Si algunos de los campos de MailChimp no existen en la lista de correo electrónico de Mailtrain, puede crearlos en el panel de control de Mailtrain.
Tenga en cuenta que si sus campos de MailChimp contienen botones de opción, también debe crear botones de opción en los campos de Mailtrain. Sin embargo, debe segmentar su lista de MailChimp en función del valor del botón de opción, luego exportar estos segmentos a diferentes archivos CSV e importarlos a Mailtrain un segmento a la vez. Esto se debe a que Mailtrain no proporciona una forma de hacer coincidir los valores de cada botón de opción de MailChimp.
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.
Cómo exportar sus listas de correo electrónico en Mailtrain
No hay un botón de exportación en el panel de administración de Mailtrain. Sin embargo, si ha instalado phpMyAdmin en el servidor, puede exportar sus listas de correo electrónico desde allí. Seleccione la base de datos de mailtrain en phpMyAdmin, luego seleccione la tabla que almacena sus listas de correo electrónico. En mi caso, la subscription__1
y subscription__2
las tablas almacenan la información de los suscriptores.
Luego haga clic en export
botón para guardar la tabla como un archivo. Tenga en cuenta que hay 2 botones de exportación. Debe hacer clic en el segundo botón de exportación para exportar toda la tabla. El primer botón de exportación solo exportará los registros visibles actuales en la tabla.
A continuación, puede elegir el formato de archivo para el archivo de exportación. Finalmente, haga clic en el botón Ir.
Cómo ocultar la página de inicio de Mailtrain
Si no desea que los visitantes vean su página de inicio de Mailtrain, puede configurar un redireccionamiento permanente 301 para redirigir a los visitantes a la página de inicio de su sitio web agregando el siguiente código en el archivo de configuración de Nginx de Mailtrain.
location = / { return 301 http://www.your-domain.com; }
Guarde y cierre el archivo. Luego, vuelva a cargar Nginx para que el cambio surta efecto.
sudo systemctl reload nginx
Debe recordar la URL de inicio de sesión de Mailtrain.
https://newsletter.your-domain.com/users/login
De forma predeterminada, el botón de inicio de sesión lo redirigirá a la página de inicio de Mailtrain, por lo que debe recordar otra URL.
https://newsletter.your-domain.com/lists
Esto le permite administrar sus listas y otras cosas en el tablero.
Cómo insertar opciones en el formulario de registro
Si desea dar opciones en el formulario de registro para que el visitante seleccione, entonces necesita crear campos personalizados. Ve a tu lista y selecciona custom fields
en la List Actions
menú desplegable y crear un campo personalizado.
Primero, debe crear un campo que se convertirá en la pregunta de encabezado de la lista de opciones. En Field Type
, puede seleccionar radio button
(para una sola opción) o checkboxes
(para opciones múltiples). En Group
, no seleccione nada, porque este campo se convertirá en un grupo de opciones.
Luego cree un campo personalizado para cada opción. Debe elegir la opción option for a group value
en Field Type
y elija el nombre de archivo personalizado anterior en Group
.
Cómo cambiar el tipo de campo
De forma predeterminada, la interfaz web de Mailtrain no le permite cambiar el tipo de archivo, pero puede cambiarlo en la base de datos de Mailtrain. Por ejemplo, necesito cambiar un tipo de campo de checkboxes
a radio button
.
Recomiendo hacer una copia de seguridad de la base de datos antes de cambiar cualquier cosa en la base de datos. Puede ejecutar el siguiente comando para hacer una copia de seguridad de la base de datos de Mailtrain.
sudo mysqldump -u root mailtrain > mailtrain.sql
Luego inicie sesión en el servidor de la base de datos MariaDB.
sudo mysql -u root
Usa el mailtrain
base de datos.
USE mailtrain;
Todos los campos personalizados se almacenan en custom_fields
mesa. Puedes consultar su contenido con:
SELECT * FROM custom_fields;
Busque el campo personalizado que desea modificar y ejecute el siguiente comando SQL para cambiar su tipo. Reemplace el número de identificación con el suyo propio.
UPDATE custom_fields SET type = 'radio' Where id = 3;
Salga del servidor de la base de datos.
EXIT;
Cómo limpiar su lista de correo electrónico en Mailtrain
Los suscriptores no comprometidos no le harán ganar dinero y, debido a que no abren su correo electrónico, los proveedores de buzones de correo reducirán la reputación de su dominio. Para asegurarse de que su futuro correo electrónico llegue a la bandeja de entrada, debe eliminar a los suscriptores no comprometidos de su lista de correo electrónico.
Puede crear un segmento para las personas que no abrieron su correo electrónico en los últimos 60 días y luego eliminar sus direcciones de correo electrónico. La regla para este segmento es la siguiente:
Requisito de RAM
Mailtrain puede usar bastante RAM. Asegúrese de que su servidor tenga al menos 1 GB de RAM libre. Por ejemplo, si el uso actual de RAM es de 4 GB, entonces la RAM total debe ser de al menos 5 GB. Si se agota la memoria RAM, los correos electrónicos en Mailtrain podrían rebotar.