Недавно был отключен чат в Google, и я искал альтернативу, которая позволяет посетителям моего веб-сайта мгновенно отправлять мне сообщения без необходимости входа в систему на facebook или чего-то подобного.
Кроме того, я хочу удобно взаимодействовать с ними на моем телефоне, так что Jabber кажется мне подходящим вариантом.
Идея состоит в том, чтобы настроить свой собственный jabber-сервер, и если пользователь отправит сообщение, создать учетную запись на лету и использовать ее.
Я сам программировал одноранговые приложения и, вероятно, могу представить, как jabber-сервер входит в сеть (поиск общих начальных точек встречи для других серверов, сканирование IP-адресов, получение информации с других серверов ...).
Позже мой сервер сообщит, что он может обрабатывать сообщения для всех учетных записей @ mydomain.com
Но как именно проверяется легитимность? Все серверы jabber просто должны настроить это в своей конфигурации.
Я бы вообразил текстовую запись в настройках DNS домена с отпечатком какого-то открытого ключа сервера, который эмитент другого jabber-сервера может использовать, чтобы запросить получателя проверить его легитимность перед пересылкой сообщения.
Однако, похоже, это не так.
Другой способ, который я мог придумать, - это просто сравнить IP-адрес серверов с IP-адресом за DNS-записью домена.
Однако это потребовало бы, чтобы jabber-сервер работал на том же IP-адресе, и это усложнило бы ситуации с другими типами записей, например Round-Robin-Ips (как у Google) prett. Кроме того, он будет уязвим для целого ряда атак и подделок на сетевом уровне.
Так в чем же дело?
После этого (прошу прощения за это) длинного вступления, позвольте мне резюмировать свой вопрос следующим образом:
Если jabber-сервер (A) отправляет сообщение от пользователя в другую учетную запись на сервере B, как может A быть уверенным, что B действительно правильный сервер, а не кто-то его подделывает?
Похоже, что это действительно случай, когда выполняется поиск записи A сайта, и сообщение отправляется туда.
Таким образом, для этого действительно даже не требуется какая-либо технология p2p.
Кроме того, записи SRV могут использоваться для определения различных серверов xmpp / jabber для этого домена.
Это довольно хорошо описано здесь: http://prosody.im/doc/dns