Я ищу способ проверить, поддерживает ли сервер протокол xmpp, т.е. xmpp-сервер работает в этом домене.
Может специальная проверка DNS или что-то в этом роде?
Основной порт по умолчанию для jabber без SSL - 5222. Вы можете добавить в него немного xml с помощью telnet и посмотреть, получите ли вы ответ 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">
Это, конечно, может быть написано сценарием для нескольких серверов и нескольких портов, возможно, проще создать сценарий с помощью nc (netcat).
Для серверов XMPP, которым требуются соединения TLS, проверьте: -
openssl s_client -starttls xmpp -connect suspectedserver:5222
Если сервер XMPP настроен для работы с Другой Серверы XMPP, возможно, домен будет иметь запись SRV в DNS. Например:
$ 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.
Это ни в коем случае не окончательный способ найти серверы XMPP, поскольку автономные сайты, скорее всего, не имеют этих данных в DNS. Однако это приятнее способ найти jabber-сервер, поскольку данные публикуются и не требуют зондирования портов. Он также определен в RFC 3920 (определение протокола XMPP).
Нет однозначного способа проверки. Nmap может дать вам некоторое представление, но возникнут некоторые этические и, возможно, юридические проблемы с его запуском на серверах других людей.
Если это ваш сети, вы можете попробовать запустить что-то вроде Spiceworks в подсети для поиска систем, на которых работает сервер XMPP.
Если это сервер федерации (нет, не Startrek), вы можете проверить записи SRV DNS, как описано Вот.