XMPP или как общаться нормально"

date="2022-10-05" updated="2023-04-14"

tags: xmpp, open source

https://www.milkspace.xyz/blog/xmpp/

Введение

Для общения я в основном использую Telegram, VK и Discord. Последнее время ещё и Instagram. Не нужно закидывать меня камнями, относительно недавно я зарегистрировался в Matrix и XMPP. О последнем и хочу рассказать в этой статье.

Цель статьи познакомить читателя с XMPP, который ещё про него не знает. У меня в XMPP только пару контактов, и мне бы хотелось увеличить их число. А так я смогу сбрасывать эту статью людям и не придётся каждому всё объяснять.

Почему бы просто не использовать Х приложение

Про WhatsApp и Viber даже писать не хочу. Signal выглядит прикольно, уверяет что он супер безопасный, но требует номер телефона.. Instagram перестал присылать уведомления и неудобный, ещё постоянно следит за тобой и кормит рекламой. VK Messenger по размерам почти такой же большой, как и обычное приложение, медленный и вообще непонятно как работает (на телефоне выключил отображение статуса в сети, на компе периодически показывает когда в последний раз заходил человек). Telegram прикольный, но в последнее время в него слишком много всего добавляют и появилась реклама. Discord удобен посидеть с друзьями, но тоже слишком большой для простого обмена сообщениями. Смс просто дорогие и картинку с котиком не отправишь через них. ~~если вы пользуетесь ММС, то у вас похоже нет почки~~

Чего я вообще хочу от приложения для сообщений

Ну для начало оно должно быть **бесплатным**, **маленьким**, **быстрым** и **без рекламы**. Ещё **безопасным**, чтобы никто, кроме моего собеседника не мог узнать какие глупые шутки посещают мою голову и сколько раз я сегодня покушал.

"Это ты круто конечно придумал": скажет читатель и предложит мне принести машинку для закатывания губ. Но не стоит смеяться (лёгкой улыбки будет достаточно), ведь такое приложение (и не одно) есть. Встречайте **XMPP**

Кто это этот ваш XMPP?

Дальше я расскажу про особенности протокола, покажу пару серверов, объясню как на них зарегистрироваться и предложу на выбор несколько приложений, поддерживающих этот протокол.

Безопасность

-А что если администратор сервера захочет прочитать мои сообщения?

У него ничего не выйдет, ведь большинство приложений поддерживают шифрование (OMEMO и/или PGP). Мне нравится, когда тебе не нужно доверять серверу. Ведь ты знаешь, что даже при желании он тебе ничего не сделает. ~~Может конечно аккаунт удалить и все твои сообщения вместе с ним, но не прочитать их.~~

Тут стоить отметить, что не все клиенты поддерживают шифрование. Читайте описание или смотрите настройки клиента, который скачиваете.

- А что если создатель приложения украдёт мои сообщения?

Ну многие XMPP клиенты имеют открытый исходный код и вы можете посмотреть как они работают. Или оставить это тем, кто в этом что-то понимает.

- У меня есть безопасный Telegram.

Ну да, только он против создания альтернативных клиентов, шифрует только сообщения из приватных чатов (с компа прочитать то, что тебе отправили на телефон не выйдет, а это неудобно) и хранит все сообщения на своих закрытых серверах.

- Мне нечего скрывать.

Тогда и одежду не носи..

Децентрализация

Нет главного сервера и все сервера (если не выключить эту функцию в настройках) могут общаться друг с другом. То есть вы можете быть зарегистрированы на одном сервере, а ваш друг на другом и всё равно сможете общаться.

Если с вашим сервером что-то случится или вас заблокируют, то вы можете зарегистрироваться на другом сервере ~~или поднять свой~~ и писать друзьям с других серверов.

Почему он бесплатный?

Как люди делают скворечники так и энтузиасты создают сервера, на которых люди могут регистрироваться и бесплатно общаться. ~~Вы ведь не берёте деньги у птиц~~ Сервера, поддерживающие XMPP, потребляют немного ресурсов и могут обслуживать много людей 👀

Изначально предполагалось, что XMPP будут использовать крупные компании и пользователи Vkontakte, например, смогут писать пользователям Instagram без регистрации в нём. Звучит круто не правда ли? Компании так и сделали, а потом поняли, что делиться пользователями невыгодно. Что эти человеки позволяют себе вообще? Пускай у нас регистрируются и приносят нам свои данные.

Некоторые пошли ещё дальше и сделали приложения на основе XMPP, закрыли код и запретили им общаться с серверами других компаний.

Что он может?

Ну здесь можно отправлять зашифрованные сообщения, картинки, голосовые, звонить друг другу, есть групповые чаты. А чего вы ещё ждали от приложения для общения? Некоторые приложения из списка ниже имеют дополнительные функции.

Как найти сервер?

Здесь есть два пути. Сделать свой сервер или зарегистрироваться на уже существующем. Сервера можно найти в интернетах, но если вы тоже ленивый, то вот парочка:

macaw.me (поддерживает регистрацию из клиента)

poridge.club (тут уже нужно стучаться админу в личку чтобы он вас зарегистрировал).

Ну или на этом сайте можно что-нибудь найти.

Регистрация

В большинстве клиентов вы просто вводите адрес сервера (некоторые клиенты уже имеют несколько готовых серверов), на котором хотите зарегистрироваться, выбираете имя пользователя и пароль. Никаких адресов электронной почты или номера телефона не нужно.

Имя пользователя состоит из вашего логина и сервера, разделённых собакой. То есть, если вас зовут Biba, а зарегистрировались вы на сервере Bo.ba, то полное имя пользователя будет Biba@Bo.ba. Говорите это имя другу, он вписывает его в своё приложение и вы можете общаться.

Пароль стоит выбирать подлиннее (не менее 8 знаков, я бы рекомендовал 30-60) и понадёжнее (заглавные и строчные буквы, цифры и спецсимволы). Лучше сразу записать пароль в ~~блокнот~~ свой менеджер паролей. В случае потери пароля его не выйдет восстановить по номеру телефона или электронной почты. Придётся писать админу и просить чтобы сбросил вам пароль и ещё доказать, что вы это вы.

А как скачать? (клиенты)

Вот по этой ссылке (нужно немного вниз пролистать) много клиентов для разных платформ. Ниже приведу лишь некоторые из них.

Можно ничего не качать и воспользоваться браузерным клиентом (но лучше скачать)

Android

Скачал и попробовал Conversations[1] и blabber.im[2]. Оба хороши, но есть пара нюансов. **Conversations** платный в Play Market, а **blabber.im** в Play Market просто нет.. Но есть выход - скачать **blabber.im** на официальном сайте. ~~только не говорите владельцам айфонов об этом~~ Также оба приложения есть в Fdroid[3] (и оба там бесплатные).

[1] conversations

[2] blabber.im

[3] Fdroid

Iphone

У меня айфона нет, но я воспользовался яблоком брата и поставил туда Monal[1](). Зарегал его на macaw.me и отправил пару тестовых сообщений, всё работает, только вот звонки в **Monal** не завезли..

[1] Monal

Пока писал статью нашёл в AppStore Siskin IM[1], который должен поддерживать звонки, сам не проверял.

[1] Siskin IM

Linux

Своими руками потрогать не смог, но вроде как Dino[1] классный.

В комментариях меня поправили, что *Dino* ещё в разработке и лучше добавить в статью gajim[2]].

Для того, чтобы включить шифрование, необходимо зайти во вкладку *Plugins* и выбрать *OMEMO*.
На Linux нужно ещё установить пару пакетов из гайда по ссылке[3]

[1] Dino

[2] gajim

[3] ссылка на гайд

Windows

Не помню трогал ли его, но есть gajim[1]

Для того, чтобы включить шифрование, необходимо зайти во вкладку *Plugins* и выбрать *OMEMO*.

[1] gajim

Неужели у него нет минусов?

Конечно есть. Тут нельзя удалять сообщения и если вы зашли с нового устройства, то не сможете увидеть зашифрованные сообщения, отправленные со старого. Это стало мемом и в следующем разделе я объясню почему так происходит.

Сообщение не зашифровано для этого устройства

Вы заходите с нового устройства и видите, что на месте старых сообщений надпись "сообщение не зашифровано для этого устройства". Это не баг, а фича! Иногда правда достаточно неприятная, но после отправки сообщения с нового устройства, его можно будет прочитать на старом. И наоборот сообщения со старого устройства будут видны на новом. Это происходит из-за того, что во время отправки сообщения ваше устройство шифрует их для конкретных получателей (других ваших устройств и устройств вашего собеседника). Код пишут обычные люди, а не гадалки и колдуны и поэтому ваш телефон не может знать с какого устройства вы решите зайти и зашифровать для него сообщение заранее. С одной стороны это может быть неудобно, а с другой если какой-нибудь хакер украдёт ваш логин и пароль от xmpp, то он не сможет получить историю зашифрованных сообщений.

Совет: Если вы видите надпись, что сообщение друга не зашифровано для данного устройства, то напишите ему об этом обычным сообщением (без шифрования). У некоторых людей может быть выключена функция автоматического добавления новых ключе��.

Заключение

~Мне написали, что статья выглядит незаконченной, и я решил это исправить. Конец.~~

Я рассказал что такое XMPP, почему он классный и предложил пару серверов и клиентов. Надеюсь он вам понравится и ваше общение станет более комфортным и безопасным.