GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installa l'app per newsletter self-hosted Mailtrain sul server Ubuntu 16.04

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 mtuseryour-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 ).

Nota:l'account amministratore è un facile bersaglio per gli hacker. Per la massima sicurezza, ti consigliamo di cambiare il nome utente da 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.)


Ubuntu
  1. Installa il server SSH Ubuntu 22.04

  2. Come installare MariaDB su Ubuntu 18.04

  3. Come installare MariaDB su Ubuntu 20.04

  4. Installa MariaDB 10.1 Stable su Ubuntu 14.04

  5. Come installare MariaDB su Ubuntu 22.04

Come installare Plex Media Server su Ubuntu 16.04 Server/Desktop

Installa l'app per newsletter self-hosted Mailtrain sul server Ubuntu 16.04

Installa Mailtrain v1.24 su Ubuntu 20.04 Server senza Docker

Installa OpenLiteSpeed, MariaDB, PHP8.0 su Ubuntu 20.04/18.04 Server

Come installare MariaDB su Ubuntu 16.04

Come installare il server EteSync su Ubuntu 20.04 LTS