IMAP-Unterstützung für Gruppen-Postfächer

:rotating_light: Wir entfernen die Unterstützung für IMAP in Discourse. Weitere Informationen finden Sie in diesem Beitrag: IMAP support for group inboxes - #39 by martin . :rotating_light:


Wir freuen uns, eine Alpha-Version der IMAP-Unterstützung für Gruppen-Posteingänge vorstellen zu können. Diese Funktion ermöglicht es, IMAP-Anmeldedaten und Einstellungen pro Gruppe einzugeben, um Gruppen-Posteingänge mit einem E-Mail-Postfach zu synchronisieren. :email:

:warning::warning: :warning:

Dies ist eine Funktion im Alpha-Stadium und daher noch nicht zu 100 % vollständig und ausgereift. Es ist sehr wahrscheinlich, dass Fehler auftreten. Wir pflegen sie derzeit nicht und nutzen sie nicht in der Produktion. Nutzung auf eigene Gefahr!

:warning: :warning: :warning:

Vorteile

  • Ihre Gruppe kann sofort mit der Nutzung von Discourse-Posteingängen beginnen, da alle Ihre vorhandenen E-Mails synchronisiert werden! :running_woman:
  • Ihre Gruppe kann ihre Nachrichten zwischen Discourse und Ihrem E-Mail-Anbieter synchronisieren, sodass es keinen einzelnen Ausfallpunkt gibt. Personen können entweder vom E-Mail-Konto oder innerhalb von Discourse antworten, und alles wird synchronisiert. :zap:
  • Sie müssen keine verrückten Weiterleitungsregeln von Ihrem E-Mail-Anbieter zu Ihrem Discourse-Eingangs-Postfach mehr einrichten. :arrow_right:
  • E-Mail-Labels werden mit Discourse-Tags synchronisiert, sodass alles ordentlich organisiert bleibt. :card_file_box:
  • Sie antworten Personen, die Ihre Gruppe per E-Mail kontaktieren, von der E-Mail-Adresse, die Sie eingerichtet haben, auch wenn Sie von Discourse aus antworten. Keine Verwirrung mehr! :relieved:

Funktionen

  • Alle ein- und ausgehenden E-Mails werden zwischen dem IMAP-Server und Discourse synchronisiert. Dabei werden basierend auf geparsten E-Mails entsprechende Themen und Post-Antworten erstellt. Antworten können entweder von Discourse oder vom IMAP-Server erstellt werden, und alles wird synchronisiert!
  • E-Mails können entweder vom Discourse-Gruppenposteingang ODER vom E-Mail-Konto aus beantwortet werden.
  • Tags, die auf das Discourse-Thema angewendet werden, werden als Labels erstellt und auf der IMAP-Serverseite auf die E-Mail angewendet (dies ist anbieterabhängig).
  • Auf dem IMAP-Server archivierte E-Mails werden im Gruppenposteingang archiviert.
  • Gruppen-Private-Nachrichten-Themen, die in Discourse archiviert werden, werden auf dem IMAP-Server archiviert.
  • Auf dem IMAP-Server gelöschte E-Mails löschen das Thema im Gruppenposteingang.
  • Gruppen-Private-Nachrichten-Themen, die in Discourse gelöscht werden, werden auf dem IMAP-Server gelöscht.
  • E-Mails, die von Gruppen gesendet werden, bei denen diese Funktion aktiviert ist, haben als Antwortadresse denselben E-Mail-Nutzernamen, der in den IMAP-Einstellungen eingerichtet wurde.

Erste Schritte

Zunächst müssen einige Site-Einstellungen konfiguriert werden, bevor Sie diese Funktion für eine Gruppe einrichten können.

  • enable imap und enable smtp müssen beide aktiviert sein. IMAP wird für die Synchronisierung mit Ihrem Mailserver verwendet, und SMTP wird zum Senden von E-Mails von Ihrem Mailserver verwendet.
  • tagging enabled und allow staff to tag pms – Beide müssen aktiviert sein, da die Label-Synchronisierung Tags auf private Nachrichten anwendet.
  • enable imap write – Muss aktiviert sein, wenn Änderungen in Discourse auf Ihrem Mailserver widergespiegelt werden sollen (z. B. Tags, Archivieren von Themen und Löschen von Themen).
  • enable imap idle – Ermöglicht uns den Empfang von Live-Updates von Ihrem Mailserver, WENN Ihr Mailserver IDLE unterstützt. Dies beschleunigt die Übertragung von Änderungen von Ihrem E-Mail-Anbieter auf Discourse erheblich. Sie sollten dies aktivieren (Gmail unterstützt es beispielsweise). Wenn Sie alle Details wissen möchten, können Sie dazu im RFC für IDLE nachlesen.
  • imap polling period mins – Wenn IDLE nicht unterstützt wird, ist dies die Anzahl der Minuten, die wir warten, bevor wir den IMAP-Server auf Änderungen prüfen. Es ist auch die Zeit, die wir zwischen dem Senden von Änderungen an den IMAP-Server von Discourse aus warten, wenn enable imap write aktiviert ist. Das Minimum beträgt 1 Minute.

Diese Einstellungen können bei ihren Standardwerten belassen und angepasst werden, wenn Sie Probleme mit der Synchronisierung feststellen:

  • imap polling old emails – Die maximale Anzahl alter (verarbeiteter) E-Mails, die bei jeder Abfrage eines IMAP-Postfachs aktualisiert werden (0 für alle).
  • imap polling new emails – Die maximale Anzahl neuer (nicht verarbeiteter) E-Mails, die bei jeder Abfrage eines IMAP-Postfachs aktualisiert werden.
  • imap batch import email – Die Mindestanzahl neuer E-Mails, die den Importmodus auslöst (deaktiviert Post-Benachrichtigungen).

Wenn Sie möchten, dass Labels/Tags mit dem IMAP-Server synchronisiert werden, müssen Sie die Site-Einstellungen tagging enabled und allow staff to tag pms aktivieren.

Als Nächstes müssen Sie in die Gruppe gehen, die Sie mit Ihrem IMAP-Server synchronisieren möchten, und die Einstellungen ausfüllen.

Diese Einstellungen sind anbieterspezifisch. Weitere Einzelheiten finden Sie weiter unten. Nachdem Sie die Einstellungen und Anmeldedaten eingegeben haben, klicken Sie auf „Änderungen speichern". Wir validieren die Anmeldedaten dann gegen die Server des IMAP-Anbieters. Bei Erfolg wird die Liste der Postfächer aufgefüllt, und Sie müssen auswählen, welches Sie synchronisieren möchten (Hinweise dazu sind ebenfalls anbieterspezifisch):

Wenn die Validierung der Anmeldedaten nicht erfolgreich war, wird eine Fehlermeldung auf der Seite angezeigt. Um es klarzustellen: Der eingegebene SMTP-Server wird verwendet, um E-Mails im Namen des unter Benutzername & Passwort eingegebenen Kontos zu senden, nicht der für Massen-E-Mails konfigurierte Haupt-SMTP von Discourse.

Schließlich müssen Sie in Ihrer app.yml-Datei DISCOURSE_ENABLE_EMAIL_SYNC_DEMON: true im Abschnitt env hinzufügen und ./launcher rebuild ausführen. Dadurch wird der Hintergrundworker gestartet und beginnt mit dem Synchronisieren von E-Mails! :fireworks:

Anbieterspezifische Informationen

Gmail

  • :warning: Sie müssen ein App-Passwort generieren, andernfalls müssen Sie den „Zugriff weniger sicherer Apps" aktivieren, den Google ohnehin irgendwann abschaffen wird. Verwenden Sie dieses Passwort anstelle Ihres Gmail-Kennworts in den IMAP-Einstellungen. Weitere Details finden Sie unter Sign in with app passwords - Gmail Help . :warning:
  • Stellen Sie sicher, dass Sie diese Einstellungen für SMTP und IMAP verwenden:
  • Es wird dringend empfohlen (bald eine UI-Funktion), dass Sie nur das Postfach „[Gmail]/Alle E-Mails" zur Synchronisierung auswählen.
  • Wir löschen E-Mails in Gmail nicht sofort, sondern verschieben sie nur in den Papierkorb, wenn das Thema in Discourse gelöscht wird. Die „30-Tage"-Löschfunktion in Gmail übernimmt dann den Rest.
  • Tags, die auf Discourse-Themen angewendet werden, erstellen Labels in Gmail und wenden sie auf E-Mail-Threads an. Labels in Gmail sind auch IMAP-Postfächer!

Einschränkungen

Dies ist eine Funktion im Alpha-Stadium und daher noch nicht zu 100 % vollständig und ausgereift. Daher gelten derzeit folgende Einschränkungen:

  • Nur Gmail wird derzeit als IMAP-Anbieter unterstützt. Wir haben einige generische IMAP-Funktionen, aber es ist nicht garantiert, dass sie funktionieren. Outlook Online ist unser nächstes großes Ziel für die Unterstützung.
  • Das Wiederherstellen gelöschter E-Mails aus dem Gmail-Papierkorb und das Spiegeln des Status in Discourse ist derzeit fehleranfällig.
  • :warning: Es wird nicht empfohlen, das Synchronisierungs-Postfach zu ändern, nachdem E-Mails bereits synchronisiert wurden. Dies kann zu vielen seltsamen Problemen führen. :warning:
  • Pro Gruppe kann nur ein Postfach synchronisiert werden.
  • Die Kommunikation zwischen Gruppen ist Neuland und wird nicht gut funktionieren (z. B. das Senden einer E-Mail von support@yoursite.com an team@yoursite.com, wenn jede dieser E-Mails für eine andere Gruppe eingerichtet ist).

Da es sich um eine Alpha-Funktion handelt, können es auch andere subtile Fallstricke und Ecken und Kanten geben.

Feedback & Fahrplan

Wir würden uns über Feedback von allen freuen, die diese Funktion mit Gmail nutzen. Ich werde diejenige sein, die sich um die Behebung von Fehlern/Problemen kümmert. Das Debugging ist derzeit etwas schwierig, aber ich arbeite daran!

Als Nächstes werde ich an folgenden Punkten arbeiten:

  • Verbesserung des Debuggings, um IMAP-Protokolle einfacher einsehen und Fehlerquellen identifizieren zu können.
  • Verbesserung der Gruppen-E-Mail-Schnittstelle, um die aus Gmail auswählbaren Postfächer einzuschränken und das Ändern von Postfächern zu erschweren/unzulässig zu machen.
  • Validierung, um die Verwendung derselben IMAP-Details für mehrere Gruppen zu verhindern.
  • Mögliche Verbesserungen daran, wie die Gruppen-IMAP-Einstellungen gespeichert werden, und eine bessere Benutzererfahrung für die Validierung von Anmeldedaten.
  • Outlook-Unterstützung.

Während wir die Mängel beheben, ist diese Funktion derzeit für unsere gehosteten Kunden nicht verfügbar.

Besonderer Dank :pray:

Sowohl @dan als auch @j.jaffeux sind die Hauptbeitragsleistenden dieses riesigen Features, das über einen langen Zeitraum entwickelt wurde. Ohne ihre hervorragende Arbeit hätte ich das Feature nicht an diesen Punkt bringen und diese Ankündigung machen können :tada:.

41 „Gefällt mir“

Das ist gleichzeitig fantastische und schreckliche Nachricht. Lassen Sie mich das erklären. Erstens ist es großartig, die IMAP-Integration mit Discourse-Gruppen zu sehen, da sie eine Reihe nützlicher Lösungen für die Gruppenidentität bietet (unter Verwendung der korrekten ursprünglichen Adresse), das Arbeiten mehrerer Benutzer mit demselben IMAP-Konto erleichtert (was nativ nicht gut unterstützt wird, z. B. keine gemeinsamen Lesezustände), und den Weg zu ActivityPub-Inboxen öffnet… Aber es ist eine schreckliche Nachricht, da ihre Implementierung E-Mail-Giganten begünstigt, die einen federierten Dienst in ein weitgehend zentralisiertes System verwandelt haben. Ich verstehe die Anziehungskraft, mit großen Anbietern zu arbeiten, aber ich hoffe, dass der IMAP-Standard provider-spezifischen Erweiterungen vorgezogen wird, damit jeder E-Mail-Anbieter unterstützt wird, sobald dieses Feature den Beta-Status erreicht.

Großartige Arbeit, das möglich zu machen.

10 „Gefällt mir“

Es gibt einen großen Grund, warum dieses Feature als „Alpha

17 „Gefällt mir“

Das ist eine berechtigte Kritik. Wie @sam bereits sagte, haben wir uns zunächst auf Gmail konzentriert, da wir es selbst nutzen und es für uns daher am relevantesten ist. Ich bin jedoch der Meinung, dass unser grundlegender „generischer

12 „Gefällt mir“

Das sieht sehr spannend aus! Mein Unternehmen ist kürzlich von unserem eigenen Mailserver auf G-Suite umgestiegen, und diese Integration wird es uns ermöglichen, viel einfacher auf Kundenanfragen zu antworten und unsere Fortschrittsverfolger zu verwalten. Ich habe jedoch eine Frage an @martin: Mir ist nicht ganz klar, ob die Antwort auf in der Gruppen-Posteingang empfangene Nachrichten über den Gmail-SMTP oder über den für Discourse konfigurierten Mass-SMTP gesendet wird. Der Plugin-Hinweis erwähnt zwar den Gmail-SMTP, aber ich wollte hier noch einmal Klarheit.

6 „Gefällt mir“

Der Gmail SMTP-Server wird verwendet, um die Antworten zu versenden, da du die Antworten im Namen des E-Mail-Kontos versendest, das für die IMAP-Synchronisierung verwendet wird! Ich werde eine entsprechende Anmerkung im OP hinzufügen, um dies zu verdeutlichen.

7 „Gefällt mir“

Das ist tatsächlich genial. Mir fallen so viele Anwendungsfälle dafür ein. Respekt an @martin @dan @j.jaffeux :raising_hands:

9 „Gefällt mir“

Kurzes Update: Ich habe diese beiden PRs letzte Woche zusammengeführt. Erstens die Korrektur, damit das Tagging nicht mehr aktiviert sein muss, um Archivierung und Löschung zu ermöglichen:

Zweitens schreibe ich jetzt alle IMAP-Protokolle in die Datenbank, um die Überprüfung zu erleichtern. Täglich wird ein Job ausgeführt, um Protokolle älter als 5 Tage zu löschen:

11 „Gefällt mir“

Das ist wirklich nett! Danke.

Ich sollte erwähnen, dass ich in meinem Google-E-Mail-Konto ein App-Passwort erstellen musste, damit Discourse meinen Benutzernamen und mein Passwort akzeptiert.

5 „Gefällt mir“

Verwendest du auf Google-Seite eine Zwei-Faktor-Authentifizierung? Wenn ja, ist dies übliches Vorgehen.

2 „Gefällt mir“

Ja. Ich glaube, das war erforderlich, um das App-Passwort zu erstellen (obwohl ich mich nicht mehr sicher daran erinnere).

1 „Gefällt mir“

[quote=“martin, Beitrag:1, Thema:160588”]
Sie müssen ein App-Passwort erstellen, andernfalls müssen Sie den „Zugriff für weniger sichere Apps

4 „Gefällt mir“

Ups! Habe ich erwähnt, dass mein Leseverständnis zu wünschen übrig lässt? :woozy_face:

5 „Gefällt mir“

Ist schon in Ordnung! Das ist ein wichtiger Punkt, daher habe ich ihn an den Anfang der Gmail-Liste verschoben und einige Warnhinweise hinzugefügt. Vielen Dank, dass du versucht hast, andere darauf hinzuweisen, um ihnen Ärger zu ersparen :slight_smile:

6 „Gefällt mir“

Ich versuche zu verstehen, warum die Synchronisierung von E-Mails mit einem Dovecot-IMAP-Server fehlschlägt (leider habe ich keine Erfahrung mit Ruby oder Rails).

Beim Lesen der imap_sync_logs hängt der Import-Daemon in einer Schleife:

UIDVALIDITY = 1612565899 stimmt nicht mit dem erwarteten Wert 0 überein, IMAP-Cache wird ungültig gemacht und E-Mails für das Postfach INBOX werden erneut synchronisiert

Daher frage ich mich, ob @group.imap_uid_validity in diesem Fall nicht aktualisiert werden sollte:

Nach einer manuellen Aktualisierung dieses Werts hängt der Import-Daemon in einer anderen Schleife.

Dovecot unterstützt 'LABELS' nicht:

Dies führt zu einem Net::IMAP::BadResponseError, der leider nicht in den Logs erscheint.

Jetzt frage ich mich:

  • Ist die Unterstützung benutzerdefinierter Flags durch Dovecot für eine bidirektionale Synchronisierung mit Discourse ausreichend?
  • Wie kann Dovecot in lib/imap/providers/detector.rb erkannt werden?
  • Wie kann die Label-Funktion in einem Dovecot-Provider emuliert werden?

5 „Gefällt mir“

Die IMAP-Synchronisierung für Gruppenpostfächer ist noch eine Funktion im frühen Stadium, die derzeit nur Gmail unterstützt. Theoretisch könntest du einen Dovecot-Provider schreiben, aber ich habe vor ein paar Wochen festgestellt, dass es im Hauptcode einige Stellen gibt, die nur für Gmail spezifische Funktionen verwenden und die in providerspezifischen Code verschoben werden müssen. Es tut mir leid, aber du solltest vielleicht warten, bis dies etwas produktionsreifer ist.

7 „Gefällt mir“

Soweit ich das verstehe, ist 'LABELS' eine nicht-standardkonforme Funktion von Gmail.

Ich möchte den Unterschied zwischen Google IMAP und Standard-IMAP verstehen.

Hier ist meine bisherige Zusammenfassung:

Standard-IMAP Google-IMAP
Archivierte E-Mails leben in Unterordnern Alle E-Mails leben in einem Ordner
archivierte Nachrichten fehlt das Label “\INBOX”
Benutzerdefinierte Flags werden zusammen mit System-Flags gespeichert Benutzerdefinierte Flags werden als Labels gespeichert

Wäre es ausreichend

  • Labels in Standard-IMAP zu emulieren, indem Flags in System- und benutzerdefinierte Flags aufgeteilt werden
  • email_is_archived vom Provider zu handhaben (z. B. ein “archived”-Flag hinzufügen und testen)
  • um die Synchronisierung mit Standard-IMAP in Gang zu bringen?

Dies würde diese Zeilen betreffen:

Diese Zeile scheint mir seltsam:

Alle System-Flags werden von Discourse-Tags überschrieben.
Werden damit alle IMAP-Flags korrekt behandelt (\Answered, \Deleted, \Draft, \Flagged, \Recent und \Seen / $Forwarded, $MDNSent, $SubmitPending und $Submitted)?

2 „Gefällt mir“

Ich schaue das nach einiger Zeit wieder an.

Ich habe nicht herausfinden können, wie man den reply-to-Header korrekt einrichtet. Ich kann eine Gruppe so einrichten, dass sie mit einem bestimmten Gmail-Konto synchronisiert wird, aber wenn ich versuche, per E-Mail zu antworten, wird die reply-to-Adresse auf die konfigurierte Benachrichtigungs-E-Mail aus Discourse und nicht auf die IMAP-Adresse gesetzt.

Fehlt mir hier etwas?

1 „Gefällt mir“

Wir haben das gerade mit dem E-Mail-Anbieter GoDaddy getestet, leider ohne Erfolg. Mit Gmail funktioniert es hervorragend, aber wir möchten gerne unsere eigene Domain nutzen. Gibt es dazu bereits Updates, damit es einsatzbereit ist?

1 „Gefällt mir“

Du kannst deine eigene Domain mit Gmail verwenden (gegen Gebühr), falls es dich interessiert.

1 „Gefällt mir“