Questo tutorial ti mostrerà come installare Mailtrain sul server Ubuntu 16.04. Mailtrain è un'app di newsletter self-hosted open source, un'alternativa ai fornitori di servizi di posta elettronica commerciali come Mailchimp. Puoi utilizzare Mailtrain per inviare e-mail ai tuoi abbonati e-mail tramite il tuo server di posta elettronica o utilizzando qualsiasi servizio di inoltro SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, ecc.).
Mailtrain è rilasciato secondo i termini della licenza GPL v3.0, basata su Node.js e MySQL/MariaDB. L'ultima versione è la v1.24.1, rilasciata il 28 settembre 2018. Le caratteristiche di Mailtrain sono le seguenti:
- Ti permette di gestire facilmente mailing list di grandi dimensioni (come 1 milione di iscritti).
- Puoi aggiungere abbonati manualmente, tramite l'API, o importarli da un file CSV.
- Supporta campi personalizzati (campi di testo, numeri, menu a discesa o caselle di controllo), unisci tag e moduli personalizzati.
- Segmentazione dell'elenco.
- Campagna RSS:genera automaticamente la newsletter dal feed RSS e inviala agli iscritti.
- Gli abbonati possono caricare le loro chiavi pubbliche GPG e Mailtrain crittograferà la newsletter per loro.
- Ti permette di controllare le statistiche sui clic individuali per ogni link.
- Editor avanzati di modelli di email e editor di codice HTML.
- Automazione:invia email specifiche quando l'utente attiva il tuo trigger predefinito.
- Puoi creare un elenco di e-mail aperto (consenti l'iscrizione pubblica) e un elenco di e-mail chiuso (gli iscritti vengono aggiunti all'elenco dall'amministratore).
Prerequisiti per l'installazione di Mailtrain su Ubuntu 16.04 Server
Per eseguire Mailtrain, è necessario un server con almeno 1 GB di RAM. Puoi fare clic su questo link speciale per ottenere $ 100 di credito gratuito su DigitalOcean. (Solo per nuovi utenti). Se sei già un utente DigitalOcean, puoi fare clic su questo link speciale per ottenere $ 50 di credito gratuito su Vultr (solo per i nuovi utenti). Una volta che hai un account su DigitalOcean o Vultr, installa Ubuntu 16.04 sul tuo server e segui le istruzioni seguenti.
Devi anche avere un nome di dominio. Ho registrato il mio nome di dominio da NameCheap perché il prezzo è basso e offrono gratuitamente la protezione della privacy di Whois.
Passaggio 1:installa il server di database MariaDB
I dati dei tuoi iscritti verranno archiviati in un database. Mailtrain supporta MySQL e MariaDB. MariaDB è un sostituto drop-in di MySQL. È stato sviluppato da ex membri del team MySQL preoccupati che Oracle possa trasformare MySQL in un prodotto closed-source. Quindi installiamo il server del database MariaDB.
Immettere il comando seguente per installarlo su Ubuntu 16.04.
sudo apt install mariadb-server mariadb-client
Dopo l'installazione, il server MariaDB dovrebbe essere avviato automaticamente. Usa systemctl per verificarne lo stato.
systemctl status mysql
Esempio di output:
● 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
Se non è in esecuzione, avvialo con questo comando:
sudo systemctl start mysql
Per consentire a MariaDB di avviarsi automaticamente all'avvio del sistema, esegui
sudo systemctl enable mysql
Ora esegui lo script di sicurezza post installazione.
sudo mysql_secure_installation
Quando ti chiede di inserire la password di root di MariaDB, premi il tasto Invio poiché la password di root non è ancora impostata. Quindi inserisci y
per impostare la password di root per il server MariaDB.
Successivamente, puoi premere Invio per rispondere a tutte le domande rimanenti, che rimuoveranno l'utente anonimo, disabiliteranno l'accesso root remoto e rimuoveranno il database di test. Questo passaggio è un requisito di base per la sicurezza del database MariaDB. (Nota che la lettera Y
è in maiuscolo, il che significa che è la risposta predefinita.)
Fase 2:crea un database e un utente per Mailtrain
Ora dobbiamo accedere alla console MariaDB e creare un database e un utente per Mailtrain. Per impostazione predefinita, il pacchetto MaraiDB su Ubuntu utilizza unix_socket per autenticare l'accesso dell'utente, il che significa sostanzialmente che puoi utilizzare il nome utente e la password del sistema operativo per accedere alla console MariaDB. Quindi puoi eseguire il seguente comando per accedere senza fornire la password di root di MariaDB.
sudo mysql -u root
Crea un database per Mailtrain usando il comando seguente. L'ho chiamato mailtrain
, ma puoi usare il nome che preferisci. (Non tralasciare il punto e virgola.)
create database mailtrain;
Quindi immettere il comando seguente per creare un utente del database per Mailtrain e concedere all'utente tutti i privilegi del database del mailtrain. Sostituisci mtuser
e your-password
con il nome utente e la password preferiti.
grant all privileges on mailtrain.* to mtuser@localhost identified by 'mtuser_password';
Quindi, crea un utente con accesso in sola lettura al database del treno di posta. Ho chiamato questo utente mt_readonly
.
grant select on mailtrain.* TO mt_readonly@localhost identified by 'mt_readonly_password';
Svuota la tabella dei privilegi per rendere effettive le modifiche, quindi esci dalla console di MariaDB.
flush privileges; exit;
Fase 3:installa Node.js
Mailtrain è basato su Node.js, che è un ambiente di runtime JavaScript che traduce il codice JavaScript leggibile dall'uomo in codice macchina. Quindi dobbiamo installare Node.js su Ubuntu 16.04 per eseguire Mailtrain. Mailtrain richiede Node.js 7+. Questo tutorial installerà l'attuale versione LTS di Node.js (V8.x) dal repository NodeSource.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt install -y nodejs
I nodejs
pacchetto contiene il binario npm (gestore di pacchetti Node.js), quindi non è necessario installarlo separatamente. Per controllare la tua versione di Node.js e npm, esegui
node -v npm -v
Uscita:
Per compilare e installare componenti aggiuntivi nativi da npm devi anche installare gli strumenti di compilazione:
sudo apt install -y build-essential
Fase 4:esegui Mailtrain
Vai a /var/www/
e recupera i file Mailtrain da Github.
cd /var/www/ sudo git clone https://github.com/Mailtrain-org/mailtrain.git
Importare i dati SQL iniziali nel database mailtrain utilizzando il comando seguente. Devi inserire la password di mtuser
.
mysql -u mtuser -p mailtrain < /var/www/mailtrain/setup/sql/mailtrain.sql
Crea il file di configurazione production.toml.
sudo nano /var/www/mailtrain/config/production.toml
In questo file puoi aggiungere configurazioni che sovrascrivono le configurazioni predefinite in /var/www/mailtrain/config/default.toml
file. Abbiamo solo bisogno di aggiungere le seguenti configurazioni.
user="mailtrain" group="mailtrain" [log] level="error" [www] secret="Replace this with some random characters" [mysql] user="mtuser" password="mtuser_password" [queue] processes=5
Salva e chiudi il file. Quindi crea il mailtrain
utente e gruppo per l'esecuzione del demone mailtrain. Tieni presente che non è necessario creare una password per questo utente, quindi creiamo un utente di sistema anziché un utente normale.
sudo adduser --system --group mailtrain
Crea un file di configurazione per il report worker.
sudo nano /var/www/mailtrain/workers/reports/config/production.toml
Aggiungi le seguenti configurazioni. Questo lavoratore del rapporto avrà accesso in sola lettura al database del treno di posta.
[log] level="error" [mysql] user="mt_readonly" password="mt_readonly_password"
Salva e chiudi il file. Quindi cambia l'autorizzazione di /var/www/mailtrain/
.
sudo chown mailtrain:mailtrain /var/www/mailtrain/ -R sudo chmod o-rwx /var/www/mailtrain/config/
E installa i pacchetti di nodi richiesti.
cd /var/www/mailtrain sudo npm install --no-progress --production --unsafe-perm=true
Copia il file dell'unità di servizio systemd in /etc/systemd/system/
directory.
sudo cp /var/www/mailtrain/setup/mailtrain.service /etc/systemd/system/
Apri questo file.
sudo nano /etc/systemd/system/mailtrain.service
Perché abbiamo scaricato Mailtrain su /var/www/mailtrain/
directory, quindi cambia la directory di lavoro da /opt/mailtrain
a /var/www/mailtrain
. Salva e chiudi questo file. Quindi avvia mailtrain.service
.
sudo systemctl start mailtrain.service
Abilita l'avvio automatico all'avvio del sistema.
sudo systemctl enable mailtrain.service
Controlla il suo stato. Assicurati che sia in esecuzione. Se l'output dice di attivazione (riavvio automatico), attendi qualche istante affinché Mailtrain si avvii.
sudo systemctl status mailtrain.service
Ora che Mailtrain è in esecuzione, puoi accedere all'interfaccia web di Mailtrain tramite la porta 3000.
your-server-ip:3000
Configurazione del proxy inverso e abilitazione di HTTPS
Prima di utilizzare l'interfaccia web di Mailtrain, mettiamola dietro Nginx e quindi abilitiamo HTTPS. Installa il server web Nginx su Ubuntu 16.04 con:
sudo apt install nginx
Ora puoi copiare l'esempio mailtrain-nginx.conf
file in /etc/nginx/conf.d/
directory.
sudo cp /var/www/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/
Apri questo file.
sudo nano /etc/nginx/conf.d/mailtrain-nginx.conf
Trova la riga seguente.
server_name mailtrain.org www.mailtrain.org;
Modifica il valore di server_name
parametro al tuo nome di dominio come newsletter.your-domain.com
. Non dimenticare di creare un record A per questo sottodominio.
server_name newsletter.linuxbabe.com;
Salva e chiudi il file. Quindi testa le configurazioni di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora dovresti essere in grado di accedere all'interfaccia web di Mailtrain tramite il tuo sottodominio: newsletter.your-domain.com
.
Ora modifica /var/www/mailtrain/config/production.toml
file.
sudo nano /var/www/mailtrain/config/production.toml
Nel [www]
sezione, aggiungi le due righe seguenti per indicare che mailtrain è dietro il proxy Nginx e fallo ascoltare solo sull'indirizzo host locale.
host="127.0.0.1" proxy=true
Salva e chiudi il file. Quindi riavvia Mailtrain per rendere effettive le modifiche.
sudo systemctl restart mailtrain
Abilitare HTTPS con Let's Encrypt
Installa il client Let's Encrypt (certbot) sul tuo server 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
Quindi puoi utilizzare il plug-in Nginx per ottenere e installare automaticamente un certificato TLS eseguendo il comando seguente.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address -d newsletter.your-domain.com
Ora puoi accedere all'interfaccia web di Mailtrain tramite il tuo nome di dominio e una connessione HTTPS sicura.
Accedi con nome utente admin
e password test
. Quindi cambia l'indirizzo email e la password del tuo account. Vai a settings
pagina per modificare le configurazioni predefinite. Devi modificare l'indirizzo del servizio da http://localhost:3000/
al tuo sottodominio (https://newsletter.your-domain.com
).
admin
a qualcos'altro. L'interfaccia web di Mailtrain non fornisce tale opzione, ma puoi cambiare il nome utente nel database MariaDB usando il comando SQL.
In Mailer Settings
, puoi utilizzare SMTP se hai il tuo server di posta elettronica o utilizzi Amazon SES. In realtà, puoi anche utilizzare altri servizi di inoltro SMTP in SMTP
scheda. Nello screenshot qui sotto, utilizzo il mio server di posta elettronica. Le email verranno inviate sulla porta 587 con crittografia STARTTLS.
Salva le tue impostazioni. Quindi puoi creare un elenco per testare le funzionalità di Mailtrain.
Come gestire i messaggi di rimbalzo in Mailtrain
Prima o poi, la tua lista e-mail conterrà indirizzi a cui non puoi inviare e-mail. Ad esempio, quando un abbonato che utilizza un indirizzo e-mail aziendale lascia l'azienda, tale indirizzo e-mail verrà eliminato. Quindi il tuo server di posta elettronica riceverà un messaggio di rimbalzo che ti dice che l'email non può essere consegnata.
Se utilizzi un servizio di inoltro SMTP per inviare e-mail, gestirà i messaggi di rimbalzo per te. Se utilizzi il tuo server di posta elettronica per inviare e-mail, devi gestire i messaggi di rimbalzo in Mailtrain. Mailtrain offre due modi per gestire i messaggi rimbalzati.
- tramite VERP
- tramite il registro di Postfix
Personalmente utilizzo il metodo VERP, perché è ampiamente utilizzato nella comunità di posta elettronica e anche perché il secondo metodo causa un elevato utilizzo della CPU sul mio server.
Gestione del rimbalzo VERP
Con VERP (percorso di ritorno busta variabile), il gestore dell'elenco di posta elettronica utilizza indirizzi busta univoci per ciascun abbonato. Per abilitare VERP, modifica il production.toml
file.
sudo nano /var/www/mailtrain/config/production.toml
Se il tuo host Mailtrain non ha un server SMTP in esecuzione, aggiungi il seguente testo.
[verp] enabled=true port=25 disablesenderheader=true
Se il tuo server Mailtrain ha un server SMTP come Postfix in esecuzione, aggiungi il testo seguente. Il server di gestione del rimbalzo sarà in ascolto su 127.0.0.1:2525
.
[verp] enabled=true port=2525 host="127.0.0.1" disablesenderheader=true
Salva e chiudi il file. Quindi riavvia Mailtrain per rendere effettive le modifiche.
sudo systemctl restart mailtrain
Nell'interfaccia web di Mailtrain, vai su Settings
-> VERP Bounce Handlding
. Controlla Use VERP to catch bounces
. Salva le tue impostazioni.
Successivamente, devi creare un record MX per il nome host del server (bounces.your-domain.com
), quindi aggiungi un record per questo nome host, che punta al tuo host Mailtrain, in modo che i messaggi di rimbalzo possano essere inviati al tuo host Mailtrain. Ogni iscritto nel tuo elenco avrà un indirizzo busta univoco come [email protected]
.
Tieni presente che se hai distribuito il record DMARC per il tuo nome di dominio, l'allineamento SPF deve essere impostato sulla modalità rilassata. Se è impostato in modalità rigorosa, la tua newsletter potrebbe non superare il controllo DMARC.
Se il server di gestione del rimbalzo di Mailtrain è in ascolto sulla porta 2525 di 127.0.0.1 e il server SMTP Postfix è in ascolto sulla porta 25 dell'indirizzo IP pubblico, è necessario configurare la mappa di trasporto in modo che Postfix possa inoltrare il messaggio di rimbalzo a Mailtrain. Crea il file della mappa di trasporto.
sudo nano /etc/postfix/transport
Aggiungi la seguente riga a questo file. Questo dice a Postfix di inoltrare le email con un indirizzo come [email protected]
al server di gestione dei rimbalzi di Mailtrain.
bounces.your-domain.com smtp:[127.0.0.1]:2525
Salva e chiudi il file. Quindi genera il file di indice.
sudo postmap /etc/postfix/transport
Modifica il file di configurazione principale di Postfix.
sudo nano /etc/postfix/main.cf
Aggiungi la seguente riga al file.
transport_maps = hash:/etc/postfix/transport
Salva e chiudi il file. Quindi riavvia Postfix per rendere effettive le modifiche.
sudo systemctl restart postfix
Cron Job per pulire automaticamente gli indirizzi email non iscritti
Puoi eliminare manualmente gli indirizzi e-mail non iscritti nel pannello di amministrazione basato sul Web di Mailtrain, ma è molto più efficiente eliminarli utilizzando i comandi MySQL/MariaDB, quindi devi semplicemente creare un processo Cron per automatizzare questa attività.
Innanzitutto, accedi al server del database MySQL/MariaDB.
sudo mysql -u root
Quindi connettiti al database del treno di posta.
use mailtrain;
Le informazioni sugli abbonati sono memorizzate nel subscription
tavoli. Se hai più mailing list, avrai più subscription
tavoli. Puoi elencare tutte queste tabelle usando il seguente comando SQL.
show tables like 'subscription%';
Output sul mio server.
+-------------------------------------+ | Tables_in_mailtrain (subscription%) | +-------------------------------------+ | subscription | | subscription__1 | | subscription__2 | +-------------------------------------+
La prima tabella è una tabella vuota. Ho due liste in Mailtrain. Sono memorizzati in subscription__1
e subscription__2
tavolo. Gli indirizzi email sottoscritti hanno il codice di stato impostato su 1
. Gli indirizzi email non iscritti hanno il codice di stato impostato su 2
. Quindi, per eliminare gli indirizzi email non iscritti, puoi eseguire i seguenti comandi SQL.
DELETE FROM subscription__1 where status = '2'; DELETE FROM subscription__2 where status = '2';
Per uscire dal server di database MySQL/MariaDB, esegui
exit;
Ora apri il file crontab dell'utente root.
sudo crontab -e
Aggiungi le due righe seguenti.
# 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';"
Salva e chiudi il file. E il gioco è fatto.
Gestione della registrazione dannosa
Ci sono persone che non hanno altro da fare che usare un indirizzo email falso per iscriversi alla tua lista email, quindi l'email di conferma dell'iscrizione verrà inviata a un indirizzo email falso e potresti ricevere un rapporto email non consegnato nella tua casella di posta.
Puoi utilizzare la tua webmail come roundcube per creare un filtro, che elimina automaticamente questo tipo di messaggio di posta elettronica. Nello screenshot seguente, puoi vedere che ho creato un filtro che elimina automaticamente un messaggio se
- L'oggetto contiene "Posta non consegnata restituita al mittente"
- Il rapporto sui messaggi non recapitati viene inviato al mio indirizzo.
- Il corpo contiene "Si prega di confermare l'abbonamento". (Perché l'e-mail di conferma della registrazione contiene questa frase.)