pyxmpp2 连接到 openfire 无法解析 NXDOMAIN
Posted
技术标签:
【中文标题】pyxmpp2 连接到 openfire 无法解析 NXDOMAIN【英文标题】:pyxmpp2 connect to openfire cannot resolve NXDOMAIN 【发布时间】:2013-03-22 02:41:49 【问题描述】:我在我的 Ubuntu 机器上安装了 pyxmpp2 https://github.com/Jajcus/pyxmpp2
。我还为它安装了 Openfire 3.8.1。我想使用 pyxmpp2 在同一台机器上连接到我的 Openfire 服务器。
在我的 Openfire 控制面板的服务器 -> 服务器管理器 -> 服务器信息中,面板中服务器属性中显示的服务器名称为 mymachine,环境部分中显示的主机名称为 MyMachine。
我尝试了以下代码:
import logging
from pyxmpp2.jid import JID
from pyxmpp2.client import Client
logging.basicConfig()
client = Client(JID("admin@mymachine"),[])
client.connect()
并收到以下消息:
警告:pyxmpp2.resolver:无法解析“_xmpp-client._tcp.mymachine”:NXDOMAIN
我错过了配置吗?
【问题讨论】:
【参考方案1】:您的域似乎没有 DNS SRV 记录,因此 pyxmpp2 无法解析它们。查看http://wiki.xmpp.org/web/SRV_Records 了解如何创建它们。
基本上,DNS SRV 记录的格式为
_service._proto.name TTL 类 SRV 优先权重端口目标
可能看起来像这个例子
_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 example.net.
也许 pyxmpp2 还提供了一种直接指定用于 XMPP 服务的主机的方法。这将避免 DNS SRV 查找。
【讨论】:
XMPP 协议不需要 DNS SRV 记录,但我们鼓励使用。您的 JID“admin@mymachine”(因此,mymachine)中的服务器部分必须为 python 库解析。尝试“nslookup mymachine”或“dig mymachine”进行故障排除。使用与代码中完全相同的服务器名称。 谢谢。我已阅读链接http://wiki.xmpp.org/web/SRV_Records
,但我不知道如何创建 SRV 记录。你能给我更详细的指导吗?我需要安装“绑定”吗?【参考方案2】:
可能正在使用 ipv6,您可以使用 u"ipv4": True
强制 ipv4 并指定服务器 u"server": "chat.facebook.com"
handler = MyHandler(JID(target_jid), message)
settings = XMPPSettings(
u"ipv4": True,
u"server": "chat.facebook.com",
u"password": your_password,
u"starttls": True,
u"tls_verify_peer": False,
)
client = Client(JID(your_jid), [handler], settings)
client.connect()
client.run()
完整代码位于pyxmpp2
示例文件夹send_message_client.py
【讨论】:
以上是关于pyxmpp2 连接到 openfire 无法解析 NXDOMAIN的主要内容,如果未能解决你的问题,请参考以下文章
XMPPFramework - 无法连接到 Openfire 服务器
无法使用 HTTP 绑定连接到 XMPP 服务器(openfire)
无法连接到本地 Openfire 服务器(使用 smack api)
aSmack 4.0.* XMPPTCPConnection 无法连接到 OpenFire 和 Ejabbered (SmackException$NoResponseException)