Вот, удалось всё же побороть. ошибок было несколько, какая именно оказалась критичной, я не понял, поэтому привожу все в порядке их устранения. 1. Разкомментировал секцию <traditional>. Так что при этом получилось два варианта логина - через базу данных SASL и/или пароли создаваемые в самом jabberd. 2. Юзеров пришлось вручную создавать в mysql (колонки username, realm, passwd в таблице authreg, остальное забил null-ями). Т.е. авторегистрация работает крайне глючно. Но в sm.xml <auto-create> отмечен, так же как и тэг <id register-enable='true' realm="DOMAIN.MY"> 3. Создал файл /usr/lib/sasl2/xmpp.conf. По идее он не должен использоваться (поскольку вся информация из него продублирована в c2s.xml), но есть ощущуение, что jabberd2 в него заглядывает. 4. Это по-моему главное. Есть неразбериха с realm-ами SASL и жабировскими JID-ами. Т.е. жабир считает, что всё, что идёт после @ в ЖИДе - это и есть релм. Поэтому мне пришлось в sm.xml и c2s.xml указывать в качестве <id> доменное имя - DOMAIN.MY, а потом в ДНС вставялть SRV записи, которые это имя транслируют в адрес хоста, где крутится жабир. В этом была, видимо, главная ошибка, поскольку я в начале использовал после @ в ЖИДах имя жабир-сервера. 5. Как уже отмечал автор патчей поддержки SASL для jabberd2, ни один из клиентов не поддерживает fallback механизмов. Т.е. если сервер предлагает на выбор несколько механизмов, то клиент (в моем случае tkabber) выбирает самый сильный из предложенных или отваливается, если самый сильный механизм он не поддерживает (вместо того чтобы откатиться к более слабому). Поэтому если сервер предлагает <gssapi/> и <plain/>, то tkabber выбирает всегда <gssapi/>. А с gssapi у tkabber-а есть один серьезный глюк. Как следует из 4, я при логине из tkabber должен указать своё имя в Username, Password - пустой (у меня есть билетик), server - DOMAIN.MY (!), а на вкладке connection указать Host - имя жабер-сервера (ну, чтобы от ДНС не зависить). Так вот tkabber в своем коде обработки SASL использует в качестве имени сервера запись из поля server (которая в данном случае является именем домена), что является ошибкой, а не SRV запись из ДНС или поле Host со вкладки Connection. Как тут нужно пофиксить этот код я не знаю, но что-то с этм делать надо.
|