Courriel totalement indépendant avec Discourse et Stalwart-mail

Dépannage

Pour continuer la discussion de Stalwart-mail + Discourse : POP3 EOF atteint (encore) :

Puisque @programmerjake explore également l’intégration Discourse ↔ Stalwart-mail, je voulais vous demander si vous rencontrez des erreurs TLS sur SMTPS :

2024-07-01T17:37:49.718793Z DEBUG common::listener: Échec de l'acceptation de la connexion TLS : échec de la négociation TLS eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"
2024-07-01T17:37:49.899171Z DEBUG common::listener: Échec de l'acceptation de la connexion TLS : échec de la négociation TLS eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"

Du côté de Discourse, une fenêtre d’erreur apparaît :

ERREUR - Net::ReadTimeout avec #<TCPSocket:(closed)>

Cela semble lié à la bibliothèque OpenSSL de Ruby qui ne prend pas en charge TLSv1.3, mais cela semble un peu tiré par les cheveux car cela devrait fonctionner avec TLSv1.2 de toute façon.


Installation fonctionnelle

Stalwart-mail >= v0.8.3

C’est tout, avec cette version, Stalwart-mail prend désormais en charge l’envoi et la réception d’e-mails avec Discourse. :tada:

Stalwart-mail est un service de messagerie binaire unique qui couvre tous vos besoins en matière d’e-mail sans l’encombrement de configuration auquel nous sommes habitués depuis des décennies avec Postfix + Spamassassin + Dovecot + etc. Ici, vous configurez votre installation et avez tout prêt à l’emploi, y compris l’automatisation TLS complète avec ACME et LetsEncrypt, SPF, DMARC, DKIM, ARC, support DANE prêts à l’emploi (y compris les rapports de et vers vos domaines), TLSA et autres enregistrements DNS prêts à l’emploi, configuration automatique et auto-découverte pour une configuration facile des clients de messagerie, dossiers partagés (via “groupes”), alias, filtres ManageSieve sur tous les messages entrants et sortants à différentes étapes du processus, administration web, support 2FA et TOTP, OAUTH, et de nombreuses autres fonctionnalités. Plus besoin d’externaliser votre e-mail !

  1. Utilisez un écouteur submission sur le port 587 pour SMTP
    1. désactiver TLS implicite (signifie : utiliser STARTTLS)
    2. Assurez-vous que l’ignorance de l’ordre des clients est désactivée (soit dans les valeurs par défaut, soit dans les options TLS de l’écouteur)
  2. Activer un écouteur POP3 sur le port 995 avec TLS implicite

Discourse

Configurez la messagerie normalement en utilisant le port 587 pour la soumission (avec STARTTLS) et le port 995 pour POP3s avec SSL/TLS.

1 « J'aime »

C’est donc une alternative open source à Mailgun et autres ? Cela commence à devenir très attrayant car la plupart de ces services sont assez chers pour de faibles volumes.

Je suppose qu’il nécessite sa propre machine (virtuelle). Ce serait incroyable s’il pouvait facilement fonctionner sur la même machine que Discourse.

Savez-vous si une instance de Stalwart Mail pourrait desservir plusieurs instances de Discourse ?

1 « J'aime »

Oui, vous pouvez facilement prendre en charge plusieurs domaines.

D’abord, vous ajoutez un domaine, puis il vous donne les enregistrements DNS pour configurer le MX (mail exchange). Tous vos domaines utiliseront le même MX.

Il devrait être facile d’exécuter Stalwart-mail sur la même machine que Discourse. Comme les deux nécessitent le port TLS 443, vous utiliseriez un proxy sur ce port pour envoyer aux deux services. Mais il n’est pas très logique d’avoir une instance par Discourse, il est préférable de séparer les deux, afin que vous puissiez facilement faire évoluer votre infrastructure de messagerie et couvrir plus de besoins que juste Discourse.

À titre indicatif, j’ai fait fonctionner Stalwart-mail sur un VPS Hetzner CPX21 (4 Go de RAM, 3 vCPU AMD x86, 80 Go de stockage) avec environ 30 comptes sur une douzaine de domaines, avec les journaux complets activés, et cela prend 564 Mo de RAM et 7 Go de stockage (la plupart étant l’OS). Stalwart-mail revendique 184 Mo de RAM résidente (moins de 5 % de toute la RAM, et 1,2 Go de mémoire virtuelle).

1 « J'aime »

J’utilise le port 587 avec STARTTLS et je n’ai rencontré aucune erreur en testant tout à l’heure…

De plus, dans les journaux de Stalwart-mail, il semble qu’il utilise TLSv1.3 et ne rencontre aucune erreur… J’ai une configuration un peu inhabituelle que je teste (en utilisant pebble pour exécuter un serveur ACME local et en utilisant un nom de domaine .test, mais cela ne suffit probablement pas à casser/corriger quoi que ce soit…)

Je n’utilise pas “Override TLS options” dans le listener du port 587…

1 « J'aime »

J’utilise Stalwart-mail avec Discourse exclusivement depuis des mois, et cela fonctionne à merveille. Je peux maintenant utiliser à la fois Submission (port 587 avec STARTTLS) et Submissions (port 465 avec TLS). Aucune configuration ou installation spéciale n’est nécessaire.

Attention cependant, la configuration des enregistrements DNS d’un domaine est un processus en deux étapes.

  1. Vous ajoutez d’abord un nom de domaine dans le Répertoire. Cela vous donne des enregistrements de ressources à ajouter dans votre fichier de zone DNS.
  2. Une fois votre DNS mis à jour, vous créez un fournisseur TLS pour ce domaine. Vous devriez ajouter les noms d’hôte suivants : mail, autoconfig, autodiscover et mta-tls (avec votre domaine ajouté, par exemple, mail.example.org).[^tls]
  3. Après un certain temps (secondes à minutes), le fournisseur ACME interne prendra en compte les modifications et obtiendra les certificats TLS. À ce stade, la configuration du domaine aura mis à jour les enregistrements : sélectionnez l’enregistrement RR _mta-tls avec le nouvel identifiant, ainsi que tous les enregistrements _tlsa, ajoutez-les à votre fichier de zone, et le tour est joué.

Stalwart-mail est désormais doté d’un filtre anti-spam très puissant et d’une fonctionnalité fail2ban intégrée (bannissement des adresses IP qui ont échoué à l’authentification ou qui ont demandé des URI bidons).

[^tls] : notez que pour une configuration minimale de Stalwart-mail + Discourse, vous n’avez probablement pas besoin de autoconfig ni de autodiscover car ceux-ci sont utiles avec les clients IMAP.