少し前に、外部ジャバーコンポーネント(XEP-0114)を構成して、任意のユーザーに代わってXMPPスタンザを送信できることを読みました。たとえば、コンポーネントを(component.localhost)にバインドしていて、「from」属性が「user@localhost」に設定されたメッセージスタンザを送信したいとします。
私はejabberdでこれを達成しようとしています。これを機能させるためにejabberdsrcをハックダウンする必要がある場合でも驚かないでください(可能な場合)。
ejabberdを使用している{service_check_from, false}
場合は、サービス定義のオプションを使用して、「from」属性の検証を無効にすることができます。
ただし、XEP 0114では、JIDの「ホスト」部分がコンポーネントの名前と一致している必要があることに注意してください。
厄介な詳細については、ejabberdドキュメントの対応するセクションを参照してください。
技術的には、実際にコンポーネントを作成する必要がありますが、これは簡単に実行できます。まず、ejabberdを構成して、特定のコンポーネントJIDとパスワードを使用して、コンポーネント固有の接続を受け入れるようにする必要があります。デフォルトの構成ファイルには、ゲートウェイなどのいくつかの例があります。
これが完了したら、XMPPライブラリ/クライアントをこのコンポーネントのクレデンシャルに接続します。これで準備完了です。唯一の制約は、有効なXMLを送信することです。
コンポーネントは通常、 @ .domain.comではなく、*@component.domain.comからのように見えるスタンザの送信のみを許可されます。これはセキュリティ機能です。
この機能が必要な場合は、外部コンポーネントではなくサーバープラグインを作成する必要があります。