在 ejabberd 中使用任何/假域名

Posted

技术标签:

【中文标题】在 ejabberd 中使用任何/假域名【英文标题】:Using any/fake domains with ejabberd 【发布时间】:2013-07-27 13:20:14 【问题描述】:

我最近购买了一个具有公共 IP 的云服务器,我正在使用它来托管 xmpp 服务器。

我的第一个任务是确保我的用户使用我的子域进行连接 - 例如 m.chat.com。

在我的配置中,我有以下内容:

%% Hostname
hosts, ["m.chat.com"].

然后我使用该域创建了一个管理员用户。

在 parrellel 中,我已与我的主机提供商 hostgator 为我的子域 m.chat.com 创建了以下 DNS 记录

Name             TTL    Class   Type    Record
m.chat.com       14400  IN      A       [IP of the server]

让我感到困惑的一件事是我能够访问 ejabberd 网络管理控制台。这是通过以下方式实现的:[服务器 IP]:5280/admin 但是我无法通过 m.chat.com:5280/admin 访问它

除此之外,在 Web 控制台中,在“虚拟主机”下,我可以看到主机“m.chat.com”。我创建了一个用户“user@m.chat.com”并尝试通过 Adium 进行连接。

在 Adium 中,只需输入 user@m.chat.com 和密码是行不通的。相反,我还必须指定“连接服务器”,在这种情况下是 [服务器的 IP]。

它连接正常,我已经注册了其他用户以检查一切是否正常。

然后我想我会回到 ejabberd 配置并开始搞乱。我将主机名更改为以下内容:

%% Hostname
hosts, ["m.chat.com", "facebook.com"].

我在该域中注册了一个用户并重新启动了 ejabberd。检查网络控制台后,令我惊讶的是,我可以看到虚拟主机“facebook.com”。我使用“连接服务器”部分中定义的 [服务器 IP] 在 Adium 中测试了该用户,并且连接正常。我让其他拥有自己互联网连接的人在他们的 PC 上使用此帐户,他们也能够连接。

故事结束 - 我对每个人的问题是这怎么可能?我错过了什么吗?是否没有域认证。在线搜索后,您似乎甚至可以使用假域名。

如果我将来要运营自己的服务(ios 聊天应用程序),我不希望任何人在他们自己的公共服务器上使用我的域名。

谁能发光。

谢谢!

编辑:第二个问题 - 最好我不想在使用客户端时定义“连接服务器”。我希望客户端能够识别@m.chat.com 域并自动建立与服务器 IP 的连接。我是否正确配置了我的 DNS 记录?对于其他使用 Hostgator 的人,我必须执行其他任务吗?

编辑:我现在可以通过 m.chat.com:5280/admin 访问 Web 控制台,并且在使用客户端时不再需要指定连接服务器。我什么都没做,我认为这是 Hostgater 更新 DNS 或其他什么的情况,他们说通常需要 4 个小时。但是,我仍然对为什么可以使用 facebook.com 域创建帐户感到有些困惑。我了解,因为我无法访问此域的 DNS 管理员,所以我无法创建任何记录,但这并不妨碍我使用该域并仅指定连接服务器。

【问题讨论】:

【参考方案1】:

您最初的问题(无法使用 m.chat.com 访问服务器)几乎可以肯定是 DNS 问题,而且您似乎已将其隔离到更新记录所用的时间。

您的第二个问题 - 关于您可以不受限制地命名虚拟主机这一事实,很简单但很有趣。是什么让您认为应该有任何限制?就像您指示我无法将“m.chat.com”保存在磁盘上的文件中,或者我无法通过互联网发送消息中的“m.chat.com”。

这就是 DNS 存在的原因并按其方式构建。虽然我可以告诉我的服务器它托管facebook.com,但没有人会连接到它,因为facebook.com 的DNS 记录不指向我的服务器(用户通常不会手动设置“连接主机”)。这引出了一个问题……我为什么要告诉我的服务器它托管facebook.com,如果我这样做了,Facebook 为什么要关心?

DNS 之上的另一个但相关的身份层是证书 - 尽管设置了任何“连接主机”,客户端都应验证虚拟主机名。由于不可能拥有facebook.com 的证书,因此客户端通常应该弹出警告或根本无法连接。如果他们不这样做,他们可能没有正确验证证书。

【讨论】:

以上是关于在 ejabberd 中使用任何/假域名的主要内容,如果未能解决你的问题,请参考以下文章

通过 Mule ESB CE 连接 Ejabbered

无法打开 ejabbered Web 仪表板 localhost:5280

如何在 ejabberd 中获取图像的缩略图

ejabberd 上所有用户的最后活动

ejabberd 两个同名函数

Ejabberd 服务器未显示管理面板