Ciao a tutti! Ho cominciato questo progetto perché mi serviva un smtp che fosse in grado di gestire la tempistica di invio delle email, avendo il controllo totale su tutta la…
> Articolo d'archivio del 2017, dal vecchio nutellino.it: comandi e versioni potrebbero non essere più attuali.
# archivio# node-js# smtp# rabbitmq
Ciao a tutti! Ho cominciato questo progetto perché mi serviva un smtp che fosse in grado di gestire la tempistica di invio delle email, avendo il controllo totale su tutta la procedura.
Sono partito dal progetto nodemailer-amqp-example che è un esempio di come si può gestire una coda con il broker RabbitMQ e NodeJs.
Ho fatto in modo che il processo publisher.js diventasse un server SMTP, e ho sostituito il processo server.js con un Postfix ad hoc. Ho dovuto riscrivere anche una delle dipendenze per dei problemi di conversione di charset, progetto qui: mailparser-iconv-full .
Quindi, a cosa serve ?
Serve quando si ha bisogno di mandare un grande quantitativo di email, solitamente newsletter, e demandare ad un sistema esterno l’invio frazionato nel tempo.
Con cosa si può usare?
Con qualsiasi client SMTP
Di seguito il link del progetto github e la guida di installazione 🙂
Il parametro più importante si trova all’interno di config.json , delaysend, che definisce ogni quanto millisecondi viene spedita una mail.
Installarlo come sito internet, e inserire un FQDN valido
Dopodichè, andare sul file
bash
/etc/postfix/master.cf
e modificare la porta di ascolto
dalla riga
text
smtpd inet n - y - - smtpd
alla riga
text
9267 inet n - y - - smtpd
in questo modo avremo la porta 9267 in ascolto in localhost
Installazione
Clonare il progetto git con git clone e spostarsi all'interno della cartella
bash
cd node-mailing-amqp
Installare le dipendenze richieste
bash
npminstall--production
Creare le cartelle dei log
bash
./setup.sh
Assicurarsi di avere RabbitMQ server attivo, verificare anche che le configurazioni siano corrette in config.json.
Esecuzione
Questo progetto è l'insieme di tre parti:
Postfix SMTP server . Questo è il servizio reale che invierà infine le mail, gira su localhost (porta 9267) e accetta mail solo da localhost.
Processo Subscriber (subscriber.js). Questo processo è quello che si occupa di recuperare i messaggi dalla coda rabbit e mandarli in invio tramite postfix. Ogni fetch è temporizzato tramite il valore config.delaysend nel file config.json
Processo Publisher (publisher.js). Questo è l'smtp di ponte che si occupa di validare l'utente che sta inviando la mail, e inserisce la mail da recapitare in coda rabbit
Si possono avviare tutti i processi tramite il comando (all'interno della cartella)
bash
./restart.sh
Impostazione credenziali
Modificare il file auth.json e aggiungere gli account che verranno utilizzati dal sistema