Ubuntu 12.04 の ejabberd に Pidgin から接続できない ― 2012年09月11日
Ubuntu 12.04 LTS の jabber サーバーである ejabberd に pidgin からうまく接続できない、という現象に悩まされました。Windows 用の Psi や、OS X の Message からは問題ありません。Ubuntu の ejabberd は 2.1.10-2ubuntu1 で、クライアント側の Pidgin は 1:2.10.3-0ubuntu1.1 です。
「接続できない」、ですが具体的には認証に失敗します。ejabberd のログを見ると認証に失敗した旨出ます。
=INFO REPORT==== 2012-09-10 16:14:29 === I(<0.12345.0>:ejabberd_c2s:802) : ({socket_state,tls,{tlssock,#Port<0.5432>,#Port<0.1111>},<0.12344.0>}) Failed authentication for user@example.jp
Pidgin で「デバッグウィンドウ」を表示するとより詳しい情報が得られますが、よくわかりません。STARTTLS は成功してるので、認証段階、おそらくは DIGEST-MD5 の計算に失敗しているのだろうとあたりは付けられますが、追跡するのも面倒だなぁ、と悩みます。
そこでググるなどして ejabberd のフォーラムや、Ubuntu や Debian のバグレポートを見ると、原因らしきものを見つけました。
- libpurple-based implementations cannot authorize with DIGEST-MD5
- ejabberd's interpretation of digest-uri causes Pidgin to fail authorization
そこで、unstable から 2.1.10-3 のソースコードを持ってきて、debian/patches から relax-digest-uri-handling.patch を取り込み、debian/patches/series と debian/changelog を修正して、debuild します。そして、インストール。
それから、 /etc/ejabberd/ejabberd.cfg を変更し、
{fqdn, "xmpp.example.jp"}.
を追加し、
# ejabberdctl restart
で再起動。Pidgin から接続すると、見事成功しました。
なお、xmpp.example.jp というのは、
_xmpp-client._tcp.example.jp. IN SRV 5 0 5222 xmpp.example.jp.
のように、xmpp-client の SRV で指しているホスト名です。このホスト名と、ejabberd が動作してるマシンが、自分のホスト名として認識しているものと食い違う場合にエラーになるようなのです。
ejabberd を IPv6 対応させる ― 2007年07月19日
IPv6対応をどんどん進めよう、ってことで、ejabberd を IPv6対応させる。デフォルトでは IPv4 なアドレスしか listen しないので、設定を変える。
変更箇所は listen オプションで定義されている3つのサービス
- ejabberd_c2s
- ejabberd_c2s
- ejabberd_s2s_in
に
inet6
というオプションを設定すること。あと、DNSでSRVに 指定してあるホストにAAAAを定義すること。
にも追記した。
ejabberdのインストール ― 2007年07月01日
わりに昔、jabber (XMPP) をとある用途で使いたくなって サーバの実装を調べていたら、 ejabberd という 実装があるのを知りました。
このサーバerlangという言語で書かれていて、その 方向性は興味深かったのですが、最近になって erlang という言語そのものが話題になり始めました。
twitter でもバックエンドとして利用されてることもまた 知名度を上げたようです。
そんなわけで、ejabberd をインストールしてみました。 普段は IRCや IP Messenger を 使ってるので、システム管理その他で使うことにはなり そうですが、ejabberd についてのインストールメモを ejabberdとして まとめておきました。
某所のサーバではLDAPと連携するようにし、自宅では internal databaseを使うようにしてあります。
最近のコメント