Installazione Mailtrain · 10 min read · Sep 29, 2025

Come installare l'applicazione Mailtrain Newsletter su CentOS 7

Mailtrain è un’applicazione newsletter open source auto-ospitata scritta in Node.js. Utilizza una libreria Node.js molto popolare, Nodemailer, per inviare le email. Offre automazione e analisi eccezionali senza alcun costo. Puoi facilmente creare o importare un elenco di email di un milione di indirizzi email utilizzando l’importazione di file CSV. Supporta anche campi e moduli personalizzati. Fornisce automazione tramite trigger, che possono inviare messaggi specifici a utenti specifici quando l’azione viene attivata. Puoi utilizzare qualsiasi fornitore di email per inviare la newsletter che supporta il protocollo SMTP insieme al supporto per Amazon SES, ZoneMTA, SendGrid e Mailgun, ecc. Fornisce più editor WYSIWYG per creare bellissimi modelli per le newsletter.

In questo tutorial, installeremo Mailtrain insieme a tutte le dipendenze necessarie su CentOS 7. Configureremo anche Nginx come proxy inverso per servire l’applicazione sulla porta HTTP standard.

Requisiti

Mailtrain richiede almeno 1 GB di RAM. Tutte le dipendenze necessarie saranno installate durante il tutorial. Avrai bisogno di un’installazione minima di CentOS 7 con accesso root. Se sei connesso come utente non root, puoi eseguire sudo -i per passare all’utente root.

Aggiorna il sistema di base

Prima di installare qualsiasi pacchetto, è consigliabile aggiornare i pacchetti e il repository utilizzando il seguente comando.

yum -y update

Installa Node.js

Node.js è richiesto da Mailtrain poiché è costruito utilizzando Nodemailer. Node.js è un runtime JavaScript molto popolare e Nodemailer è un modulo per le applicazioni Node.js per inviare email.

Aggiungi il repository Node.js 8.x:

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

Installa Node.js.

yum -y install nodejs

Installa MariaDB

Per memorizzare il database di Mailtrain, dovremo installare MariaDB. MariaDB è un fork di MySQL. Installa il repository di MariaDB nel tuo sistema.

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

Aggiungi le seguenti righe al file.

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

Ora installa MariaDB eseguendo.

yum -y install mariadb-server mariadb

Per avviare MariaDB e abilitarlo per l’avvio all’accensione, utilizza i seguenti comandi.

systemctl start mariadb  
systemctl enable mariadb

Ora esegui i seguenti comandi per mettere in sicurezza la tua installazione di MySQL o MariaDB.

mysql_secure_installation

Eseguirà un piccolo script che ti chiederà di fornire la password root per MariaDB. Poiché abbiamo appena installato MariaDB, la password root non è impostata, premi semplicemente invio per procedere. Ti chiederà se desideri impostare una password root per la tua installazione di MariaDB, scegli y e imposta una password forte per l’installazione. Ti chiederà anche di rimuovere i database di test e gli utenti anonimi. La maggior parte delle domande sono autoesplicative e dovresti rispondere sì o y a tutte le domande.

Mailtrain richiede due utenti di database per funzionare, uno per amministrare il database di Mailtrain e un altro per generare i report dei lavoratori.

Per creare un database, dovremo prima accedere alla riga di comando di MySQL. Esegui il seguente comando per farlo.

mysql -u root -p

Questo ti chiederà la password, fornisci la password root di MySQL che hai impostato in precedenza. Ora esegui la seguente query per creare un nuovo database per la tua installazione di Mailtrain.

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

La query sopra creerà un database chiamato mailtrain. Assicurati di utilizzare il punto e virgola alla fine di ogni query poiché la query termina sempre con un punto e virgola. Una volta creato il database, puoi creare un nuovo utente e concedere tutti i permessi all’utente per il database. Non è consigliato utilizzare l’utente root per i database. Per creare un nuovo utente di database, esegui la seguente query.

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

La query sopra creerà un utente con il nome utente mailtrain. Puoi utilizzare qualsiasi nome utente preferito invece di mailtrain. Sostituisci StrongPassword con una password forte. Ora fornisci i privilegi appropriati al tuo utente di database sul database che hai creato. Esegui il seguente comando.

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

Ora crea un nuovo utente per Mailtrain RO.

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

Fornisci accesso in lettura all’utente RO sul database di Mailtrain.

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

Ora esegui il seguente comando per applicare immediatamente le modifiche sui privilegi del database.

FLUSH PRIVILEGES;

Esci dal prompt di MySQL utilizzando il comando exit.

EXIT;

Installa le dipendenze

Mailtrain richiede alcune altre dipendenze per funzionare. Installa le dipendenze eseguendo:

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

ImageMagick è uno strumento per elaborare immagini Bitmap e Git sarà utilizzato per clonare il repository del progetto dell’applicazione. Redis è un’applicazione di cache di sessione molto popolare e Python, bind-utils, gcc-c++ e make saranno utilizzati per compilare i file delle applicazioni.

Avvia Redis e abilitalo per avviarsi automaticamente:

systemctl start redis  
systemctl enable redis

Scarica e installa Mailtrain

Clona i file di installazione di Mailtrain utilizzando Git.

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

Crea un nuovo utente Mailtrain per eseguire il demone Mailtrain. Questo garantirà che Mailtrain venga eseguito in un ambiente isolato.

adduser mailtrain -d /opt/mailtrain

Il comando sopra creerà un nuovo utente mailtrain e /opt/mailtrain sarà utilizzato come directory home.

Passa alla directory di Mailtrain eseguendo:

cd /opt/mailtrain

Prima di procedere, dovresti generare una stringa casuale che sarà utilizzata per crittografare i dati di sessione. Per generare la stringa casuale, puoi utilizzare l’utilità pwgen.

Esegui yum -y install pwgen per installare l’utilità pwgen. Esegui pwgen -1 64 per generare una stringa di lunghezza 64 caratteri. Vedrai:

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

Crea un nuovo file di configurazione production.toml. La configurazione fornita in questo file sovrascrive il file di configurazione predefinito default.toml. Non dovremmo modificare il file di configurazione predefinito. Crea un nuovo file production.toml per memorizzare la configurazione di sovrascrittura.

nano config/production.toml

Popola il file con la seguente configurazione.

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 configurazione sopra consente a Mailtrain di funzionare come utente mailtrain e all’utente Mailtrain Reports Worker di funzionare come utente nobody. Inoltre, configura il server integrato per ascoltare localhost sulla porta 3000. Configureremo Nginx come proxy inverso in modo che l’interfaccia web di Mailtrain possa essere accessibile tramite la porta HTTP standard.

Sostituisci RandomString in secret= con la stringa casuale generata sopra. Imposta proxy su true poiché eseguiremo il server integrato di Mailtrain dietro il proxy Nginx.

Imposta il nome utente, la password e il nome del database del database che hai creato per memorizzare i dati di Mailtrain.

Crea anche un nuovo file per memorizzare la configurazione di produzione per i report dei lavoratori.

nano workers/reports/config/production.toml

Popola il file con la seguente configurazione.

[log]
level="error"

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

Ora scarica le dipendenze necessarie di Node.js e installa il software:

npm install --production

Una volta installata l’applicazione, puoi avviarla immediatamente utilizzando:

NODE_ENV=production npm start

Se il server è in esecuzione, dovresti vedere il seguente output.

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

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

Ma invece di avviare direttamente l’applicazione, utilizzeremo un servizio systemd. Ferma l’esecuzione premendo ctrl + C.

Fornisci la proprietà dei file all’utente Mailtrain e rimuovi tutti i permessi sulla configurazione da altri utenti non root del sistema:

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

Configurazione del servizio Systemd

Crea un nuovo file di servizio Systemd. Utilizzare Systemd invece di un comando diretto per eseguire il server garantirà che il server venga avviato automaticamente in caso di errore e riavvio. Rende molto facile gestire il servizio.

nano /etc/systemd/system/mailtrain.service

Popola il file con la seguente configurazione.

[Unit]
Description=Mailtrain Server
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

Avvia Mailtrain e abilitalo per avviarsi automaticamente all’accensione:

systemctl enable mailtrain  
systemctl start mailtrain

Per controllare lo stato del servizio, esegui:

systemctl status mailtrain

Dovresti vedere che il servizio è in esecuzione attivamente.

[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Mailtrain Server
   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 Mailtrain Server.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth

Configura Logrotate

Logrotate è un’utilità molto utile per aggiornare i log obsoleti. Quando un servizio è in esecuzione continuamente, genera una grande quantità di log. I file contenenti i log consumano molto spazio su disco. Logrotate elimina periodicamente i vecchi log in modo che le voci di log possano essere sostituite da nuovi log.

Crea un nuovo file di configurazione logrotate:

nano /etc/logrotate.d/mailtrain

Popola il file con la seguente configurazione:

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

Configura Nginx come proxy inverso

Abbiamo configurato l’interfaccia web integrata di Mailtrain per ascoltare localhost sulla porta 3000, poiché è importante eseguire un server web di produzione per servire il sito web agli utenti. In questo tutorial, utilizzeremo Nginx come proxy inverso in modo che l’applicazione possa essere accessibile tramite la porta HTTP standard. Installa il server web Nginx:

yum -y install nginx

Crea un nuovo file di blocco del server per il virtual host di Nginx:

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

Popola il file 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;
    }
}

Riavvia il server web Nginx e abilitalo per avviarsi automaticamente all’accensione:

systemctl restart nginx  
systemctl enable nginx

Configura Firewall e SELinux

Se stai eseguendo un firewall sul tuo server, dovrai configurare il firewall per impostare un’eccezione per il servizio HTTP. Consenti al proxy inverso Nginx di connettersi dall’esterno della rete.

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

Se hai SELinux abilitato sul tuo sistema, dovrai aggiungere alcune eccezioni nelle politiche di SELinux.

Per controllare se SELinux è abilitato, esegui:

getenforce

Se hai SELinux abilitato, esegui:

setsebool -P httpd_can_network_connect 1

Accesso all’interfaccia web

L’installazione di Mailtrain è ora completata. Puoi ora accedere al server Mailtrain su http://news.example.com. Vedrai la seguente interfaccia.

Mailtrain

Clicca sul pulsante di accesso e accedi utilizzando il nome utente admin e la password test.

Accesso a Mailtrain

Naviga nella sezione Account della dashboard e aggiorna l’indirizzo email e la password. È molto importante aggiornare la password il prima possibile.

Crea account in Mailtrain

Inoltre, è importante aggiornare le impostazioni prima di poter utilizzare Mailtrain.

Impostazioni di Mailtrain

Aggiorna l’URL del sito e l’email dell’amministratore. Puoi anche fornire l’ID di tracciamento di Google Analytics per monitorare le informazioni tramite Google Analytics. Puoi inserire del codice HTML che verrà visualizzato sulla homepage del tuo server.

Impostazioni predefinite della campagna di Mailtrain

Imposta le impostazioni predefinite della campagna, come il nome del mittente, l’indirizzo predefinito, il nome del mittente predefinito, l’email e l’URL, ecc. Durante l’invio delle email, se queste opzioni non sono configurate, verranno utilizzati i valori predefiniti.

Impostazioni del Mailer

Infine, la configurazione più importante è fornire le credenziali del server email. Puoi utilizzare qualsiasi server SMTP o Amazon SES (Simple Email Service). Se stai utilizzando SMTP, fornisci il nome host del server di posta, la porta, il nome utente e la password del tuo server SMTP. Se stai utilizzando Amazon SES, fornisci la chiave API e altre credenziali.

Puoi anche configurare il tuo server SMTP. Segui semplicemente una di queste guide:

  • Come creare un server di posta completamente funzionale utilizzando Postal
  • Costruire un server di posta completo su CentOS 6 con Postfix, Dovecot, PostgreSQL
  • Configurazione di un server di posta utilizzando Exim4, Clamav, Dovecot, SpamAssassin e molto altro su Debian

Hai ora un server Mailtrain completamente funzionante installato sul tuo server CentOS 7. Crea il tuo primo elenco e inizia a inviare newsletter agli abbonati. Puoi creare un modello interattivo utilizzando l’editor WYSIWYG e inviare le email utilizzando le campagne. Mailtrain fornisce anche report delle email inviate e aperte. Puoi utilizzare la scheda Automazione per creare trigger che inviano email quando viene eseguita un’azione specifica. Puoi anche configurare la crittografia GPG. Se un elenco ha un campo personalizzato per una chiave pubblica GPG impostata, gli abbonati possono caricare la propria chiave pubblica GPG per ricevere messaggi crittografati dall’elenco.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.