Ejabberd 虚拟主机公告昵称

Posted

技术标签:

【中文标题】Ejabberd 虚拟主机公告昵称【英文标题】:Ejabberd virtual host announcement nickname 【发布时间】:2019-02-09 15:32:14 【问题描述】:

当我在 ejabberd 中向用户发送通知时(例如使用“向所有主机上的所有用户发送通知”),收件人将其视为来自虚拟主机的消息,昵称为“ejabberd”,用户不清楚。

我想知道如何将这个“ejabberd”昵称更改为更方便的名称?

很奇怪,文档中完全没有关于此的信息,甚至没有其他人对此提出任何问题。怎么可能没人关心这个?也许我的 ejabberd 配置有问题,虚拟主机默认不应该有“ejabberd”昵称?

【问题讨论】:

【参考方案1】:

尝试添加此选项:

  mod_disco:
    name: "ejabberd server"

关于服务器 vcard,试试这样的补丁:

--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -197,7 +197,7 @@ process_local_iq(#iqtype = set, lang = Lang = IQ) ->
     xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
 process_local_iq(#iqtype = get, lang = Lang = IQ) ->
     xmpp:make_iq_result(
-      IQ, #vcard_tempfn = <<"ejabberd">>,
+      IQ, #vcard_tempfn = <<"ejabberd server nickname">>,
                      url = ejabberd_config:get_uri(),
                      desc = misc:get_descr(Lang, ?T("Erlang Jabber Server")),
                      bday = <<"2002-11-16">>).

【讨论】:

【参考方案2】:

在我的测试中,用户收到了以 vhost 作为发件人地址的消息:

<message to='user1@localhost/tka1'
    from='localhost'
    type='headline'>
  <body xml:lang='en'>Hi

This is the content.

The localhost admins.</body>
  <subject xml:lang='en'>This is the subject</subject>
</message>

我在协议中没有看到关于其外观的示例:https://xmpp.org/extensions/xep-0133.html#announce

【讨论】:

是的,sender 是一个虚拟主机地址,这是正确的。但是 XMPP 客户端(至少其中一些客户端)正在请求发件人昵称而不是 JID,并且 ejabberd 回复说 vhost 有昵称“ejabberd”:&lt;iq xml:lang="en" to="admin@localhost/LOCATION" from="localhost" type="result" id="mir_315"&gt; &lt;query xmlns="http://jabber.org/protocol/disco#info"&gt; &lt;identity type="pep" category="pubsub" /&gt; &lt;identity name="ejabberd" type="im" category="server" /&gt; &lt;iq xml:lang="en" to="admin@localhost/LOCATION" from="localhost" type="result" id="mir_357"&gt; &lt;vCard xmlns="vcard-temp"&gt; &lt;FN&gt;ejabberd&lt;/FN&gt; &lt;URL&gt;http://www.process-one.net/en/ejabberd/&lt;/URL&gt; &lt;BDAY&gt;2002-11-16&lt;/BDAY&gt; &lt;DESC&gt;Erlang Jabber ServerCopyright (c) ProcessOne&lt;/DESC&gt; &lt;/vCard&gt; &lt;/iq&gt;

以上是关于Ejabberd 虚拟主机公告昵称的主要内容,如果未能解决你的问题,请参考以下文章

ejabberd -- 在 ejabberd 上设置昵称在我注销之前不会反映 Pidgin/Empathy

集群 ejabberd 的 MUC 和 PubSub 主机

无法连接到 ejabberd 本地主机

无法连接到 ejabberd 服务器:未知主机异常

Erlang epmd 问题 - RabbitMQ 和 Ejabberd 在同一主机上

关于设立虚拟货币“挖矿”企业举报平台的公告