... sollte Instant Messaging nicht so Provider-unabhängig sein wie E-Mail?
... und warum sich von einem Instant Messaging Provider abhängig machen?
18.02.2024, aktualisiert: 23.01.2025
Hier findet Ihr eine Übersicht für XMPP Gruppenchats (auch MUC genannt), die allgemeine Themen betreffen und in der Regel nicht über ein "Referenzprodukt" wie z. B. dem Namen einer Software zu finden sind. Ergänzungen und Vorschläge willkommen mit Hilfe des Supportchats am Ende dieser Seite. Politik bleibt absichtlich außen vor, hierfür gibt es schon genug Medien zum Austausch.
Ist schon ein XMPP-Client installiert, sollte ein Klick auf den Link genügen, um in den Chatraum zu gelangen. Wenn nicht, dann schnell zu den weiteren einstiegsfreundlichen XMPP-Seiten wechseln, sich ein Chatkonto zulegen und einen der vielen XMPP Clients installieren ;-)
14.07.2024
Neulich kam mir beim Stöbern mal wieder die Idee, eine alte Hardware neu zu nutzen. Ich habe schon seit Ewigkeiten einen Mobilfunk Stick für das 3G Netz (ja richtig, 3G), welcher schon länger bei mir keine Verwendung mehr findet. Der Stick ist ein Huawei E160E (damals gab es den u. a. bei n24 für den Internet Zugang).
Durch die Fusion von Sipgate und simquadrat und da ich schon seit Ewigkeiten einen (jetzt) Sipgate Basic Account habe, gab es irgendwann mal eine Mobilfunknummer kostenlos zur SIP-Rufnummer dazu. Auch die lag bei mir bisher mehr oder weniger brach. Bei genauerem Studium hatte ich festgestellt, dass man sich kostenlos SIM-Karten bestellen kann.
Also, mal das Internet bemüht und festgestellt, dass es mit Hilfe von den smstools (vorpaketiert für Debian) ohne große Anstrengungen möglich ist, SMS empfangen und versenden zu können. Zuerst wollte ich den modemmanager benutzen, bin aber letztendlich bei den smstools hängen geblieben. Eine Langzeit Zuverlässigkeitsaussage habe ich zwar noch nicht, aber bisher werkelt der Stick prima vor sich hin. Da es wohl am Schwierigsten sein soll, das jeweilige Modem zu initialisieren, stelle ich hier meine Konfiguration zur Verfügung. Vielleicht kann es der eine oder die andere brauchen :-)
/etc/smsd.conf
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
incoming = /var/spool/sms/incoming
logfile = /var/log/smstools/smsd.log
infofile = /var/run/smstools/smsd.working
pidfile = /var/run/smstools/smsd.pid
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent
stats = /var/log/smstools/smsd_stats
loglevel = notice
smart_logging = yes
receive_before_send = no
autosplit = 3
decode_unicode_text = yes
eventhandler = /usr/local/bin/sms2xmpp.sh
[GSM1]
init = AT+CPMS="ME","ME","ME"
device = /dev/serial/by-id/usb-HUAWEI_Technology_HUAWEI_Mobile-if00-port0
incoming = yes
baudrate = 115200
keep_open = yes
cs_convert = yes
memory_start = 0
check_memory_method = 3
report = no
rtscts = no
report_device_details = yes
signal_quality_ber_ignore = yes
Hier einige Besonderheiten:
/usr/local/bin/sms2xmpp.sh
die sich unter der Option eventhandler einstellen lässt. Hier ist wichtig zu wissen, dass der erste Parameter, der übergeben wird, das Ereignis darstellt (z. B. RECEIVED für SMS empfangen) und der zweite Parameter, der übergeben wird, den Pfad zur gespeicherten SMS beinhaltet.Wie die Weiterverarbeitung /usr/local/bin/sms2xmpp.sh
in der aussehen könnte, dafür gibt es hier ein sehr einfaches Beispiel, was man als Startbasis nehmen kann.
In meinem Falle nehme ich noch einige Daten mehr mit hinzu und sende das Ganze via go-sendxmpp an meine XMPP Adresse.
Eine winzige (bauartbedingte) Unannehmlichkeit gibt es noch: Die eingebaute grüne LED des Sticks blinkt regelmäßig im 2-3 Sekundentakt 1x auf. Der Stick sollte daher wenn möglich nicht im Schlafzimmer verbaut werden. Ansonsten bin ich ziemlich zufrieden mit der Lösung. Hier das Ergebnis:
Der erste Anbau erfolgte an einem Raspberry Pi Model 1B, musste aber aufgrund eines fehlenden aktiven USB-Hubs aber wieder verworfen werden, da der Stick soviel Energie aus dem USB-Port zieht, dass der Pi beim Einstecken neu startet. Das war so für mich nicht zu gebrauchen.
Sendemäßig habe ich diese Lösung noch nicht implementiert, da noch nicht gebraucht.
18.02.2024
XMPP bietet die Möglichkeit, mit Hilfe sogenannter Transports Nachrichten in andere (meistens proprietäre) Netze wie z. B. WhatsApp, Telegram, Signal, etc. senden und empfangen zu können. Die Einrichtung dieser Möglichkeit ist im Nachfolgenden beschrieben.
Es gibt aktuell zwei große Softwares, die diese Transporte ermöglichen:
Diese können selber gehostet werden, müssen es aber nicht. Ein öffentlicher XMPP-Provider, welcher beide Transports anbietet, ist z. B. hot-chilli.im.
Um herauszufinden, ob ein XMPP-Provider Transports anbietet, und wenn ja, welche, kann man mit Hilfe eines entsprechenden XMPP Clients wie z. B. Gajim - grafisch oder profanity - konsolenbasiert eine so genannte "Service Discovery" (disco) durchführen.
Bei profanity lautet der entsprechende Befehl, um den Server von hot-chilli.net zu durchsuchen:
/disco items hot-chilli.net
und es erscheinen (unter anderem) folgende Zeilen:
whatsapp.jabber.hot-chilli.net, (Hot-Chilli WhatsApp Transport)
whatsapp.hot-chilli.im, (Hot-Chilli WhatsApp Transport (Slidge Test))
Diese Adressen sollte man sich merken, da diese im Folgenden gebraucht werden, um den Transport nutzen zu können.
Die weitere Vorgehensweise hängt jetzt vom zu nutzenden Transport ab. Da die Benutzung von slidge aus meiner Sicht einfacher ist, wird diese hier weiter beschrieben:
Es wird ein 1:1 Chat im XMPP Client geöffnet, und zwar zur oben gezeigten Adresse (im Beispiel whatsapp.hot-chilli.im). Meistens erfolgt eine Warnung, dass das eine Domain ist und keine Chatadresse in der Form name@provider.org, das kann man aber ignorieren. Sollte der gewählte XMPP Client dies nicht unterstützen, bleibt nur das Ausweichen auf einen anderen Client. Die eigentliche Kommunikation erfolgt grundsätzlich unverschlüsselt.
Nun kann man entweder mit ad-hoc Kommandos weiterarbeiten (diese werden z. B. durch Gajim unterstützt), bei slidge hat man jedoch den Vorteil, dass man auch den normalen Chat nutzen kann. Gibt man hier z. B. help
ein, so erscheint ein kleines Hilfemenü und danach weiß man, dass man mit dem Befehl register
sich am Gateway registrieren kann.
Das weitere Vorgehen hängt jetzt vom Zielnetz ab. Man wird vom slidge-Chat jedoch geleitet, was verlangt wird.
Grundsätzlich können Gruppen und Kontakte synchronisiert werden. Diese Kontakte erscheinen dann in der Kontaktliste und brauchen nicht mehr, wie nachfolgend beschrieben, gesucht zu werden.
Die WhatsApp-Adressen sehen unter slidge in XMPP z. B. wie folgt aus: +4915112341234@whatsapp.hot-chilli.im
Dabei ist der erste Teil die Telefonnummer des Kontaktes bei WhatsApp, der Teil nach dem "@" entspricht der Transport-Domain.
Eine Telegram-Adresse für einen 1:1 sieht in XMPP z. B. wie folgt aus: 321056789@telegram.hot-chilli.im
Dabei ist die Nummer vor dem @ die ID des Chatpartners auf Telegram. Diese kann man mit z. B. mit Bots herausfinden.
Eine Telegram-Adresse für einen Gruppenchat sieht in XMPP z. B. so aus: group-1004567890123@telegram-hot-chilli.im
Hierbei entspricht die Nummer vor dem "@" der Gruppenchat Nummer.
Wenn es unumgänglich ist, mit bestimmten Kommunikationspartnern über die (proprietären) Netze zu kommunizieren, sind Transports ein gutes Mittel, um den Kontakt zu halten. Vorzuziehen wäre jedoch ein kompletter Umstieg auf das XMPP Netzwerk.
17.01.2024
10.02.2025
Da Proxmox seit einiger Zeit auch sogenannte "Webhooks" beherrscht, ist es relativ einfach, sich per XMPP Benachrichtigungen von Proxmox schicken zu lassen. Voraussetzung: Ihr nutzt einen XMPP-Anbieter, der auch eine HTTP-Schnittstelle für XMPP bereitstellt (z. B. Hot Chilli oder monocles.de bzw. monocles.eu). Im Zweifel Euren Anbieter fragen. Benutzt dieser einen Prosody-Server, so heißt das entsprechende Modul, auf dem auch diese Anleitung beruht, mod_post_msg
Die Einrichtung erfolgt im Proxmox GUI über das Rechenzentrum
. Hier wählt man ziemlich weit unten den Punkt Benachrichtigungen
aus. Dort befinden sich dann zwei Unterpunkte, von denen wir uns den ersten genauer ansehen. Dieser lautet Benachrichtigungsziele
. Nach Anklicken des Punktes Hinzufügen
öffnet sich ein Pulldown-Menü, aus dem wir den Punkt Webhook
auswählen. Nun erfolgt die eigentliche Bearbeitung.
Als erstes vergibt man dem Webhook einen Namen. Hier muss darauf geachtet werden, dass dieser keine Leerzeichen enthält, da sonst die Bearbeitung nicht abgeschlossen wird. Die Methode belassen wir auf POST. Das Häkchen bei Aktivieren sollte auch gesetzt sein. Jetzt erfolgt die Eingabe der Zieladresse, bei hot-chilli lautet diese: https://jabber.hot-chilli.net:5281/msg/
. Nutzt Ihr monocles.de oder monocles.eu als Provider, dann lautet die Zieladresse: https://monocles.de/msg/
bzw. https://monocles.eu/msg/
. Dann brauchen wir 2 Header, die wir im darauf folgenden Feld setzen. Der erste hat als Schlüssel Content-Type
und als Wert application/json
. Der zweite hat als Schlüssel Authorization
und erhält als Wert Basic base64-encoded-username:password
. Das Wort Basic wird so in den Wert geschrieben. Unter Linux bekommt man den darauf folgenden Wert in der Kommandozeile mit dem Befehl echo -n "benutzer@xmpp-server.de:strenggeheimespasswort" | base64
. Der Benutzer, der hier eingetragen wird, ist der Sender der Nachricht.
Das jetzt folgende Feld heißt body
und beinhaltet Informationen im JSON-Format (wir haben ja als Content-Type json ausgewählt). Das sieht zum Beispiel jetzt so aus:
{
"to": "empfaenger@xmpp-server.de",
"type": "chat",
"body": "{{ title }}\n{{ severity }}\n{{ timestamp }}\n{{ message }}",
}
Der Wert von to
enthält die komplette XMPP-Empfängeradresse. type
sollte auf chat
belassen werden und im body
verbirgt sich die eigentliche Nachricht, die der Empfänger bekommen soll. Die jeweils doppelt geschweiften Klammern beinhalten Variablen, die beim Verschicken einer Benachrichtigung durch die jeweiligen Ereignisse ersetzt werden. Welche es davon alle gibt, kann man sich über die Hilfe links unten anzeigen lassen.
Abschließend kann man noch einen Kommentar vergeben, der dann in der Übersicht auftaucht, damit man diese Benachrichtigungsart von anderen Arten besser unterscheiden kann. Danach kann die Eingabe auf einen Klick auf OK beendet werden und damit ist die XMPP-Benachrichtigung fertig.
Falls alles richtig gemacht wurde, kann man jetzt in der Übersicht das neu erstellte Benachrichtigungsziel durch Anklicken auswählen und im Auswahlmenü einen Test ausführen lassen. Nach einer weiteren Bestätigung sollte man dann eine Testbenachrichtigung erhalten. Damit wäre die Konfiguration des Benachrichtigungsziels abgeschlossen.
Im letzten Schritt muss noch festgelegt werden, bei welcher Art der Benachrichtigung die XMPP-Benachrichtigung versendet werden soll. Da ich bei mir noch keine Benachrichtigung per eMail konfiguriert hatte, lasse ich mich einfach bei allen Vorfällen benachrichtigen. Hierzu ändert man einfach den default-matcher
ab, indem man auf der Registerkarte Benachrichtigungsziele
das eben erstellte Benachrichtigungsziel (mit)auswählt.
21.12.2024 (last update)
/me
am Anfang einer Nachricht wird ersetzt durch den Nicknamen (falls vom Client unterstützt)!uptime
xmpp:ich@irgendwo.ser.ver?add;name=Anzeigename
13.03.2024
Die zur Zeit gängigste Verschlüsselung bei XMPP ist OMEMO, nachfolgend sollen ein paar Besonderheiten im Zusammenhang mit OMEMO aufgelistet werden
17.01.2024
Da die Entwicklung von Monocles Chat zur Zeit rasant voranschreitet, kann es passieren, dass die nachfolgenden Kniffe nicht mehr oder anders funktionieren
:racoon
11.11.2024
Hier kannst Du direkt Kontakt zum Support aufnehmen, für Feedback, Kommentare, Ergänzungen. Dieser Zugang ist testweise, sollte dieser zugespamt werden, wird er wieder abgestellt.