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 が動作してるマシンが、自分のホスト名として認識しているものと食い違う場合にエラーになるようなのです。
コメント
トラックバック
このエントリのトラックバックURL: http://tkusano.asablo.jp/blog/2012/09/11/6570743/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。