Messagerie instantanée avec un contact externe impossible

Bonjour,

Je gère deux serveurs BlueMind, et il est impossible, sur les deux serveurs, de communiquer en XMPP avec une personne extérieure au serveur.

Par exemple, si je tente d’ajouter mon compte bluemind luc@example.org dans les contacts de mon compte luc@prosody.fr (serveur prosody 0.9.4-1 des backports debian wheezy, mais avant c’était un 0.8.2 debian stable), j’obtiens ceci : https://framalab.org/zerobin/?26e9e5ac5240cc4f#4YGltUetcjXzFz2BRKS0u7NFdJ4a8YrhnT1tSSyE0MA=]

Par contre, sur l’autre serveur Bluemind, en tentant d’ajouter luc@turlututu.org dans les contacts de mon compte luc@prosody.fr, j’obtiens un autre problème. Je reçois la demande d’ajout, mais ensuite cela plante aussi : https://framalab.org/zerobin/?eba8bf9773a8d3ab#tjez3DldgPtiOtKXxKhJCNA+2wU6zotVDLVNENG5+qY=]

Et tout cela sans logs vraiment parlant dans bm-xmmp/xmpp.log :

2014-09-29 18:40:51,440 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin
2014-09-29 18:47:17,911 n.b.x.s.BMOfflineMessages INFO - Packet for offline user not suitable for storing: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unavailable" from="luc@example.org/Kopete" xmlns="jabber:client"/>, SIZE=101, XMLNS=jabber:client, PRIORITY=HIGH, PERMISSION=AUTH, TYPE=unavailable
2014-09-29 18:47:17,911 n.b.x.s.BMOfflineMessages INFO - Storing packet for offline user: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unsubscribe" from="luc@example.org" xmlns="jabber:client"/>, SIZE=94, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=AUTH, TYPE=unsubscribe
2014-09-29 18:47:17,911 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin
2014-09-29 18:47:17,912 n.b.x.s.BMOfflineMessages INFO - Storing packet for offline user: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unsubscribed" from="luc@example.org" xmlns="jabber:client"/>, SIZE=95, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=AUTH, TYPE=unsubscribed
2014-09-29 18:47:17,912 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin
2014-09-29 19:07:52,146 n.b.x.s.BMOfflineMessages INFO - Storing packet for offline user: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence type="subscribe" to="luc@prosody.fr" from="luc@example.org" xmlns="jabber:client"/>, SIZE=92, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=AUTH, TYPE=subscribe
2014-09-29 19:07:52,147 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin
2014-09-29 19:07:53,024 n.b.x.s.BMUserRepo INFO - userExists luc@prosody.fr => false
2014-09-29 19:16:34,810 n.b.x.s.BMOfflineMessages INFO - Packet for offline user not suitable for storing: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unavailable" from="luc@example.org/Kopete" xmlns="jabber:client"/>, SIZE=101, XMLNS=jabber:client, PRIORITY=HIGH, PERMISSION=AUTH, TYPE=unavailable
2014-09-29 19:16:34,811 n.b.x.s.BMOfflineMessages INFO - Storing packet for offline user: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unsubscribe" from="luc@example.org" xmlns="jabber:client"/>, SIZE=94, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=AUTH, TYPE=unsubscribe
2014-09-29 19:16:34,811 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin
2014-09-29 19:16:34,811 n.b.x.s.BMOfflineMessages INFO - Storing packet for offline user: from=sess-man@fry.prosody.fr, to=sess-man@fry.prosody.fr, DATA=<presence to="luc@prosody.fr" type="unsubscribed" from="luc@example.org" xmlns="jabber:client"/>, SIZE=95, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=AUTH, TYPE=unsubscribed
2014-09-29 19:16:34,812 n.b.x.s.BMOfflineMessages INFO - store message /usr/share/bm-xmpp/offline/luc@prosody.fr.bin

Auriez-vous une idée ?

Up ?

Bonjour,

le port 5269 est ouvert (coté pare-feu/passerelle/…) ?

https://forge.blue-mind.net/confluence/display/DA/.Administration+du+serveur+XMPP+vBM-3

Poustiquet

Oui, il n’y a pas de problème de ports. Les serveurs communiquent, mais mal. Avec un des BlueMind, mon serveur dit que le format n’est pas correct, avec l’autre ça fait carrément planté prosody !

La seule vraie différence entre les BlueMind est que l’un vient d’une installation en 2.xx upgradée au fur et à mesure vers la dernière 3.xx, et l’autre est un serveur 3.xx installé avec l’avant-dernière version et upgradé vers la dernière version.

Et mon serveur xmpp perso n’a jamais eu de problème pour ajouter des contacts d’autres serveurs. J’ai testé avec le serveur xmpp du boulot : mon serveur perso passe nickel, et les BlueMind non.

A 2h du matin , je ne suis pas très frais …

Avant de me coucher, je me suis mis à regarder de nouveau tes logs …

Avant le port :5269, il faut qu’il trouve nom du serveur hébergeant l’XMPP serveur …
Donc question c… ; réponse stupide, mais je te la pose tout de même :

As tu les bon champs auto_discover pour permettre à ton serveur XMPP de trouver le serveur hébergeant le service XMPP (tournant sur le port 5269) ?

A moins de se mettre des batons dans les roues, je ne pense pas que ton serveur de mail hébergeant ton-domain.tld, soit réellement hébergé sur un serveur à ta racine de ta zone DNS …

Ton serveur 1 ne trouve pas le serveur XMPP mail.domaine2.tld, et vice et versa …

Crdt
Poustiquet

À priori, ça devrait fonctionner effectivement.

Avez-vous suivi cette documentation ?

Eh bien oui, j’ai bien ces enregistrements depuis le début, et pour les deux serveurs + le prosody :frowning:

sky@m: ~ » dig _xmpp-client._tcp.example.org SRV +short
5 0 5222 bm.example.org.
sky@m: ~ » dig _xmpp-server._tcp.example.org SRV +short      
5 0 5269 bm.example.org.
sky@m: ~ » dig _jabber._tcp.example.org SRV +short           
5 0 5222 bm.example.org.

Après je viens de remarquer deux choses : la doc bluemind ne mentionne pas _jabber._tcp.example.org, et si je demande _jabber._tcp.google.com, j’ai les enregistrements, mais ils présentent le port 5269. Peut-être une piste.

J’ai modifié les enregistrements DNS, il faut maintenant que j’attende la propagation DNS (j’ai heureusement un TTL très bas car je suis en pleine migration d’un de mes serveurs).

Et… Toujours rien !

Logs de Prosody :

Oct 14 20:17:08 s2sout227af20   warn    Received invalid XML: <stream:error><invalid-from xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>
Oct 14 20:17:08 s2sout227af20   warn    Problem was: unbound prefix

:frowning:

A vrai dire,
J’ai du mal à comprendre ton architecture … .

Je n’utilise pas le serveur XMPP de BlueMind étant déjà en possession de plusieurs OpenFire …

Pour info,
je les ai monté au plus simple,
et je n’ai surtout pas voulu injecter des pointeurs dans le DNS (pour des raisons de sécurité et de discrétion),

donc mes clients doivent se connecter avec un login/Pwd et un nom de serveur précis …

Dans tes clients,
as tu testé cette méthode ?
Cela donne quoi comme résultat …

Login : login@domain.tld
Serveur : IP ou le DNS complet du serveur de mail (prosody.domain.tld)

===

D’après ton dernier log, ton client Jabber a l’air de réussir à toucher le serveur distant …

ton log sort de /var/log/bm-xmpp/xmpp.log … Peux tu nous le mettre entier ?
Que dit aussi /var/log/bm/core.log dans la même période ?

===

Autres pistes,

les com clients en SSL passe par les ports Non-SSL+1, soit 5223

Que donne une tentative d’ouverture du port TCP sur le 5269, un vulgaire " telnet IP_SRV_DESTINATION 5269" … ??

Je vais tenter de t’expliquer mon architecture. J’ai 4 comptes jabber, chacun sur un serveur différent :

  • un serveur prosody perso que j’ai monté il y a longtemps
  • le serveur du boulot (je ne sais pas ce que c’est)
  • un serveur bluemind perso
  • un serveur bluemind d’une de mes assos

Pour les SRV dans les DNS, il me semble que c’est nécessaire pour qu’un serveur A puisse contacter un serveur B si le serveur B n’a pas le même nom que le compte jabber (typiquement xmpp.example.org alors que les comptes sont en bob@exemple.org). Et de plus, ça simplifie la configuration d’un compte sur un client jabber.

Le port 5223 n’est aujourd’hui plus utilisé ([quote]Given that port 5223 was deprecated in 2004, it’s surprising that people still feel it’s necessary.[/quote] (https://groups.google.com/forum/#!topic/miranda-im-develop/tfueSKVX6As) mais effectivement, il n’était pas accessible. Je l’ai autorisé, mais rien ne change.

Cela dit, je viens de me rendre que j’avais deux problèmes avec mon serveur perso :

  • mon bluemind gère, comme alias d’un autre domaine, le domaine dont je me sers pour jabber sur prosody => bm dit “user not found” car il cherche le user prosody dans sa propre base. C’est pour moi un bug, car il devrait soit accepter l’alias comme pour les mails, soit ne pas le prendre en compte.
  • une fois mon alias enlevé, j’ai trouvé Oct 16 00:06:17 s2sout22bd0b0 info Beginning new connection attempt to bluemind-server.net ([80.67.176.206]:5269) Oct 16 00:06:17 s2sout22bd0b0 debug sending: <stream:stream xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='fiat-tux.fr' to='bluemind-server.net' xml:lang='en' xmlns='jabber:server'> Oct 16 00:06:17 prosody.fr:tls debug bluemind-server.net is offering TLS, taking up the offer... Oct 16 00:06:18 s2sout22bd0b0 info Out of connection options, can't connect to bluemind-server.net Oct 16 00:06:18 mod_s2s debug No other records to try for bluemind-server.net - destroying Oct 16 00:06:18 s2sout22bd0b0 debug Destroying outgoing session prosody.fr->bluemind-server.net: Connecting failed: ssl handshake failed Oct 16 00:06:18 s2sout22bd0b0 info Sending error replies for 1 queued stanzas because of failed outgoing connection to bluemind-server.net Oct 16 00:06:18 stanzarouter debug Received[s2sin]: <presence type='error' to='luc@prosody.fr' from='luc@bluemind-server.net'>

Problème de SSL donc maintenant. Mon prosody a un certificat de chez cacert, mais j’ai ajouté cette autorité de confiance dans la liste du système (curl sur un site avec le même certificat fonctionne très bien). J’ai essayé en laissant le certificat généré par BlueMind et ensuite avec un certificat signé par StartSSL, rien à faire, toujours la même erreur !

Je ne mamaille pas sur le serveur de l’asso mais sur le mien, car je n’ai pas envie de me mettre les membres de l’asso à dos si je casse qq chose ! :wink:

Merci pour ces infos … Impeeccable :wink:

Tu t’es donné la peine de réponse à cette heure , alors je te donne un signe de vie … .

Demain, j’ai une journée très très chargé … Je vais donc regarder cela à tête reposé demain en fin de journée …

Par contre, je pense que tu a s mis le doigt sur le problème : SSL ,

Si besoin, j’ai libéré de la place sur mes serveurs … On peut monter des VM comme on le veut …
Un sujet fort intéressant, d’autant que je n’ai jamais encore exploiter le serveur XMPP de BlueMind …

Cher ami, à demain

Crdt
Poustiquet

Actuellement nous laisson Tigase gérer les certificats SSL tout seul. En gros, il va générer un auto-signé pour chacun des domaines.
Nous prévoyons d’améliorer ce point.

Il faut peut-être configurer Prosody pour accepter ce type de certificats.

Mmh, ça m’étonnerait que le problème soit du côté de prosody car mes deux BM ne peuvent converser ensemble. De plus, le serveur du boulot et le mien (signé par CAcert, donc c’est pas beaucoup mieux qu’un autosigné) peuvent, eux, converser ensemble.

Et puis, ça va être dur d’aller demander à chacun de mes contacts de modifier leur serveur :stuck_out_tongue:

Le problème serait a priori à chercher du côté de tigase et de java : https://projects.tigase.org/issues/1729