Email completamente indipendente con Discourse e Stalwart-mail

Risoluzione dei problemi

Continuando la discussione da Stalwart-mail+Discourse: POP3 EOF raggiunto (di nuovo):

Dato che anche @programmerjake sta esplorando Discourse ↔ Stalwart-mail, volevo chiederti se stai riscontrando errori TLS su SMTPS:

2024-07-01T17:37:49.718793Z DEBUG common::listener: Failed to accept TLS connection: tls handshake eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"
2024-07-01T17:37:49.899171Z DEBUG common::listener: Failed to accept TLS connection: tls handshake eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"

Dal lato di Discourse, appare un popup di errore:

ERROR - Net::ReadTimeout with #<TCPSocket:(closed)>

Sembra essere correlato alla libreria OpenSSL di Ruby che non supporta TLSv1.3, ma questo sembra un po’ forzato dato che dovrebbe comunque funzionare con TLSv1.2.


Installazione funzionante

Stalwart-mail >= v0.8.3

Questo è tutto, con questa release, Stalwart-mail supporta sia l’invio che la ricezione di email con Discourse. :tada:

Stalwart-mail è un servizio di posta elettronica a singolo binario che copre tutte le tue esigenze di posta elettronica senza il disordine di configurazione a cui siamo stati abituati per decenni con Postfix + Spamassassin + Dovecot + ecc. Qui, imposti la tua installazione e hai tutto pronto all’uso, inclusa l’automazione TLS completa con ACME e LetsEncrypt, SPF, DMARC, DKIM, ARC, supporto DANE out-of-the-box (inclusi report da e verso i tuoi domini), TLSA e altri record DNS pronti all’uso, auto-configurazione e auto-discovery per una facile configurazione del client di posta, cartelle condivise (tramite “gruppi”), alias, filtri ManageSieve su tutti i messaggi in entrata e in uscita in varie fasi del processo, amministrazione web, supporto 2FA e TOTP, OAUTH e molte altre funzionalità. Non è più necessario esternalizzare la tua email!

  1. Usa un listener submission sulla porta 587 per SMTP
    1. disabilita TLS implicito (significa: usa STARTTLS)
    2. Assicurati che l’ignorare l’ordine dei client sia disabilitato (o nelle impostazioni predefinite o sovrascrivi le opzioni TLS del listener)
  2. Abilita un listener POP3 sulla porta 995 con TLS implicito

Discourse

Configura normalmente l’email usando la porta 587 per Submission (con STARTTLS) e la porta 995 per POP3s con SSL/TLS.

1 Mi Piace

Quindi questa è un’alternativa open source a Mailgun e simili? Questo sta iniziando ad apparire molto interessante poiché la maggior parte di questi servizi sono piuttosto costosi per bassi volumi.

Presumo che richieda una propria macchina (virtuale). Sarebbe fantastico se potesse essere facilmente eseguito sulla stessa macchina di Discourse.

Sai se un’istanza di Stalwart Mail potrebbe servire diverse istanze di Discourse?

1 Mi Piace

Sì, puoi supportare facilmente più domini.

Per prima cosa aggiungi un dominio, quindi ti fornirà i record DNS per configurare l’MX (mail exchange). Tutti i tuoi domini utilizzeranno lo stesso MX.

Dovrebbe essere facile eseguire Stalwart-mail sulla stessa macchina di Discourse. Poiché entrambi richiedono la porta TLS 443, utilizzeresti un proxy su quella porta per inviare a entrambi i servizi. Ma non ha molto senso avere un’istanza per Discourse, è meglio separare i due, in modo da poter scalare facilmente la tua infrastruttura di posta elettronica e coprire più esigenze rispetto a Discourse.

Come indicazione, ho eseguito Stalwart-mail su un VPS Hetzner CPX21 (4 GB di RAM, 3 vCPU AMD x86, 80 GB di spazio di archiviazione) con circa 30 account su una dozzina di domini, con log completi attivati, e occupa 564 MB di RAM e 7 GB di spazio di archiviazione (la maggior parte è il sistema operativo). Stalwart-mail dichiara 184 MB di RAM residente (meno del 5% di tutta la RAM e 1,2 GB virtuali).

1 Mi Piace

Sto usando la porta 587 con STARTTLS e non ho riscontrato errori durante il test proprio ora…

Inoltre, nei log di Stalwart-mail sembra che stia usando TLSv1.3 e non stia riscontrando errori… Ho una configurazione leggermente insolita che sto testando (usando pebble per eseguire un server ACME locale e usando un nome di dominio .test, ma probabilmente non è sufficiente per rompere/risolvere nulla…)

Non sto usando “Override TLS options” nel listener della porta 587…

1 Mi Piace

Ho utilizzato Stalwart-mail con Discourse esclusivamente negli ultimi mesi e funziona alla grande. Ora posso utilizzare sia Submission (porta 587 con STARTTLS) che Submissions (porta 465 con TLS). Nessuna configurazione o impostazione speciale richiesta.

Attenzione però, la configurazione dei record DNS di un dominio è un processo in due fasi.

  1. Per prima cosa, aggiungi un nome di dominio nella Directory. Questo ti fornirà i record di risorse da aggiungere al tuo file di zona DNS.
  2. Una volta aggiornato il tuo DNS, crea un provider TLS per quel dominio. Dovresti aggiungere i seguenti hostname: mail, autoconfig, autodiscover e mta-tls (con il tuo dominio aggiunto, ad esempio mail.example.org).[1]
  3. Dopo un periodo (da secondi a minuti), il provider ACME interno rileverà le modifiche e otterrà i certificati TLS. A questo punto, la configurazione del dominio avrà aggiornato i record: scegli la RR _mta-tls con il nuovo ID e tutti i record _tlsa, aggiungili al tuo file di zona e sei pronto.

Stalwart-mail ora è dotato di un filtro antispam molto potente e della funzionalità fail2ban integrata (che blocca gli indirizzi IP che hanno fallito l’autenticazione o richiesto URI fasulli).


  1. si noti che per una configurazione minima di Stalwart-mail + Discourse, probabilmente non sono necessari autoconfigautodiscover poiché questi sono utili con i client IMAP. ↩︎