archive-org.com » ORG » J » JABBERCN.ORG

Total: 303

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • 查看源代码 - Jabber/XMPP中文翻译计划
    pages XMPP文档列表 categorytree 返回到 分类 XMPP文档列表 来自 http wiki jabbercn org E5 88 86 E7 B1 BB XMPP E6 96 87 E6 A1 A3 E5 88 97 E8 A1 A8 查看 分类 讨论 查看源代码 历史 个人工具 登录 创建账户 导航 首页

    Original URL path: http://wiki.jabbercn.org/index.php?title=%E5%88%86%E7%B1%BB:XMPP%E6%96%87%E6%A1%A3%E5%88%97%E8%A1%A8&action=edit (2016-04-25)
    Open archived version from archive


  • “分类:XMPP文档列表”的版本历史 - Jabber/XMPP中文翻译计划
    选出需要对比的版本 按 回车键 或下方的按钮进行对比 说明 当前 与最后版本之间的差异 先前 与上一版本之间的差异 小 小编辑 当前 先前 2013年8月11日 日 02 56 Admin 讨论 贡献 小 124字节 当前 先前 2009年4月14日 二 00 41 How 讨论 贡献 66字节 当前 先前 2009年4月1日 三 22 02 Admin 讨论 贡献 34字节 创建新页面为 这里是所有XMPP文档的列表 来自 http wiki jabbercn org E5 88 86 E7 B1 BB XMPP E6 96 87 E6 A1 A3 E5 88 97 E8 A1 A8 查看 分类

    Original URL path: http://wiki.jabbercn.org/index.php?title=%E5%88%86%E7%B1%BB:XMPP%E6%96%87%E6%A1%A3%E5%88%97%E8%A1%A8&action=history (2016-04-25)
    Open archived version from archive

  • 链接至“分类:XMPP文档列表”的页面 - Jabber/XMPP中文翻译计划
    Jabber XMPP中文翻译计划讨论 文件 文件讨论 MediaWiki MediaWiki讨论 模板 模板讨论 帮助 帮助讨论 分类 分类讨论 过滤器 隐藏 包含 隐藏 链接 隐藏 重定向 没有页面链接至 分类 XMPP文档列表 来自 http wiki jabbercn org E7 89 B9 E6 AE 8A E9 93 BE E5 85 A5 E9 A1 B5 E9 9D A2 E5 88 86 E7 B1 BB XMPP E6 96 87 E6 A1 A3 E5 88 97 E8 A1 A8 查看 分类 讨论 查看源代码 历史 个人工具

    Original URL path: http://wiki.jabbercn.org/%E7%89%B9%E6%AE%8A:%E9%93%BE%E5%85%A5%E9%A1%B5%E9%9D%A2/%E5%88%86%E7%B1%BB:XMPP%E6%96%87%E6%A1%A3%E5%88%97%E8%A1%A8 (2016-04-25)
    Open archived version from archive

  • 对于“分类:XMPP文档列表”有关的链出更改 - Jabber/XMPP中文翻译计划
    机器人的编辑 隐藏 匿名用户的编辑 隐藏 登录用户的编辑 隐藏 我的编辑 显示自 2016年4月25日 一 16 50 起的新更改 名字空间 全部 主要 讨论 用户 用户讨论 Jabber XMPP中文翻译计划 Jabber XMPP中文翻译计划讨论 文件 文件讨论 MediaWiki MediaWiki讨论 模板 模板讨论 帮助 帮助讨论 分类 分类讨论 反选 相关名字空间 页面名称 显示链到所给出的页面 在这一段时间中链接的页面并无更改 来自 http wiki jabbercn org E7 89 B9 E6 AE 8A E9 93 BE E5 87 BA E6 9B B4 E6 94 B9 E5 88 86 E7 B1 BB XMPP E6 96

    Original URL path: http://wiki.jabbercn.org/%E7%89%B9%E6%AE%8A:%E9%93%BE%E5%87%BA%E6%9B%B4%E6%94%B9/%E5%88%86%E7%B1%BB:XMPP%E6%96%87%E6%A1%A3%E5%88%97%E8%A1%A8 (2016-04-25)
    Open archived version from archive

  • 分类:XMPP文档列表 - Jabber/XMPP中文翻译计划
    X XMPP扩展 0 XMPP核心RFC 0 XMPP相关RFC 0 已 已废弃 0 来自 http wiki jabbercn org index php title E5 88 86 E7 B1 BB XMPP E6 96 87 E6 A1 A3 E5 88 97 E8 A1 A8 oldid 3405 1个分类 所有文档列表 查看 分类 讨论 查看源代码 历史 个人工具 登录 创建账户 导航 首页 社区专页 新闻动态 最近更改 随机页面 帮助 XMPP资源 XMPP公共服务 XMPP客户端软件 XMPP服务器软件 友情链接 搜索 站外搜索 工具箱 链入页面 链出更改 特殊页面 永久链接 本页面最后修订于2013年8月11日 星期日

    Original URL path: http://wiki.jabbercn.org/index.php?title=%E5%88%86%E7%B1%BB:XMPP%E6%96%87%E6%A1%A3%E5%88%97%E8%A1%A8&printable=yes (2016-04-25)
    Open archived version from archive

  • Ejabberd2:安装和操作指南 - Jabber/XMPP中文翻译计划
    starttls true s2s certfile path to ssl pem s2s default policy deny s2s host jabber example org allow s2s host example com allow 注意 对基于 jabberd14 或 WPJabber 的服务 你不得不做一个网关日志并通过它们本身做 XDB You have to add elogger and rlogger entries here when using ejabberd In this case the transport will do the logging log id logger host logtype format d t h s format file var log jabber service log file log Some XMPP server implementations do not provide XDB services for example jabberd2 and ejabberd xdb file so is loaded in to handle all XDB requests xdb id xdb host load this is a lib of wpjabber or jabberd14 xdb file usr lib jabber xdb file so xdb file load xdb file xmlns jabber config xdb file spool jabberd cmdline flag s var spool jabber jabberd cmdline spool xdb file xdb 验证 选项 auth method 定义了用于验证用户的验证方法 语法是 auth method Method ejabberd支持以下验证方法 internal 缺省 见 3 1 4 节 external 有 一些示例验证代码 ldap 见 3 2 5 节 odbc 见 3 2 1 3 2 3 3 2 2 和 3 2 4 节 anonymous 见 3 1 4 节 pam 见 3 1 4 节 只有internal 和 odbc 方法支持新建帐号 内部 ejabberd使用它的内部Mnesia数据库作为缺省的验证方法 这个值 internal 将允许内部验证方法 例子 在example org使用内部验证 在example net使用LDAP验证 host config example org auth method internal host config example net auth method ldap 在所有虚拟主机使用内部验证 auth method internal SASL匿名和匿名登录 这个值 anonymous 将允许内部验证方法 匿名验证方法可以由以下选项配置 记住你可以用 host config 选项设置虚拟主机个别特有的选项 见 3 1 2 节 注意关于 SASL匿名和匿名登录配置 也有一个详细的教程 allow multiple connections false true 这个选项只用于匿名模式已经被允许的时候 设置它为 true 意味着在匿名登录模式里 如果使用不同的资源来连接 同样的用户名可以被使用多次 这个选项只在非常特殊的情况下有用 缺省值是 false anonymous protocol sasl anon login anon both sasl anon 意味着将使用 SASL 匿名方法 login anon 意味着将使用匿名登录方法 both 意味着SASL匿名和匿名登录都允许 那些选项为每个虚拟主机定义的选项 host config 参数 见 3 1 2 节 例子 在所有虚拟主机上允许匿名登录 auth method anonymous anonymous protocol login anon 类似前例 但限于 public example org host config public example org auth method anonymous anonymous protocol login anon 在一个虚拟主机允许匿名登录和内部验证 host config public example org auth method internal anonymous anonymous protocol login anon 在一个虚拟主机允许SASL匿名 host config public example org auth method anonymous anonymous protocol sasl anon 在一个虚拟主机允许SASL匿名和匿名登录 host config public example org auth method anonymous anonymous protocol both 在一个虚拟主机允许SASL匿名 匿名登录 和内部验证 host config public example org auth method internal anonymous anonymous protocol both PAM验证 ejabberd支持通过可插拔的验证模块 PAM 来验证 PAM 目前在 AIX FreeBSD HP UX Linux Mac OS X NetBSD 和 Solaris里都支持 PAM 验证缺省是被禁止的 所以你不得不使用 PAM support enabled 选项来配置并编译ejabberd configure enable pam make install 选项 pam service Name 这个选项定义了PAM服务名 缺省是 ejabberd 更多信息请参考你的操作系统的 PAM 文档 例子 auth method pam pam service ejabberd 虽然很容易在ejabberd里配置PAM支持 PAM本身介绍了一些安全问题 为执行PAM验证 ejabberd使用名为 epam 的外部C程序 缺省的 它位于 var lib ejabberd priv bin 目录 在这个例子里 如果你的PAM模块要求root权限 例如pam unix so 你不得不把它设为root可执行 你也不得不为ejabberd赋予访问这个文件的权限 并移除所有其他权限 以root权限执行以下命令 chown root ejabberd var lib ejabberd priv bin epam chmod 4750 var lib ejabberd priv bin epam 确保你已在你的系统安装了最新版本的PAM 一些旧版本的PAM模块会导致内存溢出 如果你不能使用最新版本 你可以定期杀掉 1 epam 进程以减少它的内存消耗 ejabberd将立刻重启这个进程 epam程序在验证失败时尝试关闭延迟 然而 一些PAM模块忽略这个行为并依靠它们自己的配置选项 你可以新建一个配置文件ejabberd pam 这个例子展示如何在pam unix so模块关闭延迟 PAM 1 0 auth sufficient pam unix so likeauth nullok nodelay account sufficient pam unix so 这不是一个已准备好使用的配置文件 当你建立你自己的PAM配置时 你必须示意使用它 注意如果你想在PAM配置文见里设置在验证失败时禁止延迟 你不得不限制访问这个文件 这样恶意用户就不能使用你的配置来执行暴力攻击 你可能希望只允许特定用户登录访问 pam listfile so 模块提供这个功能 如果你使用 pam winbind 来对一个Windows Active Directory授权 那么 etc nssswitch conf 必须被配置成使用winbind 访问规则 ACL定义 在ejabberd里访问控制是通过访问控制列表 ACLs 来实现的 配置文件中ACLs的声明语法如下 acl ACLName ACLValue ACLValue 可以是以下之一 all 匹配所有JIDs 例子 acl all all user Username 匹配第一个虚拟主机 名字为 Username 的用户 例子 acl admin user yozhik user Username Server 匹配JID为Username Server加任何资源的用户 例子 acl admin user yozhik example org server Server 匹配从服务器Server来的任何JID 例子 acl exampleorg server example org resource Resource 匹配任何资源为Resource的JID 例子 acl mucklres resource muckl shared group Groupname 匹配这个虚拟主机上的共享名册组Groupname的任何成员 例子 acl techgroupmembers shared group techteam shared group Groupname Server 匹配虚拟主机Server上的共享名册组Groupname的任何成员 例子 acl techgroupmembers shared group techteam example org user regexp Regexp 匹配本地虚拟主机 们 上的任何名字符合Regexp的本地用户 例子 acl tests user regexp test 0 9 user regexp UserRegexp Server 匹配服务器Server上名字符合UserRegexp的任何用户 例子 acl tests user Userregexp test example org server regexp Regexp 匹配来自符合server regexp的服务器的任何JID 例子 acl icq server regexp icq resource regexp Regexp 匹配资源符合resource regexp的任何JID 例子 acl icq resource regexp laptop node regexp UserRegexp ServerRegexp 匹配任何名字符合ServerRegexp的服务器上的任何名字符合UserRegexp的用户 Example acl yohzik node regexp yohzik example com org user glob Glob user glob Glob Server server glob Glob resource glob Glob node glob UserGlob ServerGlob 这和上面一样 然而 它使用 shell glob 模式而不是 regexp 这些模式能拥有以下特别的字符 匹配任何包含null字符的字符串 匹配任何单个字符 匹配任何封闭的字符串 字符范围由一对使用 分割的字符串定义 如果在 之后的第一个字符是一个 匹配任何不封闭的字符 以下 ACLName 是预定义的 all 匹配任何JID none 不匹配任何JID 访问权限 一个允许或禁止访问不同服务的条目 语法是 access AccessName allow deny ACLName 当一个JID被检查到可以访问 Accessname 服务器顺序检查是否那个 JID 匹配任何在列表里这一元组的第二个元素命名的 ACLs 如果匹配 返回第一个匹配的元组的第一个元素 否则返回值 deny 如果你在一个虚拟主机定义了特定的访问权限 记住全局定义的访问权限比它们拥有优先权 这意味着 当发生冲突的时候 使用这个全局服务器上的赋予或禁止访问 而虚拟主机配置的访问控制无效 例子 access configure allow admin access something deny badmans allow all 以下 AccessName 是预定义的 all 总是返回值 allow none 总是返回值 deny 使用ACL限制打开的会话 特别的 access max user sessions 定义了每个用户的会话 已验证的连接 的最大数量 如果一个用户尝试通过使用不同的资源打开更多的会话 第一个打开的会话将被断掉连接 这个 会话替换 的错误信息将被发送到断链的会话 这个选项的值可能是一个数字 或 infinity 缺省值是 infinity 语法是 access max user sessions MaxNumber ACLName 这个例子对所有用户限制每用户会话数为5 对管理员限制为 10 access max user sessions 10 admin 5 all 使用ACL限制到一个远程XMPP服务器的多个连接 特别的 access max s2s connections 定义了可以建立多少个连接到一个特定的远程XMPP服务器 缺省值是 infinity 也可以使用 access max s2s connections per node 语法是 access max s2s connections MaxNumber ACLName 例子 允许每个远程服务器最多3个连接 access max s2s connections 3 all 整形 整形允许你限制连接的通讯量 语法是 shaper ShaperName Kind 目前只支持一种整形 maxrate 语法如下 maxrate Rate 这里 Rate 代表最大允许每秒收到的字节数 当一个连接超过了这个限制 ejabberd停止从socket读取 直到平均速率再次降到允许的最大值以下 例子 定义一个 shaper 名为 normal 限制流量速度为 1 000 bytes second shaper normal maxrate 1000 source 定义一个 shaper 名为 fast 限制流量速度为 50 000 bytes second source lang ini shaper fast maxrate 50000 缺省语言 这个选项 language 定义服务器能被XMPP客户端看到的字符串的缺省语言 如果一个XMPP客户端不支持 xml lang 将使用这里定义的语言 这个选项的语法是 language Language 缺省值是 en 为了让它生效 在ejabberd的 msgs 目录必须有一个翻译文件 Language msg 例如 设置俄语为缺省语言 language ru 附录 A 提供了关于国际化和本地化的更多细节 CAPTCHA 一些ejabberd模块可被配置成在特定的动作上要求 CAPTCHA 挑战 如果客户端不支持 CAPTCHA Forms XEP 0158 将提供一个web连接让用户用web浏览器填写挑战 提供了一个示例脚本使用 ImageMagick 的转换程序来生成图片 配置选项为 captcha cmd Path 一个生成图片的脚本的全路径 缺省值为空 captcha host Host 发给用户的 URL 的 Host 部分 你可以包含端口号 发给用户的 URL 的格式为 http Host captcha 缺省值是第一个被配置的主机名 另外 必须允许一个 ejabberd http 监听者拥有 captcha 选项 见 3 1 3 节 示例配置 hosts example org captcha cmd lib ejabberd priv bin captcha sh captcha host example org 5280 listen 5280 ejabberd http captcha STUN ejabberd可以当作一个独立的 STUN 服务器 RFC 5389 目前只支持绑定的使用 在那个角色中 ejabberd 帮助客户端实现 Jingle ICE XEP 0176 支持来发现它们的外部地址和端口 你应该配置 ejabberd stun 监听模块 如 3 1 3 节所述 如果定义了 certfile 选项 ejabberd 在同一个端口复用TCP连接和通过TCP连接的TLS 很明显 certfile选项仅为tcp定义 注意无论如何 支持 TCP 或 TLS over TCP 对于绑定使用来说不是必需的 对于TURN功能是保留的 只有udp传输可以随意配置 示例配置 listen 3478 udp ejabberd stun 3478 ejabberd stun 5349 ejabberd stun certfile etc ejabberd server pem 你也需要正确地配置 DNS SRV 记录 这样客户端可以很容易地发现一个为你的XMPP域服务的 STUN 服务器 具体请参考 RFC 5389 的 DNS Discovery of a Server 章节 示例 DNS SRV 配置 stun udp IN SRV 0 0 3478 stun example com stun tcp IN SRV 0 0 3478 stun example com stuns tcp IN SRV 0 0 5349 stun example com 包含其它配置文件 一个配置文件中的选项 include config file 代表 ejabberd 包含了其他配置文件to include other configuration files immediately 基本语法 include config file Filename 使用完整语法还可以指定子选项 suboptions include config file Filename Suboption filename 可使用绝对路径 或使用和主 ejabberd 配置文件相关的相对路径 不能使用通配符 文件必须存在且可读 以下子选项 suboptions 为 disallow Optionname 不允许使用那些被包含文件中的选项 满足这个条件的选项立刻变成不可接受 缺省值为空列表 allow only Optionname 只允许使用这个被包含的配置文件中的选项 不满足这个条件的选项立刻变成不可接受 缺省值为 all 这是个基本例子 include config file etc ejabberd additional cfg 在这个例子里 被包含的文件不允许包含一个监听 listen 选项 如果出现了这个选项 该选项将不被接受 这个文件在主配置文件所在目录的一个子目录中 include config file example org additional not listen cfg disallow listen 在这个例子 ejabberd cfg 定义了一些 ACL 和 Access rules 然后包含了另一个文件 里面含有其他 rules acl admin user admin localhost access announce allow admin include config file etc ejabberd acl and access cfg allow only acl access 并且文件 acl and access cfg 的内容可能是 例如 acl admin user bob localhost acl admin user jan localhost 配置文件中的宏选项 在ejabberd配置文件中 有可能为一个值定义一个宏 macro 晚些时候使用这个宏定义一个选项 一个宏 macro 可用以下语法定义 define macro MACRO Value MACRO 必须被一对单引号包住 而且所有字母为大写 检查以下例子 值必须是任何合法的随意的 Erlang 条目 macro的第一个定义会被保留的 同一个macro的其它定义被忽略 Macros 在包含了额外的配置文件之后会被处理 所以有可能在知道用法之前就使用定义在被包含的配置文件里的 macros 不能使用定义在另一个macro里面的macro 有两个办法使用宏 MACRO 你可以把它当成一个 ejabberd 选项的值 它将被替换成这个macro之前定义的值 如果这个 macro 之前没有定义 程序将崩溃并报错 use macro MACRO Defaultvalue 使用一个macro 即使它之前没有定义 如果这个 macro 之前没有定义 使用缺省值 defaultvalue 这个用法看起来好像它已被定义并以以下方法使用 define macro MACRO Defaultvalue MACRO 这个例子展示一个宏的基本使用 define macro LOG LEVEL NUMBER 5 loglevel LOG LEVEL NUMBER 结果被ejabberd解释执行的选项为 loglevel 5 这个例子展示值可以是任意的Erlang条目 define macro USERBOB user bob localhost acl admin USERBOB 结果被ejabberd解释执行的选项为 acl admin user bob localhost 这个复杂的例子 define macro NUMBER PORT C2S 5222 define macro PORT S2S IN 5269 ejabberd s2s in listen NUMBER PORT C2S ejabberd c2s PORT S2S IN use macro NUMBER PORT HTTP 5280 ejabberd http 在解释执行之后结果为 listen 5222 ejabberd c2s 5269 ejabberd s2s in 5280 ejabberd http 数据库和LDAP配置 ejabberd缺省使用它内部的 Mnesia 数据库 然而 也可能使用关系数据库或一个LDAP服务器来存储持久信息 长时间存在的数据 ejabberd是非常弹性的 你可以为不同的虚拟主机配置不同的验证方法 你可以为相同的主机配置不同的验证机制 fallback 你可以为模块设置不同的存储系统 此外 ejabberd支持以下数据库 Microsoft SQL Server Mnesia MySQL 任何ODBC兼容数据库 PostgreSQL 以下 LDAP 服务器已经过ejabberd测试 Active Directory 见 3 2 5 节 OpenLDAP 通常任何LDAP兼容服务器都应该可以 通知我们关于你以不在列表中的服务器的成功例子以便我们列在这里 关于虚拟主机 特别注意 如果你在ejabberd cfg 见 3 1 1 节 定义了多个域 你可能希望每个虚拟主机配置不同的数据库 验证和存储 这样在两个虚拟主机之间用户名就不会冲突和混淆 为此 下一节的选项描述了必须在每个虚拟主机的 host config 内部配置 见 3 1 2 节 例如 host config public example org odbc server pgsql localhost database public example org ejabberd password auth method odbc MySQL 尽管这一节将描述当你想使用原生的 MySQL驱动时 ejabberd 的配置 它将不描述MySQL的安装和数据库的建立 查看MySQL文档和教程 在ejabberd使用MySQL原生驱动 获得关于这些话题的信息 注意该教程中包含的关于ejabberd的配置和本节是重复的 而且 目录 src odbc 中的文件 mysql sql 可能你会感兴趣 这个文件包含ejabberd用于MySQL的schema 该文件的结尾你可找到更新你的数据库架构schema的信息 驱动编译 你可忽略此步骤 如果你已经使用ejabberd的二进制包安装了ejabberd 并使用了内含的MySQL支持 首先 安装 Erlang MySQL 库 确保被编译的文件在你的 Erlang 路径中 你可以把它们放到和你的ejabberd beam 文件相同的目录 然后 以允许支持 ODBC 的选项配置并安装 ejabberd 这也需要原生 MySQL 支持 为此 使用以下命令 configure enable odbc make install 数据库连接 实际的数据库访问使用选项 odbc server 来定义 它的值通常用来定义我们是否想使用 ODBC 或两个可用的原生接口之一 PostgreSQL 或 MySQL 为使用原生 MySQL 接口 你可以通过一组如以下格式的参数 mysql Server Database Username Password mysql是一个关键字应该被保持 例如 odbc server mysql localhost test root password 可选的 有可能定义MySQL使用的端口 这个选项只是在非常少的情况下有用 当你没有以缺省端口设置来运行MySQL时 mysql参数可能是以下格式 mysql Server Port Database Username Password Port值应该是一个整数 没有引号 例如 odbc server mysql localhost Port test root password 缺省的ejabberd为每个虚拟主机打开10个到数据库的连接 使用这个选项来修改该值 odbc pool size 10 你可以配置一个时间间隔来做一个假的SQL请求以保持到数据库的连接激活 缺省值为 undefined 所以没有做 keepalive 请求 指定以秒计 例如 28800 意味着 8 小时 odbc keepalive interval undefined 如果到数据库的连接失败 ejabberd在重试之前等待30秒 你可以这个选项修改这个间隔 odbc start interval 30 验证 这个选项值的名字可能被误导 因为 auth method 名字用于通过ODBC以及通过原生MySQL接口访问关系数据库 无论如何 第一个配置步骤是定义 odbc auth method 例如 auth method odbc 存储 MySQL也能被从多个ejabberd模块用于存储信息 见 3 3 1 节看哪个模块有一个带 odbc 的版本 这个后缀代表这个模块可以被用于类似MySQL的关系数据库 为激活你的数据库的存储 只要确保你的数据库运行正常 见前一节 并把不带后缀或ldap模块变量换成带有 odbc 的模块变量 注意在同一个装载的模块里你不能有多个变量 Microsoft SQL Server 尽管本节将描述当你想使用Microsoft SQL Server时ejabberd的配置 它不描述Microsoft SQL Server的安装和数据库创建 查看MySQL文档和教程 在ejabberd使用MySQL原生驱动 获得关于这些话题的信息 注意该教程中包含的关于ejabberd的配置和本节是重复的 而且 目录 src odbc 中的文件 mssql sql 可能你会感兴趣 这个文件包含ejabberd用于Microsoft SQL Server的schema 该文件的结尾你可找到更新你的数据库架构schema的信息 驱动编译 你可忽略此步骤 如果你已经使用ejabberd的二进制包安装了ejabberd 并使用了内含的ODBC支持 如果你想以ODBC方式使用Microsoft SQL Server 你需要以支持ODBC和允许Microsoft SQL Server选项来配置 编译和安装 ejabberd 为此 使用以下命令 configure enable odbc enable mssql make install 数据库连接 一个Microsoft SQL Server数据库连接的配置和为一个ODBC兼容服务器的配置相同 见 3 2 4 节 验证 一个Microsoft SQL Server数据库验证的配置和为一个ODBC兼容服务器的配置相同 见 3 2 4 节 存储 Microsoft SQL Server也可以被多个ejabberd模块用于存储信息 见 3 3 1 节看看哪个模块有一个带 odbc 的版本 这个后缀代表这个模块可以被用于类似Microsoft SQL Server的关系数据库 为激活你的数据库的存储 只要确保你的数据库运行正常 见前一节 并把不带后缀或ldap模块变量换成带有 odbc 的模块变量 注意在同一个装载的模块里你不能有多个变量 PostgreSQL 尽管本节将描述当你想使用原生的PostgreSQL驱动时ejabberd的配置 它不描述PostgreSQL的安装和数据库创建 查看PostgreSQL文档和教程 在ejabberd使用MySQL原生驱动 获得关于这些话题的信息 注意该教程中包含的关于ejabberd的配置和本节是重复的 而且 目录 src odbc 中的文件 pg sql 可能你会感兴趣 这个文件包含ejabberd用于PostgreSQL的schema 该文件的结尾你可找到更新你的数据库架构schema的信息 驱动编译 你可忽略此步骤 如果你已经使用ejabberd的二进制包安装了ejabberd 并包含了对PostgreSQL的支持 首先 从 ejabberd modules SVN 仓库 安装 Erlang pgsql 库 确保被编译的文件在你的 Erlang 路径中 你可以把它们放到和你的ejabberd beam 文件相同的目录 然后 以允许支持 ODBC 的选项配置并安装 ejabberd 对于原生的 PostgreSQL 支持这也是必需的 为此 使用以下命令 configure enable odbc make install 数据库连接 实际的数据库访问使用选项 odbc server 来定义 它的值通常用来定义我们是否想使用 ODBC 或两个可用的原生接口之一 PostgreSQL 或 MySQL 为使用原生 PostgreSQL 接口 你可以通过一组如以下格式的参数 pgsql Server Database Username Password pgsql是一个关键字应该被保持 例如 odbc server pgsql localhost database ejabberd password 可选的 有可能定义PostgreSQL使用的端口 这个选项只是在非常少的情况下有用 当你没有以缺省端口设置来运行PostgreSQL时 pgsql参数可能是以下格式 pgsql Server Port Database Username Password Port值应该是一个整数 没有引号 例如 odbc server pgsql localhost 5432 database ejabberd password 缺省的ejabberd为每个虚拟主机打开10个到数据库的连接 使用这个选项来修改该值 odbc pool size 10 你可以配置一个时间间隔来做一个假的SQL请求以保持到数据库的连接激活 缺省值为 undefined 所以没有做 keepalive 请求 指定以秒计 例如 28800 意味着 8 小时 odbc keepalive interval undefined 验证 这个选项值的名字可能被误导 因为 auth method 名字用于通过ODBC以及通过原生PostgreSQL接口访问关系数据库 无论如何 第一个配置步骤是定义 odbc auth method 例如 auth method odbc 存储 PostgreSQL也能被多个ejabberd模块用于存储信息 见 3 3 1 节看哪个模块有一个带 odbc 的版本 这个后缀代表这个模块可以被用于类似PostgreSQL的关系数据库 为激活你的数据库的存储 只要确保你的数据库运行正常 见前一节 并把不带后缀或ldap模块变量换成带有 odbc 的模块变量 注意在同一个装载的模块里你不能有多个变量 ODBC兼容 尽管本节将描述当你想使用原生的ODBC 驱动时ejabberd的配置 它不描述安装和数据库创建 查看你的数据库的文档 教程 在ejabberd使用MySQL原生驱动 也会对你有所帮助 注意该教程中包含的关于ejabberd的配置和本节是重复的 驱动编译 你可忽略此步骤 如果你已经使用ejabberd的二进制包安装了ejabberd 并包含了对ODBC的支持 首先 安装 Erlang MySQL 库 确保被编译的文件在你的 Erlang 路径中 你可以把它们放到和你的ejabberd beam 文件相同的目录 然后 以允许支持 ODBC 的选项配置并安装 ejabberd 为此 使用以下命令 configure enable odbc make install 数据库连接 实际的数据库访问使用选项 odbc server 来定义 它的值通常用来定义我们是否想使用 ODBC 或两个可用的原生接口之一 PostgreSQL 或 MySQL 通过ODBC使用数据库 你可以通过一个ODBC连接字符串作为odbc server参数 例如 odbc server DSN database UID ejabberd PWD password 缺省的ejabberd为每个虚拟主机打开10个到数据库的连接 使用这个选项来修改该值 odbc pool size 10 你可以配置一个时间间隔来做一个假的SQL请求以保持到数据库的连接激活 缺省值为 undefined 所以没有做 keepalive 请求 指定以秒计 例如 28800 意味着 8 小时 odbc keepalive interval undefined 验证 第一个配置步骤是定义 odbc auth method 例如 auth method odbc 存储 一个ODBC兼容数据库也能被多个ejabberd模块用于存储信息 见 3 3 1 节看哪个模块有一个带 odbc 的版本 这个后缀代表这个模块可以被用于ODBC兼容的关系数据库 为激活你的数据库的存储 只要确保你的数据库运行正常 见前一节 并把不带后缀或ldap模块变量换成带有 odbc 的模块变量 注意在同一个装载的模块里你不能有多个变量 LDAP ejabberd拥有内建的LDAP支持 你可以通过LDAP服务器验证用户并使用LDAP目录作为vCard存储器 共享名册还不支持 通常ejabberd把LDAP看作一个只读存储 它可能察看数据 但不能新建账号或修改存储在LDAP里的vCard 然而 修改密码是可能的 如果允许 mod register 模块并且LDAP服务器支持 RFC 3062 连接 参数 ldap servers Servers 你的LDAP服务器的IP地址或DNS名的列表 这个选项时必需的 ldap encrypt none tls 到LDAP服务器的连接的加密类型 允许的值为 none tls 这个值 tls 允许使用SSL加密LDAP连接 注意 STARTTLS 加密是不支持的 缺省值为 none ldap tls verify false soft hard 这个选项指定当允许TLS时是否验证LDAP服务器证书 当选项值为 hard 如果证书非法 ejabberd 不继续往下走 当选项值为 soft 即使检查失败ejabberd仍继续下去 缺省值为 false 它意味着不执行检查 ldap port Number 连接到你的LDAP服务器的端口 如果禁止加密 缺省端口为389 如果允许加密则为636 如果你配置了一个值 它存储在 ejabberd的数据库里 接着 如果你从这个配置文件移除这个值 之前存储在数据库的值将被缺省端口取代 ldap rootdn RootDN 绑定的DN 缺省值为 它表示匿名连接 anonymous connection ldap password Password 绑定密码 password 缺省值为 例子 auth method ldap ldap servers ldap example org ldap port 389 ldap rootdn cn Manager dc domain dc org ldap password secret 注意目前的LDAP实现不支持SASL验证 验证 你可以通过LDAP目录验证用户 可用的选项有 ldap base Base LDAP存储用户的帐号的基础目录 这个选项是必需的 ldap uids ldap uidattr ldap uidattr ldap uidattr format 从中可以获得JID的LDAP属性的列表 缺省属性为 uid u 属性的格式为 ldap uidattr 或 ldap uidattr ldap uidattr format 你可以使用多个逗号来分隔需要的属性 ldap uidattr 和 ldap uidattr format 的值描述如下 ldap uidattr 存有JID的user部分的LDAP属性 缺省值为 uid ldap uidattr format ldap uidattr变量的格式 这个格式必须包含一个并且只有一个 pattern 变量 u 它将由JID的suer部分替换 例如 u example org 缺省值为 u ldap filter Filter RFC 4515 LDAP过滤器 缺省的 Filter 值为 undefined 例子 objectClass shadowAccount memberOf Jabber Users 请 不要忘记关闭括号并且不要用多余的空格 在过滤器里你也必须不使用ldap uidattr属性 因为这个属性将被LDAP filter自动取代 ldap dn filter Filter FilterAttrs 应用于主过滤器返回的结果的过滤器 这个filter执行额外的LDAP搜索以得到完整的结果 当你无法在ldap filter里定义所有filter rule时这是有用的 你可以在Filter定义 u d s and D pattern 变量 u 被用户的JID的user部分替代 d 被相应的域 虚拟主机 替代 所有 s 变量被FilterAttrs属性值连续地替代 D 被 Distinguished Name DN 替代 缺省的 ldap dn filter 为 undefined 例子 ldap dn filter name s owner D user u d sn 因为这个filter做了额外的LDAP lookups 只在最后排序时使用它 如果可能 尝试在 ldap filter里定义所有 filter rules ldap local filter Filter 如果因为性能原因 该 LDAP 服务器有很多注册用户 你不能使用 ldap filter 你可以使用这个本地 filter local filter 在ejabberd检查一个属性 而不是 LDAP 所以限制了这个LDAP目录的负载 缺省 filter 是 undefined 示例值 ldap local filter notequal accountStatus disabled ldap local filter equal accountStatus enabled ldap local filter undefined 示例 普通示例 让我们以 ldap example org 作为我们的 LDAP 服务器名 我们在 ou Users dc example dc org 目录使用他们的密码 同时我们有 addressbook 在 ou AddressBook dc example dc org 目录它包含了用户的 emails 和他们的其他信息 到LDAP服务器的连接使用TLS加密 并且使用自定义端口 6123 相应的验证节应该看起来象这样 Authentication method auth method ldap DNS name of our LDAP server ldap servers ldap example org Bind to LDAP server as cn Manager dc example dc org with password secret ldap rootdn cn Manager dc example dc org ldap password secret ldap encrypt tls ldap port 6123 Define the user s base ldap base ou Users dc example dc org We want to authorize users from shadowAccount object class only ldap filter objectClass shadowAccount 现在我们想使用用户的 LDAP info 作为他们的 vCards 在我们的 LDAP schema定义了四个属性 mail email地址 givenName 名 sn 姓 birthDay 生日 我们也想用户搜索到每个其他人 我们看如何设置 modules mod vcard ldap We use the same server and port but want to bind anonymously because our LDAP server accepts anonymous requests to ou AddressBook dc example dc org subtree ldap rootdn ldap password define the addressbook s base ldap base ou AddressBook dc example dc org uidattr user s part of JID is located in the mail attribute uidattr format common format for our emails ldap uids mail u mail example org We have to define empty filter here because entries in addressbook does not belong to shadowAccount object class ldap filter Now we want to define vCard pattern ldap vcard map NICKNAME u just use user s part of JID as his nickname GIVEN s givenName FAMILY s sn FN s s sn givenName example Smith John EMAIL s mail BDAY s birthDay Search form ldap search fields User u Name givenName Family Name sn Email mail Birthday birthDay vCard fields to be reported Note that JID is always returned with search results ldap search reported Full Name FN Nickname NICKNAME Birthday BDAY 注意 mod vcard ldap 模块在LDAP搜索用户的信息之前会先检查用户是否存在 Active Directory Active Directory 只是一个预定义属性的LDAP 服务器 示范配置如下 auth method ldap ldap servers office org List of LDAP servers ldap base DC office DC org Search base of LDAP directory ldap rootdn CN Administrator CN Users DC office DC org LDAP manager ldap password Password to LDAP manager ldap uids sAMAccountName ldap filter memberOf modules mod vcard ldap ldap vcard map NICKNAME u GIVEN s givenName MIDDLE s initials FAMILY s sn FN s displayName EMAIL s mail ORGNAME s company ORGUNIT s department CTRY s c LOCALITY s l STREET s streetAddress REGION s st PCODE s postalCode TITLE s title URL s wWWHomePage DESC s description TEL s telephoneNumber ldap search fields User u Name givenName Family Name sn Email mail Company company Department department Role title Description description Phone telephoneNumber ldap search reported Full Name FN Nickname NICKNAME Email EMAIL 模块配置 选项 modules 定义ejabberd启动后将被装载的模块的列表 列表中的每个条目是一个组 第一个元素是一个模块的名称 第二个是一个模块列表的选项 语法是 modules ModuleName ModuleOptions 例子 在这个例子里只有模块 mod echo 被装载宁且没有在方括号内定义该模块的选项 modules mod echo 在第二个例子里不带选项地装载了模块 mod echo mod time 和 mod version 特别注意 除了最后一个条目 所有条目都以一个逗号结尾 modules mod echo mod time mod version 模块一览 下表列出ejabberd里的所有模块 模块 功能 依赖 mod adhoc 特定命令 XEP 0050 mod announce 管理公告 推荐 mod adhoc mod caps 实体能力 XEP 0115 mod configure 使用特定命令配置服务器 mod adhoc mod disco 服务发现 XEP 0030 mod echo XMPP节回音 mod irc IRC网关 mod last 最后活动 XEP 0012 mod last odbc 最后活动 XEP 0012 支持的数据库 mod muc 多用户聊天 XEP 0045 mod muc log 多用户聊天室记录 mod muc mod offline 离线消息存储 XEP 0160 mod offline odbc 离线消息存储 XEP 0160 支持的数据库 mod ping XMPP Ping 和定期保持连接 XEP 0199 mod privacy 禁止通讯 XMPP IM mod privacy odbc 禁止通讯 XMPP IM 支持的数据库 mod private 私有XML存储 XEP 0049 mod private odbc 私有XML存储 XEP 0049 支持的数据库 mod proxy65 SOCKS5字节流 XEP 0065 mod pubsub 发行 订阅 XEP 0060 PEP XEP 0163 mod caps mod pubsub odbc 发行 订阅 XEP 0060 PEP XEP 0163 支持的数据库 和 mod caps mod register I带内注册 XEP 0077 mod roster 名册管理 XMPP IM mod roster odbc 名册管理 XMPP IM 支持的数据库 mod service log 拷贝用户消息到日志服务 mod shared roster 共享名册管理 mod roster 或 mod roster odbc mod sic Server IP检查 XEP 0279 mod stats 统计信息收集 XEP 0039 mod time 实体时间 XEP 0202 mod vcard 电子名片 XEP 0054 mod vcard ldap 电子名片 XEP 0054 LDAP服务器 mod vcard odbc 电子名片 XEP 0054 支持的数据库 mod vcard xupdate 基于vCard的头像 XEP 0153 mod vcard 或 mod vcard odbc mod version 软件版本 XEP 0092 这个模块需要数据库支持 关于支持的数据库列表 见 3 2 节 通过后缀你可以看到每个模块需要哪个数据库后端 没有后缀 这意味着那个模块使用Erlang的内建数据库 Mnesia 作为后端 odbc 这意味着该模块需要一个支持的数据库 见 3 2 节 作为后端 ldap 这意味着该模块需要一个LDAP服务器作为后端 如果你想要 有可能使用一个关系数据库来存储信息件 你可以通过在ejabberd 配置文件修改模块名称带上 odbc 后缀来实现这点 你可以为以下数据使用关系数据库 最后连接日期和时间 使用 mod last odbc 取代 mod last 离线消息 使用 mod offline odbc 取代 mod offline 名册 使用 mod roster odbc 取代 mod roster 用户的VCARD 使用 mod vcard odbc 取代 mod vcard 私有XML存储 使用 mod private odbc 取代 mod private 用户黑名单规则 使用 mod privacy odbc 取代 mod privacy 你可以在ejabberd网站找到更多别人 捐献的模块 的信息 请记住这些捐献可能不能用或它们有些bug和安全泄露 所以 使用他们是你们自己的风险 通用选项 以下选项被多个模块使用 所以 它们被单列一节 iqdisc 很多模块为处理发到这个服务器或一个用户 例如 给 example org 或给 user example org 的不同namespaces的IQ queries定义了处理程序 这个选项定义了这些queries的处理原则 语法是 iqdisc Value 可能的值有 no queue 一个拥有此处理原则的 namespace 的所有 queries 会被立即处理 这也意味着在这个包完全处理完之前 不可以处理任何包 如果一个query的处理可能消耗比较长的时间 今后将不推荐这个原则 one queue 在这种情况下 将为一个拥有此处理原则的 namespace建立一个独立的队列来处理它们 另外 这个队列的处理和其他包的队列是并行的 这个原则是最推荐的 queues N N个独立的队列被建立用来处理这些 queries 因而 queries 被并行处理 但是以一个可控的方法 parallel 对每一个拥有此原则的包产生一个独立的Erlang进程 所以 所有这些包被并行处理 尽管Erlang进程的产生成本相对较低 这可能中断服务器的正常工作 因为Erlang模拟器对进程数量有限制 缺省为32000 例子 modules mod time iqdisc no queue host 这个选项定义一个ejabberd 模块提供的服务的 Jabber ID 语法是 host HostName 如果你在 HostName 里包含了关键字 HOST 它在启动时被替换为真实的虚拟主机字符串 这个例子配置了 echo 模块以 Jabber ID mirror example org来提供它的回音服务 modules mod echo host mirror example org 无论如何 如果有多个虚拟主机并且这个模块在所有虚拟主机中都被激活 必须使用 HOST 关键字 modules mod echo host mirror HOST mod announce 本模块允许配置用户广播公告并设定本日消息 MOTD 被配置的用户可以在一个XMPP客户端使用Ad hoc命令或发送消息给指定的JIDs来执行这些动作 特定命令被列于服务发现 要使用此功能 必须激活 mod adhoc 模块 可以发送消息的特定 JIDs 清单如下 在每个条目的第一个 JID 将只应用于指定的虚拟主机 example org 而括号里的 JID 将应用于ejabberd的所有虚拟主机 example org announce all example org announce all hosts all 消息将被发送给所有注册用户 如果用户在线并连接了多个资源 只有高优先级的资源将收到消息 如果注册用户没有连接 消息将离线存储 假定激活了离线存储 见 Ejabberd2 安装和操作指南 mod offline 3 3 12 节 example org announce online example org announce all hosts online 消息被发送到所有已连接的用户 如果用户在线且连接了多个资源 所有资源将接收到消息 example org announce motd example org announce all hosts motd 该消息被设置为每日消息 MOTD 并在用户登录时被发送给用户 另外这个消息会被发送给所有连接的用户 类似 announce online example org announce motd update example org announce all hosts motd update 该消息被设置为每日消息 MOTD 并在用户登录时被发送给用户 这个消息不发送给任何当前已连接的用户 example org announce motd delete example org announce all hosts motd delete 任何发送到此JID的消息移除现有的每日消息 MOTD 选项 access AccessName 这个选项指定谁被允许发送公告并设置每日消息 缺省的 没有人能发送这类消息 例子 只有管理员能发送公告 access announce allow admins modules mod adhoc mod announce access announce 管理员以及 direction 可发送公告 acl direction user big boss example org acl direction user assistant example org acl admins user admin example org access announce allow admins allow direction modules mod adhoc mod announce access announce 注意 mod announce 在大的布署里可能是资源敏感的 因为它可能广播非常多的消息 对于拥有成百上千用户的ejabberd实例 这个模块应该被禁止 mod disco 这个模块增加多服务发现 XEP 0030 的支持 激活本模块 你的服务器上的服务可以被XMPP客户端发现 注意ejabberd没有模块支持被取代的 Jabber Browsing XEP 0011 和 Agent Information XEP 0094 于是 如果你想它们能发现你提供的服务 XMPP客户端需要支持这个比较新的发现协议 选项 iqdisc Discipline 这定义服务发现的IQ queries的处理原则 http jabber org protocol disco items 和 http jabber org protocol disco info 见 3 3 2 extra domains Domain 使用这个选项 你可以指定一个增加到服务发现条目列表中的附加域的列表 server info Modules Field Value 指定关于本服务器的额外的信息 参见 XMPP服务的联系地址 XEP 0157 Modules 可以是关键字 all 这种情况下信息被汇报给所有服务 或是一个 ejabberd 模块的列表 这种情况下信息仅被指定给那些模块提供的服务 可以指定任意的 Field 和 Value 不只是联系地址 例子 提供一个链接到jabber org上的Jabber用户目录 modules mod disco extra domains users jabber org 提供一个链接到其他服务器的网关 modules mod disco extra domains icq example com msn example com 提供一个链接到一些友好的服务器 modules mod disco extra domains example org example com 使用这个配置 所有服务在主服务器显示滥用地址 回复地址 并同时在主服务器和vJUD服务显示管理员地址 modules mod disco server info all abuse addresses mailto abuse shakespeare lit mod muc Web chatroom logs http www example org muc logs mod disco feedback addresses http shakespeare lit feedback php mailto feedback shakespeare lit xmpp feedback shakespeare lit mod disco mod vcard admin addresses mailto xmpp shakespeare lit xmpp admins shakespeare lit mod echo 本模块简单地对任何XMPP包发出回音给发送者 ejabberd和XMPP客户端调试可能对这个镜子感兴趣 选项 host HostName 这个选项定义服务的Jabber ID 如果 host 选项没指定 Jabber ID 将是前缀 echo 加该虚拟主机的 hostname 关键字 HOST 在启动时被替换成真实的虚拟主机名 例子 镜子 镜子 在墙上 他们谁是最美丽的 modules mod echo host mirror example org mod http bind 本模块实现了定义于 XEP 0124 和 XEP 0206 的 XMPP over Bosh 正式的名字是 HTTP Binding 它在这个将被伺服的服务上以一个可配置的资源扩展了ejabberd的HTTP服务 要使用 HTTP Binding 激活这个模块 modules mod http bind 并增加 http bind 到 HTTP 服务 例如 listen 5280 ejabberd http http bind http poll web admin 使用这个配置 module 将伺服发送给 http example org 5280 http bind 的请求 记住这个页面不是被设计给web浏览器使用的 它是被支持XMPP over Bosh的XMPP客户端使用的 如果你想以不同的URI路径设置服务或使用一个不同的模块 你可以使用选项request handlers手工配置它 例如 listen 5280 ejabberd http request handlers http bind mod http bind http poll web admin 选项 max inactivity Seconds 以秒数定义最大闲置时间 缺省值为30秒 例如 设置成50秒 modules mod http bind max inactivity 50 mod http fileserver 这个简单的模块从本地磁盘通过HTTP提供文件服务 选项 docroot Path 伺服文件的目录 accesslog Path 使用一个类似Apache格式的日志文件 如果没指定本选项则不记录日志 directory indices Index 包含一个或多个目录的索引文件 类似 Apache的 DirectoryIndex 变量 当一个web请求去到一个目录而不是常规的文件 那些目录的 indices 被顺序装载 并且返回被发现的第一个 custom headers Name Value 表明自定义的HTTP头将被包含在所有应答中 缺省值是 content types Name Type 指定内容类型的扩展 已经定义了很多 content types 使用本选项你可以增加新的定义 修改或删除现存的 要删除现有定义 简单的以一个值定义它 undefined default content type Type 指定 content type 使用未知的扩展 缺省是 application octet stream 这个实例配置将从本地目录 var www 在地址 http example org 5280 pub archive 提供文件服务 在这个例子定义了一个新的 content type ogg png 重新定义了 而 jpg 定义被删除了 要使用本模块你必须激活它 modules mod http fileserver docroot var www accesslog var log ejabberd access log directory indices index html main htm custom headers X Powered By Erlang OTP X Fry It s a widely believed fact content types ogg audio ogg png image png jpg undefined default content type text html 并且在HTTP服务里把它定义为一个处理器 listen 5280 ejabberd http request handlers pub archive mod http fileserver mod irc 本模块是一个 IRC 网关用于加入IRC服务器的频道 最终用户信息 一个支持 groupchat 1 0 或 Multi User Chat XEP 0045 的XMPP客户端需要加入IRC频道 一个IRC频道可能被以近似相同的方式加入一个XMPP多用户聊天室 不同处是房间名将变成 channel irc example org 在这个情况下 irc example org 是伺服 channel 的IRC服务器 并且当然这个主机应该指向IRC网关而不是多用户聊天服务 你可以注册你的昵称 通过发送 IDENTIFY password 到 nickserver irc example org irc jabberserver org 键入你的密码 通过发送 LOGIN nick password 到 nickserver irc example org irc jabberserver org IRC网关提供 Ad Hoc Commands XEP 0050 来加入一个频道 并设定自定义的 IRC 用户名和编码 当使用一个流行的XMPP服务器 可能它没有到一些IRC服务器的连接存在 因为它们限制从一个IP来的连接的数量 选项 host HostName 这个选项定义该服务的 Jabber ID 如果 host 选项未定义 Jabber ID 将是该虚拟主机的 hostname 加上前缀 irc 关键字 HOST 在启动时被替换成真实的虚拟主机名 access AccessName 这个选项可被用于定义谁能使用 IRC 网关 缺省值 all default encoding Encoding 设置缺省的 IRC 编码 缺省值 koi8 r 例子 在第一个例子里 IRC网关在你的所有带有前缀 irc 的虚拟主机上可用 进一步的 任何人可以使用这个这个网关 缺省编码设为 iso8859 15 modules mod irc access all default encoding iso8859 15 在下一个例子 IRC网关对于那些拥有前缀irc t net的JIDs可用 而且 这个网关只可以被example org的两个用户以及example com上的所有用户使用 acl paying customers user customer1 example org acl paying customers user customer2 example org acl paying customers server example com access irc users allow paying customers deny all modules mod irc access irc users host irc example net mod last 本模块增加对最后活动 XEP 0012 的支持 它可被用于发现什么时候离线用户最后一次访问服务器 并知道在这台服务器上一个连接的用户的最后活动 或查询ejabberd服务器的运行时间 选项 iqdisc Discipline 这是为 最后活动 jabber iq last IQ queries 定义处理原则 见 3 3 2 节 mod muc 本模块提供一个多用户聊天 XEP 0045 服务 用户可以发现现有房间 加入或新建房间 房间的房客可以公开或私下聊天 多用户聊天的一些功能 发送公开或私有消息给房间房客 邀请其他用户到一个房间 设定一个房间的标题 建立密码保护房间 踢人或拉黑名单 这个MUC服务允许任何Jabber ID注册一个昵称 这样没有别人可以在该MUC服务的任何房间使用那个昵称 为了注册一个昵称 在你的XMPP客户端打开服务发现并注册到该MUC服务 本模块支持集群和负载均衡 一个模块可被每个集群节点启动 在特定的时间房间分布于所有可用的MUC模块实例上 多用户聊天模块是集群的但房间本身不是集群的 也不是容错的 如果管理那些房间的节点挂了 那些房间就消失了并且它们将在第一次尝试连接得到的可用节点上重建 Module 选项 host HostName 这个选项定义服务的Jabber ID 如果 host 选项未指定 该Jabber ID将是虚拟主机的hostname加上前缀 conference 关键字 HOST 在启动时被替换为真实的虚拟主机名 access AccessName 你可以指定谁有权使用多用户聊天服务 缺省每个人都被允许使用它 access create AccessName 为配置在多用户聊天服务里谁被允许创建新房间 可使用这个选项 缺省任何本地ejabberd服务器的帐号都被允许新建房间 access persistent AccessName 为配置谁被允许修改持久 persistent 房间的选项 缺省任何本地ejabberd服务器的帐号被允许修改那个选项 access admin AccessName 这个选项指定谁被允许管理多用户聊天服务 缺省值为 none 它意味着只有房间创建者可以管理他的房间 管理员们可以发送一个普通消息给服务 JID 并且它将被作为一个服务消息显示在所有房间 管理员们可以发送一个 groupchat 消息给一个激活的房间的JID 并且该消息将被显示为一个服务消息 history size Size 当用户进入房间时被发送给用户的一个当前讨论的短小历史 使用此选项你可以定义保持的历史数据数量 用来在用户加入房间时发送给他们 这个值是一个整数 设定这个值为 0 禁止历史功能并且 导致一个结果 没东西保留在内存里 这个缺省值是 20 这个值是全局的并且因而会影响服务的所有房间 max users Number 这个选项定义是服务级别的 每房间允许的最大用户数 它可以低于每个房间的配置但是不能在单个的房间配置里增加 缺省值为200 max users admin threshold Number 这个选项定义 当房间允许的最大房客数量达到之后 被允许进入房间的服务管理员或房间所有者的数量 缺省限制为 5 max user conferences Number 这个选项定义给定用户能加入的房间的最大数量 缺省值为 10 这个选项被用于阻止可能的滥用 注意这是个软限制 一些用户有时候可以在集群配置里加入更多的会议 max room id Number 这个选项定义 当新建一个房间时 Room ID 字符串的可以有的最大长度 缺省值是不限制 infinite max room name Number 这个选项定义 当配置一个房间时 Room Name 字符串的可以有的最大长度 缺省值是不限制 infinite max room desc Number 这个选项定义 当配置一个房间时 Room Description 字符串的可以有的最大长度 缺省值是不限制 infinite min message interval Number 这个选项定义 在一个房客发送的两个消息之间的最小间隔时间 以秒计 这个选项是全局的并且检查所有房间 可使用一个十进制值 当这个选项没定义时 消息速率是不限制的 这个功能可用来保护MUC服务不被房客滥用并限制服务广播的消息数量 对于这个最小消息间隔时间 一个比较好的值是0 4秒 如果一个房客试图更快地发送消息 发回一个错误并解释这个消息已被抛弃并描述为什么消息不被接受的原因 min presence interval Number 这个选项定义一个给定房客的两次出席信息变更之间的最小时间 以秒计 这个选项是全局的并且会对所有房间生效 可以用一个十进制数值 当这个选项没有定义的时候 没有限制 这个选项可被用于保护一个MUC服务不被房客滥用 如果一个房客试图在指定的间隔时间内更多次的变更出席信息 这个出席信息被 ejabberd 缓存并只有在间隔延迟过期后最新的出席信息被广播给房间里的所有房客 中间的出席信息包被安静的抛弃 一个好的选项值是4秒 default room options OptionName OptionValue 这个选项允许定义期望的缺省房间选项 注意一个房间的创建者可以在任何时候使用一个有MUC能力的XMPP客户端修改他自己的房间的选项 可用的房间选项和缺省值有 allow change subj true false 允许房客修改标题 allow private messages true false 房客可以发送私有消息给其他房客 allow query users true false 房客可发送 IQ queries 给其他房客 allow user invites false true 允许房客发送邀请 allow visitor nickchange true false 允许游客修改昵称 allow visitor status true false 允许游客在出席信息更新里发送status状态文本 I如果不允许 在广播出席信息更新给房间里所有的房客时这个 status 文本被剥离 anonymous true false 这个房间是匿名的 房客看不到其他房客的真实JIDs 注意房间主持人们总是看得见房客的真实JIDs logging false true 公开消息被使用mod muc log记录 max users 200 房间里房客的最大数量 members by default true false 进入房间的房客缺省成为参与者 所以他们有发言权 voice members only false true 只有房间成员可以进入 moderated true false 只有拥有发言权 voice 的房客可以发送公开消息 password roompass123 房间密码 你可能希望也激活下一个选项 password protected false true 要求密码才能进入房间 persistent false true 即使最后一个房客离开 房间仍持久存在 public true false 房间在MUC服务列表里是公开的 所以它是可发现的 public list true false 参与者名单是公开的 不需要进入房间就能拿到 title Room Title 一个自然语言的房间称谓 所有房间选项能被设定为 true 或 false 除了 password 和 title 是字符串 以及 max users 是整数 例子 在第一个例子里 每个人都允许使用多用户聊天服务 每个人也将能创建房间但只有用户admin example org被允许管理任何房间 在这个例子里他也是一个全局的管理员 当admin example org发送一个消息 例如 Tomorrow the XMPP server will be moved to new hardware This will involve service breakdowns around 23 00 UMT We apologise for this inconvenience 给 conference example org 这个消息将被显示在所有激活的房间里 在这个例子里历史功能被禁止了 acl admin user admin example org access muc admin allow admin modules mod muc access all access create all access admin muc admin history size 0 在第二个例子里多用户聊天服务只允许在我们的域和其他的服务器上注册了的付费客户访问 当然管理员也是允许访问房间的 而且 他是唯一被授权可以建立并管理房间的 当admin example org发送一个消息 例如 Tomorrow the Jabber server will be moved to new hardware This will involve service breakdowns around 23 00 UMT We apologise for this inconvenience 给 conference example org 它将被显示在所有激活的房间里 没有使用 history size 选项 这意味着这个功能被激活但缺省值为20个历史消息 将被发送给用户们 acl paying customers user customer1 example net acl paying customers user customer2 example com acl paying customers user customer3 example org acl admin user admin example org access muc admin allow admin deny all access muc access allow paying customers allow admin deny all modules mod muc access muc access access create muc admin access admin muc admin 在以下例子里 MUC使用了反滥用选项 一个房客每0 4秒不能发送超过一个消息并且不能超过每4秒之内变更一次出席信息 Room IDs 和 Room Names 的长度被限制为 20 个字符 而 Room Description 限制为 300 个字符 没有定义 ACLs 但一些用户限制可能被加入 modules mod muc min message interval 0 4 min presence interval 4 max room id 20 max room name 20 max room desc 300 这个例子展示如何使用 default room options 来确保新建房间缺省拥有的选项 modules mod muc access muc access access create muc admin default room options allow change subj false allow query users true allow private messages true members by default false title New chatroom anonymous false access admin muc admin mod muc log 本模块允许可选的把多用户聊天 MUC 的公开谈话记录转为HTML 一旦你激活了这个模块 用户可以使用有MUC能力的XMPP客户端加入一个房间 并且如果他们有足够的权限 他们可以请求一个配置表单来设定配置并允许房间记录 功能 每页顶端加上房间细节 room 称谓 JID 作者 标题以及配置 房间JID 在生成的HTML里是一个链接 可用来加入该房间 使用 XMPP URI 标题和房间配置变更会被跟踪和显示 加入 离开 修改昵称 踢人 拉黑名单和 me 被跟踪和显示 包括原因 如果有 生成的 HTML 文件是 XHTML 1 0 Transitional 和 CSS 兼容的 时间戳是自参考的链接 快速浏览的链接在顶上 前一天 下一天 上 CSS被用于style定义 可以使用一个自定义的 CSS 文件 消息和标题里的URLs被转换为超链接 时间戳上的时区被显示在记录文件里 可在每一个页的顶部增加一个自定义链接 选项 access log AccessName 这个选项限制哪个房客被允许激活和禁止房间记录 缺省值为 muc admin 注意对于为了这个缺省设定生效 你需要有一个用于 muc admin 的 access rule cssfile false URL 使用这个选项你可以设置是否该HTML文件应该使用一个自定义的CSS文件或他们需要使用嵌入的CSS文件 被允许的值有 false 和一个指向某CSS文件的URL 使用第一个值 HTML文件将包含一个嵌入的CSS代码 使用后一个 你可以指定自定义CSS文件的URL 例如 http example com my css 缺省的值是 false dirname room jid room name 允许配置房间目录的名字 被允许的值有 room jid 和 room name 使用前者的值 房间目录名将是完整的房间JID 使用后者 房间目录名将只是房间的名字 不包括 MUC服务名 缺省值是room jid dirtype subdirs plain 新建目录的类型可使用此选项指定 允许的值有 subdirs 和 plain 使用前者 子目录以每年和月新建 使用后者 记录文件名包含完整的日期 并且没有子目录 缺省值是 subdirs file format html plaintext 定义日志文件的格式 html 存储成HTML格式 plaintext 存储成纯文本 缺省值为 html outdir Path 这个选项是应该被存储的HTML文件的目录的全路径 确保ejabberd守候进程对那个目录有写权限 缺省值为 www muc spam prevention true false 为了阻止垃圾 spam prevention 选项增加了一个特别的属性给链接来阻止它们通过搜索引擎来索引 缺省值为 true 它意味着 nofollow 属性将被加到用户提交的链接里 timezone local universal 记录的时区可使用本选项配置 允许的值有 local 和 universal 使用前者 将使用Erlang通过操作系统获得的本地时间 使用后者 将使用GMT UTC 时间 缺省值为 local top link URL Text 使用本选项你可以定制化每个日志文件的右上角的链接 缺省值是 Home 例子 在第一个例子里 任何房间所有者能激活记录 并将使用一个自定义的CSS文件 http example com my css 记录文件的名字将包含完整日期 并且将没有子目录 记录文件将被存储在 var www muclogs 且时区将是GMT UTC 最后 顶端链接将是 a href http www jabber ru Jabber ru a access muc allow all modules mod muc log access log muc cssfile http example com my css dirtype plain dirname room jid outdir var www muclogs timezone universal spam prevention true top link http www jabber ru Jabber ru 在第二个例子里只有admin1 example org和admin2 example net可以激活记录 并且将使用嵌入的CSS文件 记录名将只包含日期 数字 且每年和月将有子目录 这个记录文件将被存储在 var www muclogs 且将使用本地时间 最后 顶端链接将是缺省的 a href Home a acl admins user admin1 example org acl admins user admin2 example net access muc log allow admins deny all modules mod muc log access log muc log cssfile false dirtype subdirs outdir var www muclogs timezone local mod offline 本模块实现离线消息存储 XEP 0160 这意味着所有被发送给一个离线用户的消息将被存储在服务器上直到那个用户再次上线 所以它非常类似邮件的工作 注意 ejabberdctl 有一个命令删除过期的消息 见 4 1 节 access max user messages AccessName 这个选项定义哪个 access rule 将被强迫用来限制一个用户所拥有的离线消息的最大数量 配额 当一个用户有太多离线消息 任何收到的新消息将被抛弃 并且将返回一个 资源约束 错误给发送者 缺省值为 max user offline messages 接着你可以用类似max user sessions的语法定义一个 access rule 见 3 1 5 节 这个例子允许强力用户拥有大到 5000 个离线消息 管理员达到 2000 所有其他用户达到 100 acl admin user admin1 localhost acl admin user admin2 example org acl poweruser user bob example org acl poweruser user jane example org access max user offline messages 5000 poweruser 2000 admin 100 all modules mod offline access max user messages max user offline messages mod ping 这个模块实现对XMPP Ping XEP 0199 和 定期保持连接 的支持 当本模块激活时 ejabberd正确应答 ping 请求 如协议所述 配置选项 send pings true false 如果这个选项设为 true 服务器在一个给定的间隔时间 ping interval发送 pings 给已连接的不活跃的客户端 这对于保持活着的客户端连接或检查可用性是有用的 缺省这个选项是禁止的 ping interval Seconds 多久发送一次 ping 给已连接的用户 如果前一个选项被激活 如果一个客户端连接在这个间隔内没有发送或接收任何节 一个 ping 请求被发送给客户端 缺省值为60秒 timeout action none kill 当一个客户端在32秒内不回答一个服务器的ping请求时 服务器做什么 缺省是什么也不做 这个例子激活了 Ping 应答 配置该模块发送 pings 给4分钟内不活跃的客户端连接 并且如果一个客户端在32秒内不回答 ping 它的连接将被关闭 modules mod ping send pings true ping interval 240 timeout action kill mod privacy 本模块实现定义于 XMPP IM 第十章的禁止通讯 也被称为隐私规则 如果最终用户在他们的XMPP客户端也支持它 他们将能够 收到某人的隐私列表privacy lists 增加 删除 和修改某人的隐私列表privacy lists 设置 修改 或减少激活的列表active lists 设置 修改 或减少缺省列表default list 即 缺省那个列表是激活的 允许或禁止消息 基于JID group 或 订阅类型subscription type 或全局的 允许或禁止入站的出席信息通知 基于JID group 或 订阅类型subscription type 或全局的 允许或禁止出站的出席信息通知 基于JID group 或 订阅类型subscription type 或全局的 允许或禁止IQ节 基于JID group 或 订阅类型subscription type 或全局的 允许或禁止所有通讯 基于JID group 或 订阅类型subscription type 或全局的 从 http xmpp org rfcs rfc3921 html privacy 选项 iqdisc Discipline 这为禁止通讯 jabber iq privacy IQ queries 见 3 3 2 节 定义处理原则 mod private 本模块增加对私有XML存储 XEP 0049 的支持 使用这个方法 XMPP实体能存储私有数据到服务器并在任何必要的时候获得它 存储的数据可以是任何东西 只要它是合法的XML 对这个namespace的一个典型的用法是服务器端存储特定客户端的配置 另一个是标签存储 XEP 0048 选项 iqdisc Discipline 这为私有XML存储 jabber iq private IQ queries 定义处理原则 见 3 3 2 mod proxy65 本模块实现SOCKS5字节流 XEP 0065 它允许把ejabberd当作一个在两个XMPP客户端之间的文件传输代理 选项 host HostName 这个选项定义该服务的Jabber ID 如果 host 选项没指定 Jabber ID将是该虚拟主机的hostname加上前缀 proxy 关键字 HOST 在启动时被替换为真实的虚拟主机名 name Text 定义服务的服务发现名称 缺省是 SOCKS5 Bytestreams ip IPTuple 这个选项定义监听哪个网络接口 缺省是该服务的DNS名解析到的一个IP地址 或 如果失败 则是 127 0 0 1 port Number 这个选项定义监听链入连接的端口 缺省是 7777 hostname HostName 定义一个在建立和客户端的会话时服务声明的hostname 当你在一个NAT后面运行这个服务的时候这是有用的 缺省是 ip 选项的值 例如 proxy mydomain org 200 150 100 50 注意在流协商的时候不是所有客户端都懂得域名 所以在这个选项设定域名时你应该思考两次 auth type anonymous plain SOCKS5验证类型 可能的值有 anonymous 和 plain 缺省是 anonymous access AccessName 为文件传输发起者定义 ACL 缺省是 all max connections Number 每个文件传输的发起者的激活连接的最大数 缺省不限制 shaper none ShaperName 这个选项为文件传输端定义塑性shaper 有最大带宽的Shaper将被选择 缺省是 none 例子 本模块最简单的配置 modules mod proxy65 更复杂的配置 acl proxy users server example org access proxy65 access allow proxy users deny all acl admin user admin example org shaper proxyrate maxrate 10240 10 Kbytes sec access proxy65 shaper none admin proxyrate proxy users modules mod proxy65 host proxy1 example org name File Transfer Proxy ip 200 150 100 1 port 7778 max connections 5 access proxy65 access shaper proxy65 shaper mod pubsub 本模块提供一个发行 订阅 服务 XEP 0060 在mod pubsub里 功能可以使用插件来扩展 实现PEP 基于Pubsub的个人信息事件 XEP 0163 的plugin 在缺省的 ejabberd 配置文件中是被允许的 并且它需要 mod caps 选项 host HostName 这个选项定义了该服务的Jabber ID 如果 host 选项没定义 Jabber ID将是该虚拟主机的hostname加上前缀 pubsub 关键字 HOST 在启动时被替换成真实的虚拟主机名 如果你使用了 mod pubsub odbc 请确保前缀只包含一个点dot 例如 pubsub 或 publish access createnode AccessName 这个选项使用 ACL 和 ACCESS来限制哪个用户被允许建立 pubsub 节点 缺省本地ejabberd服务器的任何帐号被允许新建 pubsub 节点 max items node MaxItems 定义可被一个节点存储的条目的最大数量 缺省值为 10 plugins Plugin 用于指定plugins使用哪个pubsub节点 列表的第一个缺省被使用 如果这个选项没定义 缺省 plugins 列表为 flat PubSub客户端能定义使用哪个plugin 当新建一个节点的时候 增加 type plugin name 属性到这个 create 节元素里 nodetree Nodetree 用于指定使用哪个节点树 nodetree 如果没定义 缺省使用 pubsub nodetree tree 每个主机只能使用一个 nodetree 且被所有节点 plugins 共享 virtual nodetree 不把节点存储在数据库里 它使用tons of nodes存储资源到系统 如果使用 virtual nodetree 你只能允许那些节点 plugins flat pep 或 flat 任何其他 plugins 配置将不工作 同时 所有节点将有缺省配置 并且不能被修改 使用 virtual nodetree 需要从一个干净的数据库启动 如果你之前使用了缺省的 tree nodetree 它将不工作 dag nodetree 为 PubSub集合节点 XEP 0248 提供实验性的支持 在那种情况下你也应该增加 dag 节点 plugin 作为缺省值 例如 plugins dag flat hometree pep ignore pep from offline false true 用于指定是否我们应该获取当我们连接时在我们的名册里处于离线状态的联系人的PEP最后发行条目 值有 true 或 false 如果不定义 pubsub 假定为 true 所以我们只能获取在线联系人的最后条目 last item cache false true 指定是否 pubsub 应该缓存最后条目 值为 true 或 false 如果没定义 pubsub不缓存最后条目 在没有那么多节点的系统上 缓存最后条目加速了 pubsub 并允许增加用户连接频率 开销主要是内存使用 因为每个条目都存储在内存里 pep mapping Key Value 这允许定义一个 键 值 列表来在给定 PEP 名字空间选择定义节点 plugins 以下例子将为每个拥有 tune namespace的PEP节点使用 node tune 替代 node pep mod pubsub pep mapping http jabber org protocol tune tune 配置例子使用 flat 节点作为缺省值 并允许使用 flat nodetree 和 pep 节点 modules mod pubsub access createnode pubsub createnode plugins flat hometree pep 使用 ODBC 数据库要求使用重复的plugins 以下例子展示前一个配置加上 ODBC 之后的用法 modules mod pubsub odbc access createnode pubsub createnode plugins flat odbc hometree odbc pep odbc mod register 本模块增加对带内注册 XEP 0077 的支持 这个协议允许最终用户使用XMPP客户端做 在服务器注册一个新帐号 在服务器上给一个现有帐号修改密码 删除一个服务器上的现有帐号 选项 access AccessName 这个选项可被配置来指定限制注册的 rules 如果一个 rule 在请求的用户名返回 deny 那个用户名的注册被禁止 缺省没有限制 access from AccessName 缺省的 ejabberd不允许从s2s或已有的c2s会话注册一个新帐号 你可以修改它 通过在这个选项定义 access rule 谨慎使用 允许从s2s注册会导致流氓用户的不可控的大量帐号注册 welcome message Message 设定一个欢迎信息发送给每一个新注册的帐号 第一个字符串是标题 第二个字符串是消息 body 在body里你可以用字符 n 设定一个新行 registration watchers JID 这个选项定义一个 JIDs 列表 每次有人注册新帐号 他们将收到通知 iqdisc Discipline 这为带内注册 jabber iq register IQ queries 见 3 3 2 节 定义处理原则 这个模块也从服务器读取另一个全局定义的选项 registration timeout Timeout 这个选项限制从一个给定IP或用户名发出的注册请求的频率 所以 一个用户在前一个注册之后 经过这个数量的秒数之前不能从相同IP地址或JID注册一个新帐号 Timeout被表示为秒数 并且必须是一个整数 要禁止此限制 把整数替换成单词 类似 infinity 缺省值为 600 秒 例子 下个例子禁止注册太短的帐号名 prohibits acl shortname user glob acl shortname user glob The same using regexp acl shortname user regexp access register deny shortname allow all modules mod register access register 这个配置禁止使用带内注册新建和删除帐号 但允许现有帐号修改密码 access register deny all modules mod register access register 这个配置禁止所有带内注册功能 新建 删除帐号和修改密码 modules mod register access register 定义一个欢迎信息和两个注册观察者 也定义一个注册超时为一小时 registration timeout 3600 modules mod register welcome message Welcome Hi nWelcome to this Jabber server n Check http www jabber org n nBye registration watchers admin1 example org boss example net mod roster 本模块实现名册管理 定义于 RFC 3921 XMPP IM 也支持 名册版本 XEP 0237 选项 iqdisc Discipline 这为名册管理 jabber iq roster IQ queries see section Ejabberd2 安装和操作指南 iqdisc 3 3 2 节 指定处理原则 versioning false true 激活名册版本 这个选项缺省是禁止的 store current id false true 如果激活这个选项 当前版本数量被存储在数据库 如果被禁止 版本数量在每次飞行计算 激活这个选项同时减少ejabberd和数据库的负载 任何情况下这个选项不影响客户端 该选项只是当允许名册版本时有用 该选项缺省是被禁止的 重要 如果你使用 mod shared roster 你必须禁止这个选项 这个示例配置允许使用当前id存储的名册版本 modules mod roster versioning true store current id true mod service log 本模块通过一个XMPP消息审计服务 例如Bandersnatch 增加了对最终用户的包进行记录的支持 所有用户包被封装在一个 route 元素里并发送给一个特定服务 们 选项 loggers Names 使用这个选项可以指定将接收包的一个 列表之一 服务 们 例子s 这是把所有的用户包记录到运行在bandersnatch example com的Bandersnatch 服务 modules mod service log loggers bandersnatch example com 这是把所有最终用户的包记录到运行在bandersnatch example com的Bandersnatch服务以及运行在bandersnatch example org的备份服务上 modules mod service log loggers bandersnatch example com bandersnatch example org mod shared roster 本模块允许你新建共享名册组 这意味着你可以新建人员组 组里的成员从他们的名册里的其他组也可以看到成员 这个功能的最大好处是最终用户不需要手工添加所有用户到他们的名册 并且他们不能永久性地从共享名册组删除用户 一个共享名册组可拥有来自任何XMPP服务器的成员 但是出席信息from和to将只在创建该组的相同的虚拟主机的成员之间可用 共享名册组只可以通过Web管理编辑 每个组有唯一标识符和以下参数 Name 组名 它将被显示在名册里 Description 组描述 这个参数不影响任何东西 Members 组成员的完整JIDs列表 在Web管理 里面每行一个 为了把虚拟主机上的所有注册用户设为成员 你可以使用特殊的参数 all 注意这个参数被设计用于一个只有几百用户的小服务器 Displayed groups 那些成员将出现在名册上的组的列表 例子 假设一个计算机俱乐部希望它的所有成员在他们的名册里看到所有其他成员 为了达到这点 他们需要建立一个共享名册组类似下表 Identification Group club members Name 俱乐部成员 Description 来自计算机俱乐部的成员 Members member1 example org member2 example org member3 example org Displayed groups club members 在另一个情况下 我们有一个公司 它有三个部门 管理部 市场部和销售部 所有组成员应该在他们的名册里看到其他成员 另外 所有经理应该在他们的名册里有所有市场部和销售部的人 同时 所有市场人员和全部销售队伍应该看到所有经理 这个场景可由新建以下共享名册组来达到 如下表所示 Identification Group management Group marketing Group sales Name 管理部 市场部 销售部 Description Members manager1 example org manager2 example org manager3 example org manager4 example org marketeer1 example org marketeer2 example org marketeer3 example org marketeer4 example org saleswoman1 example org salesman1 example org saleswoman2 example org alesman2 example org Displayed groups 管理 市场 销售 管理 市场 管理 销售 mod sic 本模块增加了对服务器IP检查 XEP 0279 的支持 这个协议允许客户端发现它的外部IP地址 选项 iqdisc Discipline 这为urn xmpp sic 0 IQ queries 见 3 3 2 节 定义了处理原则 mod stats This module adds support for Statistics Gathering XEP 0039 This protocol allows you to retrieve next statistics from your ejabberd deployment Total number of registered users on the current virtual host users total Total number of registered users on all virtual hosts users all hosts total Total number of online users on the current virtual host users online Total number of online users on all virtual hosts users all hosts online 选项 iqdisc Discipline 这为统计信息收集 http jabber org protocol stats IQ queries 见 3 3 2 节 定义了处理原则 因为只有少量的客户端 例如 Tkabber 和软件库支持这个 XEP 一些例子以 XML 方式给出 为了获得统计信息 你需要发送它 它们是 你可以请求当前虚拟主机 example org 的在线用户数量 iq to example org type get query xmlns http jabber org protocol stats stat name users online query iq 你可以请求所有虚拟主机上注册用户的总数量 iq to example org type get query xmlns http jabber org protocol stats stat name users all hosts total query iq mod time 本模块功能支持实体时间 XEP 0202 通过使用这个 XEP 你能发现另一个实体所在位置的时间 选项 iqdisc Discipline 这为实体时间 jabber iq time IQ queries 见 3 3 2 节 定义了处理原则 mod vcard 本模块允许最终用户存储和接收他们的电子名片vCard 以及接收别的用户的电子名片vCards 定义于 vcard temp XEP 0054 这个模块也实现了一个基于这些用户的vCards的简单的Jabber用户目录 进一步的 当收到请求时它允许服务器发送它自己的名片vCard 选项 host HostName 这个选项定义该服务的Jabber ID

    Original URL path: http://wiki.jabbercn.org/Ejabberd2:%E5%AE%89%E8%A3%85%E5%92%8C%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97 (2016-04-25)
    Open archived version from archive

  • Jabberd2:安装和管理指南 - Jabber/XMPP中文翻译计划
    pass secret pass mysql 注意只有你的MySQL服务器运行在另一个主机上你才应该修改host设置 只有你的MySQL服务器运行在一个非标准端口 3306是MySQL安装后的缺省端口 你才应该修改port设置 你的Jabberd 2的存储和验证配置现在完成了 在转移到其他配置任务 例如 第五章 的配置SSL 之前 跳到 测试服务器 去开始测试你的服务器 以PDF格式查看 提供和配置PostgreSQL PostgreSQL 和MySQL一样 提供一个非常易于管理的后端用于存储和验证 和MySQL不同的是 PostgreSQL提供了更好的 unicode支持 提供PostgreSQL 如果你使用PostgreSQL存储 和 或 验证请完成本节 为了给Jabberd配置PostgreSQL 你必须新建一个数据库 新建一个PostgreSQL用户并运行Jabberd 2分发包里带的PostgreSQL脚本 为Jabberd新建数据库 PostgreSQL服务器应该已经在运行 createdb U postgres jabberd2 以上命令讲新建一个数据库 你可以在那个数据库运行接哦本来安装Jabberd PostgreSQL数据库 N 注意 Unicode支持 如果你希望为你的PostgreSQL数据库激活Unicode支持 把以上命令修改如下 createdb U postgres E UNICODE jabberd2 P 参数 PostgreSQL用户名和密码 新建你的Jabberd数据库用户 输入以下命令 createuser P U postgres jabberd2 这个命令将初始化一个交互用户创建脚本 当看到提示 输入将来用于连接到你的PostgreSQL数据库的Jabberd的密码 Enter password for user jabberd2 Enter it again Shall the new user be allowed to create databases y n n Shall the new user be allowed to create more new users y n n CREATE USER CREATE USER 信息表示命令执行成功 在你的jabberd用户创建之后 你已经准备好运行PostgreSQL安装脚本了 这个脚本位于 Jabberd Source Files tools 切换到 tools 目录并以jabberd2用户身份启动PostgreSQL控制台 psql U jabberd2 jabberd2 然后 从PostgreSQL控制台运行 db setup pgsql 脚本 jabberd2 i db setup pgsql PostgreSQL现在准备好用于Jabberd了 配置存储使用PostgreSQL sm xml 如果你使用PostgreSQL存储 请完成本节 大多数使用PostgreSQL存储的安装只需要设置驱动 用户和密码 在 sm xml 里标为 Storage database configuration 的段落下 确保 driver 是用 pgsql PostgreSQL Storage database configuration storage By default we use the MySQL driver for all storage driver pgsql driver P 参数 PostgreSQL用户名和密码 在 sm xml 里标为 PostgreSQL driver configuration 的段落下 把 secret 替换成你的PostgreSQL密码 如果你不使用缺省用户 jabberd2 则还要修改用户名 PostgreSQL driver configuration pgsql Database server host and port host localhost host port 5432 port Database name dbname jabberd2 dbname Database username and password user jabberd2 user pass secret pass Transaction support If this is commented out transactions will be disabled This might make database accesses faster but data may be lost if jabberd crashes transactions pgsql 注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置 只有你的PostgreSQL服务器运行在一个非标准端口 5432是PostgreSQL安装后的缺省端口 你才应该修改port设置 transaction support 段落则是不言自明的了 现在Jabberd 2已经配置成使用PostgreSQL来存储了 如果你希望使用一个不同于PostgreSQL的验证包 跳到你选择的验证包 提供和配置PAM 提供和配置OpenLDAP 否则 继续到 4 5 3 直接往下完成你的Jabberd 2配置 配置验证使用PostgreSQL c2s xml 如果你使用PostgreSQL来验证 请完成本节 Jabberd 2对于PostgreSQL验证配置的要求同上 除了包含在 c2s xml 的信息 在 c2s xml 的 Authentication registration database configuration 验证 注册 数据库配置 段落 确保 driver 使用pgsql PostgreSQL Authentication registration database configuration authreg Backend module to use module pgsql module P 参数 PostgreSQL用户名和密码 在 c2s xml 的 PostgreSQL module configuration 段落 把 secret 替换成你的PostgreSQL密码 如果你不使用缺省用户 jabberd2 则还要修改用户名 PostgreSQL module configuration pgsql Database server host and port host localhost host port 5432 port Database name dbname jabberd2 dbname Database username and password user jabberd2 user pass secret pass pgsql 注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置 只有你的PostgreSQL服务器运行在一个非标准端口 5432是PostgreSQL安装后的缺省端口 你才应该修改port设置 你的Jabberd 2的存储和验证配置现在完成了 在转移到其他配置任务 例如 第五章 的配置SSL 之前 跳到 测试服务器 去开始测试你的服务器 以PDF格式查看 提供和配置PAM PAM Linux的可插拔验证模块 为Jabberd 2提供内建的验证支持 提供PAM 如果你使用PAM验证请完成本节 通过PAM验证需要一个有效的PAM配置文件 jabberd 对于多数系统 这个配置文件应该位于 etc pam d 创建 Jabberd PAM配置文件超出了本指南的范围 无论如何 创建这个配置文件有个捷径 拷贝 system auth 配置文件到 jabberd 以root身份 cp etc pam d system auth etc pam d jabberd 这将新建一个PAM配置文件给Jabberd2使用 I 重要 PAM验证需要访问PAM数据库 通过PAM做Jabberd验证需要Jabberd2有权访问PAM数据库 对多数系统 该数据库就是 etc shadow 文件 因此 Jabberd2必须以root身份运行 或jabberd用户必须被授予对此文件的读权限 以root身份运行Jabberd2服务是不推荐的 N 注意 Winbind可用于集成NT验证到PAM 来自Samba项目的Winbind包可被用于支持通过Windows NT做Jabber验证 当Winbind成功安装并配置之后 配置Jabberd使用PAM来验证 然后新建jabberd PAM配置文件如下 auth required pam winbind so password required pam winbind so account required pam winbind so session required pam winbind so PAM现在准备好用于Jabberd了 接下来开始配置通过PAM做Jabberd 2验证 配置验证使用PAM c2s xml 如果你使用PAM来验证 请完成本节 Jabberd 2需要一点配置来使用PAM 在 c2s xml 的 Authentication registration database configuration 验证 注册 数据库配置 段落 编辑 module 使用pam Authentication registration database configuration authreg Backend module to use module pam module 用户不能创建他们自己的帐号当使用PAM验证时 所以 应该禁止公开帐号注册 同时激活 auto create 这样会话管理器可以在用户第一次登录时自动创建帐号 在 c2s xml 里的 Authentication registration database configuration 段落里查找 Registration configuration 子段落 如下注释掉 enable 标签将禁止公开注册 Registration configuration register Account registration is enabled by default provided the auth reg module in use supports it Comment this out to disable enable 在 sm xml 里标为 User options 的段落 靠近文件底部 如下取消注释 auto create 标签 这样会话管理器将在用户初次登录时创建一个信的Jabberd2帐号 User options user By default users must explicitly created before they can start a session The creation process is usually triggered by a c2s component in response to a client registering a new user Enableing this option will make it so that a user create will be triggered the first time a non existant user attempts to start a session This is useful if you already have users in an external authentication database eg LDAP and you don t want them to have to register auto create 你的Jabberd 2的存储和验证配置现在完成了 前提是你得提供和配置好存储包 在转移到其他配置任务 例如 第五章 的配置SSL 之前 跳到 测试服务器 去开始测试你的服务器 以PDF格式查看 提供和配置OpenLDAP OpenLDAP 提供分布式跨平台跨地区的验证支持 Jabberd 2要求的最低版本是OpenLDAP 2 1 0 提供OpenLDAP 如果你使用OpenLDAP验证请完成本节 你安装的OpenLDAP应该不需要为Jabberd 2特别配置 无论如何 在撰写本文的此刻 Jabberd 2稳定版3 关于使用Jabberd连接OpenLDAP v3服务器有一个重要的问题 目前Jabberd 2使用v2的语法 缺省的 OpenLDAP v3服务器要求使用v3语法 有一个办法来解决这个问题 添加以下声明到你的 slapd conf 文件 并重启你的 slapd 守护进程 allow bind v2 配置验证使用OpenLDAP c2s xml 如果你使用OpenLDAP来验证 请完成本节 OpenLDAP配置更详细 因为配置需要主机 连接以及查询设置 在 c2s xml 的 Authentication registration database configuration 验证 注册 数据库配置 段落 编辑 driver 使用ldap OpenLDAP Authentication registration database configuration authreg Backend module to use module ldap module P 参数 LDAP连接设置 在 c2s xml 的 LDAP module configuration 的第一个部分处理连接你的OpenLDAP服务器所需要的设置 host 必须要么是这个OpenLDAP服务器的可以被服务器解析的主机名要么是它的IP地址 端口389是OpenLDAP服务器的缺省端口 所以大部分情况下 port 应该放在那不动 v3 标签指明你的OpenLDAP服务器是否v3版本 如果是 取消这个标签的注释 如果使用OpenLDAP v2服务器则保留注释 v3 标签 最后 如果你的服务器支持加密 参见下面的备注 则取消注释 starttls 或 ssl 标签 LDAP module configuration ldap LDAP server host and port default 389 host ldap example com host port 389 port Use LDAP v3 if possible If disabled v2 will be used Encryption options are only available if v3 is enabled v3 Encryption If enabled this will create an encrypted channel to the LDAP server using the LDAP STARTTLS mechanism starttls Encryption If enabled this will create an encrypted channel to the server using the old style ldaps mechanism It is recommended that you use starttls instead of this ssl I 重要 密码是明文传送的 目前本本的Jabberd 2 stable 3 通过OpenLDAP验证时需要使用明文密码 所以 允许加密是绝对重要的 如上所述 加密选项只在连接OpenLDAP v3服务器时有效 N 注意 加密选项 作者已经成功的使用Jabberd 2和STARTTLS连接到一个OpenLDAP服务器的最新版本 STARTTLS运行于标准端口 389 所以允许STARTTLS需要做的就是取消注释 v3 和 starttls 标签 另一方面 作者未能成功的使用SSL加密连接Jabberd 2和OpenLDAP 要设置SSL 你应该指定OpenLDAP SSL 主机名 如果不同于 非SSL 主机名 通常类似于 ldaps example com 更重要的是 你应该指定SSL端口 OpenLDAP的标准SSL端口 LDAPS 是636 最后 你应该取消注释 ssl 标签 P 参数 OpenLDAP用户名和密码 OpenLDAP配置的下一部分处理查询OpenLDAP服务器的用户名和密码 只有你的OpenLDAP服务器不允许为必需的搜索匿名绑定 验证 的时候才需要一个用户名和密码 如果你的OpenLDAP服务器的连接要求验证取消注释这个段落 注意 binddn 是用户的完整RDN 相对可分辨名称 可能类似于 cn admin ou people dc example dc com DN to bind as for searches If unspecified the searches will be done anonymously binddn cn Directory Manager binddn bindpw secret bindpw P 参数 LDAP查询设置 最后 必须为OpenLDAP查询设置用户ID和基础DN 用户ID由 uidattr 标签指定 这个ID应该是你的用户在特定基础DN 可分辨的名称 的唯一性标识的属性 换句话说 当查询指定的基础DN时 这个特定的 uidattr 应该是唯一性地标识每个用户 basedn 属性指定查询运行的基础 这可能是该OpenLDAP服务器的顶级DN 例如 dc example dc com 或着它可能是一个专门存放用户条目的RDN 例如 ou people ou sales dc example dc com 使用一个低级的RDN好像可以加速OpenLDAP查询 最后 如果你的配置要求多个域 你可以在 basedn 标签使用 realm 属性 为每个域指定一个基础DN 注意如果你没有使用多个域 就只需要指定一个单独的 basedn 而不需要 realm 属性 LDAP attribute that holds the user ID default uid uidattr uid uidattr base DN of the tree You should specify a DN for each authentication realm declared in the local section above by using the realm attribute basedn realm company o Company com basedn basedn o Example Corp basedn ldap 以下是一个笔者工作中的OpenLDAP配置的展示 LDAP module configuration ldap LDAP server host and port default 389 host ldap mydomain org host port 389 port Use LDAP v3 if possible If disabled v2 will be used Encryption options are only available if v3 is enabled v3 Encryption If enabled this will create an encrypted channel to the LDAP server using the LDAP STARTTLS mechanism starttls Encryption If enabled this will create an encrypted channel to the server using the old style ldaps mechanism It is recommended that you use starttls instead of this ssl DN to bind as for searches If unspecified the searches will be done anonymously binddn cn admin dc mydomain dc org binddn bindpw snip bindpw LDAP attribute that holds the user ID default uid uidattr uid uidattr base DN of the tree You should specify a DN for each authentication realm declared in the local section above by using the realm attribute basedn ou people ou design dc mydomain dc org basedn ldap 当使用OpenLDAP验证时用户不能创建他们自己的帐号 所以 应该禁止公开帐号注册 同时激活 auto create 这样会话管理器可以在用户第一次登录时自动创建帐号 在 c2s xml 里的 Authentication registration database configuration 段落里查找 Registration configuration 子段落 如下注释掉 enable 标签将禁止公开注册 Registration configuration register Account registration is enabled by default provided the auth reg module in use supports it Comment this out to disable enable 在 sm xml 里标为 User options 的段落 靠近文件底部 如下取消注释 auto create 标签 这样会话管理器将在用户初次登录时创建一个信的Jabberd2帐号 User options user By default users must explicitly created before they can start a session The creation process is usually triggered by a c2s component in response to a client registering a new user Enableing this option will make it so that a user create will be triggered the first time a non existant user attempts to start a session This is useful if you already have users in an external authentication database eg LDAP and you don t want them to have to register auto create 你的Jabberd 2的存储和验证配置现在完成了 前提是你得提供和配置好存储包 在转移到其他配置任务 例如 第五章 的配置SSL 之前 跳到 测试服务器 去开始测试你的服务器 以PDF格式查看 测试服务器 设置好主机名 提供了外部包 并配置Jabberd使用外部包之后 你的服务器已经准备好测试了 C 检查点 启动你的服务器 你应该可以使用Jabberd 2启动脚本 以你的jabber用户身份 启动并测试你的Jabberd 2服务器 su su jabber cd usr local bin jabberd N 注意 疑难解答 如果Jabberd无法启动 确保任何之前的实例已经停止 这些实例包括所有Jabberd运行时组件 jabberd router resolver sm s2s 和 c2s 注意你的jabber用户 如果按第二章的说明创建了的话 可能没有缺省路径 所以 你应该 cd 到 usr local bin 目录并如上运行 jabberd 检查你选择的数据包服务器是否正常运行 除了Berkeley DB 它不需要启动 检查你的 syslog 查看错误信息 如果你的服务器启动失败 你可以用debug选项启动Jabberd 2 注意这需要在编译Jabberd 2时带上debug选项 参见 3 3章 usr local bin jabberd D I 重要 Jabberd 2不应该用超级用户运行 和所有守护进程一样 Jabberd 2不应该以超级用户身份运行 以超级用户身份运行Jabberd 2不仅对系统有破坏的风险 而且可能导致创建文件许可的问题 N 注意 公开注册 Jabberd2缺省允许新用户公开注册 因此 测试你的服务器时 你能通过使用新用户名登录来新建一个用户 C 检查点 从同网络的一台机器连接 一旦你检查你的服务器已经正常启动 尝试从一个同网络的机器连接 在一个Jabber客户端 输入一个JID Jabber ID 使用你在 4 1章 sm xml 设置的ID 并尝试连接到你的服务器 C 检查点 从远程网络的客户端连接 如果你可以从同网络连接到你的服务器 那么使用一个Jabber客户端从一个远程网络连接它 这将测试那个 id 是否正确设以及机器名是否正确的进行DNS解析 你的Jabberd 2服务器现在准备好使用了 继续到 常规配置任务 了解更详细的配置选项 例如允许SSL连接等 以PDF格式查看 常规配置任务 在进入详细的Jabberd配置之前 这里尝试为大部分常规的Jabberd配置任务提供一个指南 为互联网访问配置防火墙 配置Jabberd 2使用SSL连接 修改Router密码 创建管理员用户 禁止公开注册 允许用户修改密码 设置DNS SRV记录 使用Jabberd 1 4连接外部服务 使用JCR连接外部服务 安装一个使用Users Agent的JUD 集成vCard数据到Users Agent 仅限私有服务器 注意有两个选项用于连接Jabberd 1 4外部服务到你的Jabberd 2安装 Jabberd 2可以连接到服务例如会议和网关 运行一个Jabberd 1 4进程 另外 一个名为JCR的组件封装器已经发布了 这个封装器允许一个Jabber 1 4组件 用C写的 被编译后以Jabberd 2服务运行 本文撰写期间 JCR只和MU Conferencing测试通过了 为互联网访问配置防火墙 尽管防火墙配置超出了本文范围 管理员应该注意TCP端口需要被允许通过互联网访问 端口 5222 非SSL客户端通讯 端口 5223 SSL客户端通讯 端口 5269 服务器间通讯 如果你的Jabberd 2安装是用于互联网访问 根据你的配置 以上TCP端口应该被允许 配置Jabberd 2使用SSL连接 Jabberd 2不仅为Jabberd客户端和服务器之间提供STARTTLS和SSL连接 而且在Jabberd服务组件 sm resolver s2s 和 c2s 和Jabberd router 之间也提供 这两个功能 Jabber客户端到Jabberd以及Jabberd组件到router 可以共用一个SSL证书 也可以使用独立的密钥 如何为Jabberd 2创建你自己的自签名证书 参见附录 生成自签名的SSL证书 N 注意 自签名证书是不被信任的 注意自签名证书不会自动被Jabber客户端信任 因为没有信任链来验证授权 然而 新建一个自签名证书不仅让你的Jabber用户可以通过一个安全通道连接 客户端可能会显示一个警告 而且这样一个证书将为5个Jabberd组件 router sm resolver s2s 和 c2s 之间提供安全通讯 N 注意 添加证书到PSI Jabber客户端 我已经写了一个脚本接收和添加自签名证书到PSI客户端证书仓库 它在 tools目录 的 这里 并且已经生效 分配一个用于Jabber客户端的证书 用于Jabber客户端的SSL密钥的配置位于 c2s xml 注意 c2s xml 包含用于Jabber客户端的SSL密钥的位置和用于 c2s 到 router 通讯的SSL密钥的位置 P 参数 SSL密钥位置 在标为 Local network configuration 的位置取消注释 pemfile 你的SSL密钥 并把它改成你的SSL密钥的路径 注意如果你的PEM文件在缺省位置 usr local etc jabberd server pem 你只需要取消注释以下这个段落 File containing a SSL certificate and private key for client connections If this is commented out clients will not be offered the STARTTLS stream extension pemfile usr local etc jabberd server pem pemfile 以上修改将在5222端口激活STARTTLS 旧的Jabber客户端使用5223端口来进行SSL通讯 如果你希望在5223端口支持SSL 取消注释 ssl port 标签 ssl port 5223 ssl port 你的服务器现在准备好STARTTLS SSL连接了 你只需要重启C2S组件就可以使SSL的配置变更生效了 N 注意 禁止非STARTTLS通讯 强制要求STARTTLS通讯 取消注释 require starttls 标签 如下 Require STARTTLS If this is enabled clients must do STARTTLS before they can authenticate Until the stream is encrypted all packets will be dropped require starttls 分配一个用于Jabberd组件的证书 5个Jabberd组件都要各自配置 组件到路由器 的加密通讯 因此 这5个配置文件都必须修改并提供Jabberd组件之间的安全通讯 router xml sm xml resolver xml s2s xml c2s xml P 参数 SSL密钥位置 在以上每一个文件中 取消注释 pemfile 标签用于路由器通讯 在 router xml 文件 pemfile 被定义在标为 Local network configuration 的段落 在以上剩下的四个配置文件的每个文件里面 pemfile 定义于标为 Router connection configuration 的段落 取消注释这个段落并修改它指向你的SSL密钥的位置 例如 你讲修改 c2s xml 如下 如果你的SSL密钥使用缺省路径 Router connection configuration router IP port the router is waiting for connections on ip 127 0 0 1 ip default 127 0 0 1 port 5347 port default 5347 Username password to authenticate as user jabberd user default jabberd pass secret pass default secret File containing a SSL certificate and private key to use when setting up an encrypted channel with the router If this is commented out or the file can t be read no attempt will be made to establish an encrypted channel with the router pemfile usr local etc jabberd server pem pemfile 重启你的Jabberd服务使配置变更生效 修改Router密码 Jabberd配置文件包含了组件连接到路由器的密码 因为组件和路由器之间的通讯是通过TCP IP上的XML实现的 这些密码帮助确保只有你安装的组件可以和路由器通讯 配置文件 router users xml 包含了允许连接到路由器的ID和密码 缺省的ID是 jabberd 密码是 secret 另外 每个组件 除了 router 在它的配置文件里都有一个用户ID和密码 这个ID和密码配合给各自的组件用来连接 router 因此 对一个可以连接到路由器的组件来说 该组件的配置文件里必须有一个用户名和密码组合 并且那个组合必须和 router users xml 的ID和密码组合匹配 为了给Jabberd安装你的提高安全性 你应该修改密码 这包括修改 router users xml 以及 sm xml resolver xml s2s xml 和 c2s xml P 参数 Router用户名和密码 为了修改路由器验证用的密码 首先修改 router users xml 如下 用新密码替换掉 newpass users user name jabberd name secret newpass secret user users 然后 修改 sm xml resolver xml s2s xml 和 c2s xml 中的密码 在每个文件中的 router 段落有一些标签是给路由器用户的 修改密码如下 用新密码替换掉 newpass Router connection configuration router IP port the router is waiting for connections on ip 127 0 0 1 ip default 127 0 0 1 port 5347 port default 5347 Username password to authenticate as user jabberd user default jabberd pass newpass pass default secret 重启你的Jabberd服务器使变更生效 N 注意 允许多密码 注意如果你需要 可以为每一个组件分配一个用户和ID N 注意 如果用户变更那么 router xml 必须修改 注意以上只描述了如何修改路由器密码 如果 router users xml 中的用户名修改了 那么 router xml 中的 acl 段落也必须修改 Access control information aci The usernames listed here will get access to all restricted functions regardless of restrictions further down acl type all user jabberd user acl 创建管理员用户 管理员用户的设置位于 sm xml 文件的 aci 段落 缺省的管理员用户为 admin localhost 为了让管理员用户能远程操作 把 jid 改成一个你自己拥有的用户如下 acl type all jid admin lsomedomain com jid acl 你也可能需要从Jabber客户端手工来创建这个用户 登录后 该管理员用户将接收到用户创建的提示 并且他也将能查询到所有在线用户 接收帮助请求 发送 MOTD 当日消息 等等 注意以上用户被授权访问所有管理功能 你可以通过指定 acl 类型来给用户赋予一些特定的管理权限 参见 sm xml 文件里的例子 重启你的 Jabberd 服务使得修改生效 禁止公开注册 缺省情况下 Jabberd 允许所有用户公开注册 也就是说能连上你的服务器的任何用户可以在你的服务器上创建他们自己的 Jabberd 用户 为了阻止公开注册 编辑 c2s xml 配置文件 在 Authentication registration database configuration 段落 寻找 Registration configuration 子段落 注释掉 enable 标签将禁止公开注册 Authentication registration database configuration authreg Backend module to use module mysql module Registration configuration register Account registration is enabled by default provided the auth reg module in use supports it Comment this out to disable enable 如果配置使用了 PAM 或 OpenLDAP 那么应该禁止公开注册 因为 Jabberd 2 不支持通过 PAM 或 OpenLDAP 进行公开注册 允许用户修改密码 在 Jabberd 2 里用户修改密码缺省是被禁止的 为了允许你的用户修改他们自己的密码 在 c2s xml 文件中取消注释 authreg 段落里的 password 标签 Authentication registration database configuration authreg Backend module to use module mysql module Registration configuration register Account registration is enabled by default provided the auth reg module in use supports it Comment this out to disable enable Human readable instructions to be returned to client when registration is requested instructions Enter a username and password to register with this server instructions Password change only When registration is disabled it may still be useful to allow clients to change their password If you want this uncomment this when you disable registration password 注意当使用 PAM 或 OpenLDAP 验证的时候这个配置将不能生效 因为这些包不允许通过 Jabberd 修改密码 重启你的 Jabberd 服务以使修改的配置生效 设置DNS SRV记录 Jabberd 2 以及其他Jabber客户端和服务器 能够使用 DNS SRV 记录用户主机名解析 DNS SRV 记录允许服务 通过端口 委托给其他主机 所以 如果你希望你的Jabber服务器运行在一个非主要域主机的机器上 你可能会愿意设置 DNS SRV 记录来委托Jabber客户端和服务器服务到另一个或多个主机 N 注意 SRV 记录只对 非主要 主机是必要的 注意 只有你的Jabberd服务运行在一个和主要域主机不同的机器上并且你不希望在你的Jabber ID 里包含该主机 机器 的名称的时候 DNS SRV 记录才是必要的 例如 如果一个 DNS 查询 somedomain com 解析到 host1 somedomain com 而你的 Jabberd 服务器运行在 host1 那么 SRV 记录就不必要了 Jabberd使用SRV记录 对于一个 Jabberd 安装 可以创建三个SRV记录 jabber tcp domain host domain 5269 xmpp server tcp domain host domain 5269 xmpp client tcp domain host domain 5222 第一和第二个记录指定用于服务器间 s2s 通讯的主机和端口 之所以有两个记录 是因为新的XMPP协议 对于SRV记录 已经取代了旧的Jabber标准 第三个记录指定用于不加密的客户端 c2s 通讯的主机和端口 在 Bind 里创建SRV记录 以下例子是在 BIND 服务器创建一组SRV记录 jabber tcp some domain com 86400 IN SRV 5 0 5269 host some domain com xmpp server tcp some domain com 86400 IN SRV 5 0 5269 host some domain com xmpp client tcp some domain com 86400 IN SRV 5 0 5222 host some domain com 把 some domain com 替换成你的域名 把主机的名字换成你的主机名 并且不要忘记在域名后面的那个 在 TinyDNS 里创建SRV记录 TinyDNS没有SRV记录格式 然而 你可以使用 Rob Mayoff 的 TinyDNS Record Maker 来创建 TinyDNS SRV 记录 这些 TinyDNS SRV 记录被创建用于主机 host some domain com 使用优先级为 10 以及 权重为 0 jabber tcp some domain com 33 000 012 000 000 024 225 004host 013some domain 003com 000 xmpp client tcp some domain com 33 000 012 000 000 024 146 004host 013some domain 003com 000 xmpp server tcp some domain com 33 000 012 000 000 024 225 004host 013some domain 003com 000 使用 TinyDNS Record Maker 创建一组记录加入到 TinyDNS 数据文件中 测试SRV记录 一旦你的DNS服务器正确地更新之后 你应该使用Dig测试列出的那些srv 例如 为了测试条目 jabber tcp some domain com 使用DNS服务器 my dns server com 你可以键入以下命令 dig my dns server com jabber tcp some domain com any short 从你的DNS SRV记录查询得到的结果应该如下 10 0 5269 host some domain com 使用Jabberd 1 4连接外部服务 本章描述如何使用一个现有的 Jabberd 1 4 服务器连接外部Jabberd 1 4服务 例如网关和代理 到Jabberd 2 参见下一章 使用 JCR 组件连接外部服务 参见 附录11 初步了解Jabberd 2如何使用Jabberd 1 4x进程来运行一个代理 这里假定读者已经很熟悉 Jabberd 1 4 也就是一个正在使用中的 Jabberd 1 4 安装 Jabberd 1 4 的安装和配置超出了本文的范围 不过 对此已经有很多好的资源存在 包括 Jadmin Archive 和 Jabberd 1 4x管理指南 把Jabberd连接到一个外部服务和把Jabberd 1 4连接到服务很相似 不过从Jabberd 2连接到一个Jabberd 1 4服务有很多重要的不同 连接配置文件必须有一个 XDB段落 连接配置文件必须有一个 Log段落 连接配置文件必须指定 Router的IP地址和端口 连接配置文件和router配置文件必须共享一个密码 router xml文件必须包含一个 服务的别名 另外 如果组件不支持查询 disco sm xml 里面应该有服务的名字空间 例如 MU Conference 支持查询 所以不需要在 sm xml 配置它的条目以使该服务能够被浏览 另一方面 JUD Jabber用户目录 不支持查询 所以 需要在 sm xml 里配置它的条目以使 JUD 可以被用户浏览到 参见 sm xml 例子 下面的子段落描述了如何配置一个David Sutton为Jabberd 1 4 写的 MU Conference 包括一个运行中的 MU Conference 的配置文件 去 MU Conference 获得下载以及更多关于这个组件的信息 MU Conference 为Jabberd提供了一个多用户聊天室服务 XDB段落 运行一个Jabberd 1 4的网关或代理时 主Jabberd进程处理XDB和logging函数 运行Jabberd 2组件时不是这样 反之 组件应该运行在它自己的进程里 并且组件应该自己处理它本身的XDB和logging函数 也就是说外部组件应该运行在一个自包含的进程中 但是 如果你有一个用于连接Jabberd 1 4服务器的外部组件 你应该添加一个 XDB 段落到该服务的配置文件 xdb id xdb host conference somedomain com host load xdb file usr local jabber xdb file xdb file so xdb file load xdb file xmlns jabber config xdb file spool usr local var spool jabber spool xdb file xdb 以上 XDB 段落指定了 hostname 装载的XDB模块 以及写spool的文件位置 Log段落 如上所示 组件配置文件也必须包含一个日志段落 你可以为你连接的组件添加一个段落到配置文件 如下 log id muclog file usr local var jabberd log muc log file host logtype format d t h s format log 在这个例子里是一个 MU Conference 网关 我已经在上面指定日志为 muc log 每个服务应该有一个独立的日志文件 Router的IP地址和端口 连接的组件应该指定 router 监听的IP地址和端口 router 的缺省端口是 5347 所以相关配置文件的 id 段落的开头应该类似这样 service id muclinker uplink connect ip 192 168 0 2 ip IP Address of Router here port 5347 port 共享密码 Jabberd 2 服务器为每个组件连接使用一个密码 这个密码类似Jabberd 1 4里的共享密码 继续上述例子 你应该为你使用的外部组件创建一个密码 在 Jabberd 2里 所有外部组件共享和 router 相同的密码 这个密码 或者 secret 必须在你的连接组件的配置文件中指定 service id muclinker uplink connect ip 192 168 0 2 ip IP Address of Router here port 5347 port secret ComponentPass secret connect service 这个 secret 也必须在你的 router xml 文件中指定 该 secret 应该在标为 local network configuration 的位置 Local network configuration local IP address to bind to default 0 0 0 0 ip 0 0 0 0 ip Port to bind to default 5347 port 5347 port File containing the user table This is where the router gets its component and secret information from for component authentication users usr local etc jabberd router users xml users Shared secret used to identify legacy components that is jabber component accept components that authenticate using the handshake method If this is commented out support for legacy components will be disabled secret ComponentPass secret Router别名 router xml 文件也必须包含用于连接的组件的别名 而且 router xml 文件提供了一个连接到MSN代理的例子 为你连接的组件添加一个别名 继续上面的例子 这个别名将在 router xml 文件中设置 Name aliases Packets destined for the domain specified in the name attribute will be routed to the component that has currently bound the name in the target attribute assuming it is online This is usually only required for some kinds of legacy components particularly jabberd 1 4 uplink components aliases Example for a msn transport running from a jabberd 1 4 uplink alias name msn domain com target msn linker alias name conference somedomain com target muclinker aliases 注意别名参考了组件的DNS解析名 并且 target 参考了连接组件的XML文件中的 service id 参见 5 5 4 例子 muc xml 下面是一个运行中的 muc xml 文件 用于 MU Conferencing jabber service id muclinker uplink

    Original URL path: http://wiki.jabbercn.org/Jabberd2:%E5%AE%89%E8%A3%85%E5%92%8C%E7%AE%A1%E7%90%86%E6%8C%87%E5%8D%97 (2016-04-25)
    Open archived version from archive

  • Openfire:安装指南 - Jabber/XMPP中文翻译计划
    或之后安装到你的系统里 你可以在命令行键入 java version 来检查你的java版本 然后 如果必要 访问 http java sun com 更新你的Java安装 安装概述 为了完成Openfire的安装 你需要执行以下步骤 数据库 如果你选择使用一个外部数据库 你必须准备为Openfire准备好你的数据库 安装 使用内置的基于web的安装工具来安装和验证服务器的配置 管理控制台 使用基于web的管理工具来管理服务器 本文也包括以下信息 在Windows下运行 在Unix Linux下运行 安装和使用插件 分发版里的文件 你的分发版里的文件应该像下面这样 为了简短一点 一些子目录被忽略了 openfire readme html license html conf bin jre lib plugins admin resources database security documentation conf 目录Openfire用来存放配置文件 bin 目录包含了服务器的可执行文件 根据你安装的不同分发版 可用的执行文件也不同 jre 目录包含了一个 Java 5 虚拟机 打包在Windows和RPM版本Openfire里面的 lib 目录包含了运行Openfire所需要的库 plugins 目录包含了服务器插件 缺省地 Openfire带了一个基于web的管理控制台插件 resources database 目录包含 SQL 架构文件 用来新建Openfire数据库 以及已有安装的更新脚本 resources security 目录是Openfire维护keystores的地方 用来支持SSL连接安全性 documentation 目录包含了服务器文档 安装数据库 Openfire能把它的数据存储在一个嵌入式的数据库里 你也能选择使用一个外部数据库 例如MySQL或Oracle 如果你喜欢使用外部数据库 你必须在开始安装之前准备好它 更多信息见 数据库安装 安装服务器 Openfire內建了一个基于web的 向导 驱动的安装和配置工具 简单地启动Openfire 分平台的指引如下 并使用浏览器连接到管理控制台 基于web的管理控制台的缺省端口是9090 如果你和Openfire在同一台机器 以下URL通常会起作用 http 127 0 0 1 9090 管理控制台 在完成上述步骤之后 Openfire将被配置 你可以用基于web的管理控制台管理服务器 URL应该和你用来安装服务器用的那个一样 除非你在安装期间修改了那个端口 在Windows下运行Openfire 如果你使用了Openfire安装包 在你的开始菜单里会有一个快捷方式来启动图形化启动器 否则 在你的 Openfire 安装位置的 bin 目录运行 openfire exe 在启动界面上有一个按钮 允许你自动打开你的web浏览器连接正确的URL来完成服务器的安装 Windows服务 如果你正在Windows下运行Openfire 你或许想在初始化安装之后把Openfire作为一个标准的Windows来运行 如果你使用Windows安装包 一个 openfire service exe 文件将会出现在安装目录下的 bin 目录 你可以使用这个可执行文件来安装和控制Openfire服务 从控制台窗口 你可以运行以下命令 openfire service install 安装服务 openfire service uninstall 卸载服务 openfire service start 启动服务 openfire service stop 停止服务 你也可以在Windows控制面板使用服务工具来启动和停止服务 注意 那个图形化的启动器目前和Windows服务还不兼容 如果你安装了服务 你应该使用上述的服务控制台来控制服务而不是这个图形启动器 自定义参数 高级用户可能希望传递参数到Java虚拟机 VM 来定制Openfire的运行时环境 你可以在你的Openfire安装目录下的 bin 目录建立 vmoptions 文件来做到这一点 对于 Windows服务 你要建一个新文本文件 名为 openfire service vmoptions 每个给VM的参数应该独立占用文件中的一行 例如 设置最小堆栈大小为 512 MB 和最大 VM 堆栈为 1024 MB 你可以用 Xms512m Xmx1024m 要新建参数给普通的启动器 新建一个文件 名为 openfired vmoptions 因为 openfire exe 启动器会调用 openfired exe 可执行文件来实际地启动服务器 在Linux Unix下运行Openfire 如果你正在一个 Red Hat 或类 Red Hat 的系统上运行 CentOS Fedora 等等 我们建议使用RPM 因为它包含一些标准的类Red Hat环境的自定义处理 假设你使用了RPM 你可以使用 etc init d openfire 脚本启动和停止Openfire etc init d openfire Usage etc init d openfire start stop restart status condrestart reload etc init d openfire start Starting openfire 如果你正在一个不同的Linux Unix变种下运行 并且 或你使用了tar gz 安装包 你可以使用你的Openfire安装目录下的 bin openfire 脚本启动和停止Openfire openfire Usage openfire start stop openfire start Starting openfire 如果你想把Openfire安装成一个服务 在 bin extra 目录提供了两个脚本 redhat postinstall sh 自动把Openfire安装为Red Hat的服务 它会新建一个 jive 用户 然后拷贝 openfired 脚本到你的 init d 目录 这个脚本必须以root身份来运行 更多信息请看脚本里的注释 openfired 把Openfire当成服务运行的脚本 你必须手工配置这个脚本 更多信息请看脚本里的注释 如果你通过RPM安装 不推荐你使用这些脚本 RPM已经把这些脚本照顾得很好了 自定义参数 你可以在你的Openfire安装目录下的 bin 目录建立 vmoptions 文件来做到这一点 对于 Windows服务 你要建一个新文本文件 名为 openfire service

    Original URL path: http://wiki.jabbercn.org/Openfire:%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97 (2016-04-25)
    Open archived version from archive



  •