
Estoy buscando una manera de comprobar si un servidor admite el protocolo xmpp, es decir, el servidor xmpp se está ejecutando en este dominio.
¿Quizás una verificación especial de DNS o algo así?
Respuesta1
El principal puerto predeterminado para jabber que no es SSL es 5222. Podrías escupirle algo de xml usando telnet y ver si obtienes una respuesta XML:
telnet suspectedServer 5222
<?xml version="1.0"?> <stream:stream to="foo.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
Por supuesto, esto se puede programar para múltiples servidores y múltiples puertos, probablemente más fácil de programar con nc (netcat).
Para servidores XMPP que requieren conexiones TLS, pruebe con: -
openssl s_client -starttls xmpp -connect suspectedserver:5222
Respuesta2
Si un servidor XMPP está configurado para funcionar conotroEn servidores XMPP, es posible que el dominio tenga un registro SRV en DNS. Por ejemplo:
$ dig _xmpp-server._tcp.google.com srv +short
20 0 5269 xmpp-server1.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server2.l.google.com.
Esta no es de ninguna manera una forma definitiva de encontrar servidores XMPP, ya que los sitios independientes probablemente no tengan estos datos en DNS. Es, sin embargo, unmejormanera de encontrar un servidor Jabber, ya que los datos se publican y no requieren ningún sondeo de puerto. También está definido en RFC 3920 (la definición del protocolo XMPP).
Respuesta3
No existe una forma definitiva de comprobarlo. Nmap le daría alguna indicación, pero habría algún problema ético y posiblemente legal al ejecutarlo en servidores de otras personas.
Respuesta4
Si se trata de un servidor de federación (no, no Startrek), entonces puede verificar las entradas DNS SRV como se explicaaquí.