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