Hat jemand hier Erfahrung ob Push in Verbindung mit dem UCS-Mailserver funtioniert? Als Admin bringt mir “Test Push”
Push::onlyFallback()=true --> Using fallback via regular JSON requests
SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime=120
resetting to SwoolePush\Backend::failedAttempts()=0 and SwoolePush\Backend::backoffTime()=60seconds
SwoolePush\Backend->online()=["Administrator"]
Push::onlyFallback()=false --> Using native Swoole Push
SwoolPush\Backend::failedAttempts()=2, SwoolePush\Backend::backoffTime=60
Push->online()=["Administrator"]
Jein
Du musst zwei Sachen unterscheiden:
-
Push in EGroupware, was bei Dir komischerweise nicht funktioniert, aber unter Univention kein Problem sein sollte. Evtl. verwendest Du statt https mit gültigem Zertifikat irgendetwas anderes, musst Du dann halt ändern.
-
Push von eingehenden / geänderten Mails: das erfordert eine bestimmte Konfiguration des Dovecot / IMAP Server die wir nicht automatisch unter UCS vornehmen, kannst Du aber machen und funktioniert dann auch:
https://github.com/EGroupware/egroupware/wiki/IMAP-Push-Notifications6
UCS verwendet - meines Wissens - noch Dovecot 2.2, der nur Push von eingehenden Mails in der INBOX unterstützt, ist im obigen Link beschrieben.
Ralf
Es gibt die Möglichkeit ein Konto für alle anzulegen. Das Konto wird ohne Zugangsdaten gespeichert und einer Gruppe zugewiesen. Inklusive Signatur für alle
Kann im Unternehmens-Umfeld ungemein viel Arbeit sparen.
Auch Funktionspostfächer Benutzern über eine Gruppe zuweisen ist praktisch.
Nur so als weiteres “Leckerchen”
Stefan
Ich habe hier im Forum mal gesucht. Es scheint wohl daran zu liegen dass auf dem Default-UCS selbst signierte Zertifikate eingerichtet sind. Ich habe im WebUI -> Admin -> Mail die lokale IP des UCS-Servers mit IMAP-Port angegeben (192.168.122.6:993). Seltsam ist dass wenn ich den Push-Test ausführe sich die Ausgabe jedes mal ändert. Mals Alles Rot, eines Grün oder auch mal beide Grün. Ist für mich nun schwer abzuschätzen woran es liegt.
Im derzeitigen produktiven Netz ist dies auch so. Allerdings ist dort auf de pfSense mittels HA-Proxy & ACME gewährleistet dass die HTTPS-Anfragen von der pfSense mit gültigen Zertifikaten entgegen genommen werden. Dank NAT-Reflextion klappt dies dann auch von intern. Zum addressieren der Systeme aus dem LAN wird auch die öffentliche Subdomain genutzt.
In der Testumgebung (KVM auf Laptop) werde ich mir das aber nicht antun. Kann man EGw bzw. den Push nicht zur Arbeit mit diesen selbst signierten Zertifikaten bewegen?
Das schaue ich mir an. Der UCS hat dovecot 2.3.4.1. Allerdings gibt es das im Wiki genannte Paket dovecot-lua nicht
curl https://raw.githubusercontent.com/EGroupware/swoolepush/master/doc/dovecot-push.lua3
Ist immer noch da wo es sein sollte und lässt sich auch herunter laden:
Stefan
Ich habe mir so ziemlich alle Beiträge im Forum zum Thema angeschaut. Was ich nicht verstehe wie es auf einer Seite an den selbst signierten Zertifikaten liegen soll aber auf der anderen Seite je nach dem wie ich auf “Reset” und “Retry” klicke es manchmal rot oder grün wird. Das muss doch ein anderes Problem sein, oder?
Nein. Das ist wie gesagt das Problem.
Univention:
root@com01:~# apt search dovecot-
dovecot-auth-lua/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [installiert]
dovecot-core/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-dev/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-gssapi/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-imapd/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-ldap/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-lmtpd/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-lucene/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-managesieved/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-mysql/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-pgsql/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-pop3d/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-sieve/ucs501,now 1:2.3.4.1-5+deb10u6 amd64 [Installiert,automatisch]
dovecot-solr/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-sqlite/ucs501 1:2.3.4.1-5+deb10u6 amd64
dovecot-submissiond/ucs501 1:2.3.4.1-5+deb10u6 amd64
fusiondirectory-plugin-dovecot-schema/ucs501 1.2.3-4+deb10u1 all
mysqmail-dovecot-logger/ucs501 0.4.9-10.2+b1 amd64
Ubuntu 20.04:
root@lt001:/home/s.gehr# apt search dovecot-
v dovecot-abi-2.3.abiv7 -
p dovecot-antispam - Dovecot plugins for training spam filters
p dovecot-auth-lua - secure POP3/IMAP server - Lua authentication plugin
v dovecot-common -
p dovecot-core - Sicherer POP3-/IMAP-Server - Systemkern
p dovecot-dev - sicherer POP3/IMAP-Server - Headerdateien
p dovecot-gssapi - Sicherer POP3-/IMAP-Server - GSSAPI-Unterstützung
p dovecot-imapd - sicherer POP3/IMAP-Server - IMAP-Daemon
p dovecot-ldap - secure POP3/IMAP server - LDAP support
p dovecot-lmtpd - secure POP3/IMAP server - LMTP server
p dovecot-lucene - secure POP3/IMAP server - Lucene support
p dovecot-managesieved - secure POP3/IMAP server - ManageSieve server
p dovecot-mysql - secure POP3/IMAP server - MySQL support
p dovecot-pgsql - secure POP3/IMAP server - PostgreSQL support
p dovecot-pop3d - sicherer POP3/IMAP-Server - POP3-Daemon
p dovecot-sieve - secure POP3/IMAP server - Sieve filters support
p dovecot-solr - secure POP3/IMAP server - Solr support
p dovecot-sqlite - secure POP3/IMAP server - SQLite support
p dovecot-submissiond - secure POP3/IMAP server - mail submission agent
p fusiondirectory-plugin-dovecot-schema - LDAP schema for FusionDirectory dovecot plugin
p mysqmail-dovecot-logger
Ein Paket dovecot-lua existiert hier nicht
Im Community Repo von Dovecot selbst gibt es das Paket. Ich habe nie versucht den Standard Dovecot von Ubuntu oder Debian zu verwenden.
Wenn ich bei Debian schaue ist Lua eine Abhänigkeit des dovecot-core Paketes:
https://packages.debian.org/bullseye/dovecot-core1
Ich würde mal davon ausgehen, dass es kein separates dovecot-lua gibt, und Du nur die anderen Lua Bibliotheken extra installieren musst. Das Gleiche sollte für UCS gelten, die ja “nur” die Debian Pakete rebuilden.
EGroupware weiß nicht ob es einen Push Server gibt oder nicht, deswegen probiert es einfach und merkt sich wenn der Versuch schief geht das für eine gewisse Zeit. Reset setzt das zurück und deswegen ist danach der Text erst mal wieder in grün und keine Fehlversuche. Interessant ist sowieso die rote oder grüne Meldung am oberen Rand des Fensters, der Text im Anwendungsbereich hilft nur wenn oben eine Fehler, sprich eine rote Meldung kommt und keine grüne.
Ralf
Sprich Push geht nicht, da die Message oben ROT ist.
Das ist - wie gesagt normal, wenn Du https mit einer IP Adresse und daher immer ungültigem Zertifikat benutzt.
Unter UCS gibt es zwei einfache Wege für gültige Zertifikate:
- die Let’s Encrypt App erzeugt einfach eins, sofern der Server von außen erreichbar ist (Port 80 und 443!)
- Univention legt mit der Domain eine CA an, die es in allen Containern bekannt macht / injiziert, dazu musst Dein Desktop/Browser aber den DNS des UCS Systems verwenden, z.B. in dem es in die Domain gejoint ist. Oder Du trägst den UCS Namen in Deinem Desktop in die hosts Datei ein
Ralf
Das scheidet aus da ich wie gesagt eine virtuelles Netzwerk auf dem Laptop mit KVM eingerichtet habe.
Das verstehe ich nicht ganz. Diese CA wird automatisch angelegt und den Containern bekannt gemacht? Dann sind diese ja aber noch immer selbst signiert.
Ich habe in dem virtuellen Netz auch einen Ubuntu Client der vollständig in die UCS/ADS gejoint ist. Das wäre also nicht das Problem.
Jein, gültige Zertifikate sind - per Definition - die, die von eine CA signiert wurden, die der Client kennt.
Eine UCS Domain hat, wie auch eine Windows Domain, eine CA und verteilt diese automatisch an alle Clients der Domaine und das schließt die Container des AppCenters - also z.B. EGroupware oder Rocket.Chat - mit ein.
Technisch kopiert UCS seine CA einfach in den Container an die richtige Stelle.
Also zu testen entweder http&IP oder https und gültiges Zertifikat, sonst wird es nichts.
Produktiv ist ein gültiges Zertifikat natürlich Pflicht!
Ralf
Ralf
Ich würde das Thema Push nochmal aufgreifen und hoffentlich abschließend abarbeiten.
Der EGw Push funktioniert soweit ich das beurteilen kann. Ich lege als User A im Kalender der Gruppe Default einen Termin an und User 2 bekommt ein PopUp oben / rechts. das ist doch der besagte Push, oder?
zum IMAP-Push. Hier ist wie gesagt die Version dovecot 2.3.4.1. gegeben. Ich habe mal das Paket dovecot-auth-lua nachinstalliert und nach der Anleitung im WIKI vorgegangen.
-
bearer-token ausgelesen
-
Dieser enthält weder + noch / … also nächsten Schritt übersprungen. Weiter zu Dovecot 2.3
-
Pakete installiert mit Ausnahme von dovecot-lua
root@com01:~# dpkg -l|grep lua
ii dovecot-auth-lua 1:2.3.4.1-5+deb10u6 amd64 secure POP3/IMAP server - Lua authentication plugin
ii liblua5.1-0:amd64 5.1.5-8.1+b2 amd64 Shared library for the Lua interpreter version 5.1
ii liblua5.2-0:amd64 5.2.4-1.1+b2 amd64 Shared library for the Lua interpreter version 5.2
ii liblua5.3-0:amd64 5.3.3-1.1 amd64 Shared library for the Lua interpreter version 5.3
ii lua-json 1.3.4-2 all JSON decoder/encoder for Lua
ii lua-lpeg:amd64 1.0.0-2 amd64 LPeg library for the Lua language
ii lua-socket:amd64 3.0~rc1+git+ac3201d-4 amd64 TCP/UDP socket library for the Lua language
curl https://raw.githubusercontent.com/EGroupware/swoolepush/master/doc/dovecot-push.lua > /etc/dovecot/dovecot-push.lua
- Datei /etc/dovecot/conf.d/14-egroupware-push.conf angelegt mit folgendem Inhalt:
# Store METADATA information in a file dovecot-metadata in user's home
mail_attribute_dict = file:%h/dovecot-metadata
# enable metadata
protocol imap {
imap_metadata = yes
}
# add necessary plugins for Lua push notifications
mail_plugins = $mail_plugins mail_lua notify push_notification push_notification_lua
# Lua notification script and URL of EGroupware push server
plugin {
push_notification_driver = lua:file=/etc/dovecot/dovecot-push.lua
push_lua_url = https://Bearer:AbCdEfGhIjKlMnOp@http://com01.test.lan/egroupware/push
}
- systemctl restart dovecot
In EGw als Benutzer angemeldet und diesem User von extern eine Mail gesendet und den Posteingang einfach nur beobachtet. Parallel dazu das Logfile auf dem UCS. Dort sehe ich dass die Mail zugestellt wurde aber in EGw wird diese erst angezeigt wenn ich erneut in den Posteingang klicke.
Daraus schließe ich das IMAP-Push nicht funktioniert
Im Log finde ich auch einen entsprechenden Fehler zu LUA:
Jan 22 12:02:28 com01 systemd[1]: Started Dovecot IMAP/POP3 email server.
Jan 22 12:02:28 com01 dovecot[6574]: doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -Pn > dovecot-new.conf
Jan 22 12:02:28 com01 dovecot[6574]: doveconf: Warning: Obsolete setting in /etc/dovecot/conf.d/10-ssl.conf:61: ssl_protocols has been replaced by ssl_min_protocol
Jan 22 12:02:28 com01 dovecot[6574]: doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -Pn > dovecot-new.conf
Jan 22 12:02:28 com01 dovecot[6574]: doveconf: Warning: Obsolete setting in /etc/dovecot/conf.d/10-ssl.conf:61: ssl_protocols has been replaced by ssl_min_protocol
Jan 22 12:02:28 com01 dovecot[6574]: master: Dovecot v2.3.4.1 (f79e8e7e4) starting up for imap, lmtp, sieve, pop3 (core dumps disabled)
Jan 22 12:02:28 com01 dovecot[6577]: doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -Pn > dovecot-new.conf
Jan 22 12:02:28 com01 dovecot[6577]: doveconf: Warning: Obsolete setting in /etc/dovecot/conf.d/10-ssl.conf:61: ssl_protocols has been replaced by ssl_min_protocol
Jan 22 12:02:28 com01 dovecot[6577]: config: Warning: NOTE: You can get a new clean config file with: doveconf -Pn > dovecot-new.conf
Jan 22 12:02:28 com01 dovecot[6577]: config: Warning: Obsolete setting in /etc/dovecot/conf.d/10-ssl.conf:61: ssl_protocols has been replaced by ssl_min_protocol
Jan 22 12:04:53 com01 fetchmail[6027]: 1 Nachricht für sven@extern.de bei pop3.strato.de (5160 Bytes).
Jan 22 12:04:53 com01 postfix/smtpd[6582]: connect from localhost[127.0.0.1]
Jan 22 12:04:53 com01 postfix/smtpd[6582]: A73284035AF: client=localhost[127.0.0.1]
Jan 22 12:04:53 com01 postfix/cleanup[6585]: A73284035AF: message-id=<CAFJA1Epg_-J0QuSjUZmCW9TY-03kiomd9pT7SV=1tHqhRzKEhA@mail.gmail.com>
Jan 22 12:04:53 com01 postfix/qmgr[1159]: A73284035AF: from=<ich@gmail.com>, size=5475, nrcpt=1 (queue active)
Jan 22 12:04:53 com01 fetchmail[6027]: Nachricht sven@extern.de@pop3.strato.de:1 von 1 wird gelesen (5160 Bytes) gelöscht
Jan 22 12:04:53 com01 postfix/smtp[6586]: warning: database /etc/postfix/tls_policy.db is older than source file /etc/postfix/tls_policy
Jan 22 12:04:53 com01 postfix/smtpd[6582]: disconnect from localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Jan 22 12:04:58 com01 postfix/smtpd[6589]: connect from localhost[127.0.0.1]
Jan 22 12:04:58 com01 postfix/smtpd[6589]: C20CB40358C: client=localhost[127.0.0.1], orig_queue_id=A73284035AF, orig_client=localhost[127.0.0.1]
Jan 22 12:04:58 com01 postfix/cleanup[6585]: C20CB40358C: message-id=<CAFJA1Epg_-J0QuSjUZmCW9TY-03kiomd9pT7SV=1tHqhRzKEhA@mail.gmail.com>
Jan 22 12:04:58 com01 postfix/qmgr[1159]: C20CB40358C: from=<ich@gmail.com>, size=6261, nrcpt=1 (queue active)
Jan 22 12:04:58 com01 postfix/smtpd[6589]: disconnect from localhost[127.0.0.1] ehlo=1 xforward=1 mail=1 rcpt=1 data=1 quit=1 commands=6
Jan 22 12:04:58 com01 amavis[1782]: (01782-02) Passed CLEAN {RelayedInbound}, [127.0.0.1]:58140 [2607:f8b0:4864:20::930] <ich@gmail.com> -> <sven@extern.de>, Queue-ID: A73284035AF, Message-ID: <CAFJA1Epg_-J0QuSjUZmCW9TY-03kiomd9pT7SV=1tHqhRzKEhA@mail.gmail.com>, mail_id: w4lQr4Q6lpkx, Hits: 1.177, size: 5475, queued_as: C20CB40358C, 5054 ms
Jan 22 12:04:58 com01 postfix/smtp[6586]: A73284035AF: to=<sven@extern.de>, relay=127.0.0.1[127.0.0.1]:10024, delay=5.1, delays=0.07/0.01/0/5.1, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as C20CB40358C)
Jan 22 12:04:58 com01 postfix/qmgr[1159]: A73284035AF: removed
Jan 22 12:04:58 com01 dovecot[6577]: lmtp(6591): Connect from local
Jan 22 12:04:58 com01 dovecot[6577]: lmtp(sven@extern.de)<6591><kyGnMNrk62G/GQAAZr5PVw>: Error: lua: /etc/dovecot/dovecot-push.lua:24: attempt to call a nil value (method 'metadata_get')
Jan 22 12:04:58 com01 dovecot[6577]: lmtp(sven@extern.de)<6591><kyGnMNrk62G/GQAAZr5PVw>: sieve: msgid=<CAFJA1Epg_-J0QuSjUZmCW9TY-03kiomd9pT7SV=1tHqhRzKEhA@mail.gmail.com>: stored mail into mailbox 'INBOX'
Ich habe den Fehler mal im Web gesucht aber wirklich schlau wurde ich daraus nicht.
Beste Grüße
Was ich heraus finden konnte ist dass der Fehler bei Ausführung von /etc/dovecot/dovecot-push.lua in Zeile 24 angegeben Aufruf:
23 function dovecot_lua_notify_begin_txn(user)
24 local meta = user:metadata_get("/private/vendor/vendor.dovecot/http-notify")
25 if (meta == nil or meta:sub(1,5) ~= "user=")
26 then
27 meta = nil;
28 else
29 meta = meta:sub(6)
30 end
31 return {user=user, event=dovecot.event(), ep=user:plugin_getenv("push_lua_url"), messages={}, meta=meta}
32 end
Daher kommen muss dass die Datei: /private/vendor/vendor.dovecot/http-notify nicht existiert.
Dein Dovecot ist leider zu alt, die metadata_get Methode gibt es erst sein Dovecot 2.3.7:
https://doc.dovecot.org/admin_manual/lua/?highlight=acl#mail_user.metadata_get
Außer unsere Docu entsprechend anzupassen, kann ich Dir leider nicht viel helfen.
Du kannst natürlich den seit Dovecot 2.2 existierenden Push der nur neue Mails in der INBOX unterstützt verwenden, bis Univention ihr Dovecot Paket aktualisiert.
Ralf