Gromox
Gromox 是 grommunio 的核心群件服务器组件。它能够作为 Microsoft Exchange 的即插即用替代方案。 连接选项包括 RPC/HTTP(Outlook Anywhere)、MAPI/HTTP、EWS、IMAP、POP3、 支持 SMTP 的 LDA,以及包含 MAPI 功能子集的 PHP 模块。组件可以 在多台主机上进行横向扩展。
|shield-agpl| |shield-release| |shield-cov| |shield-loc|
.. |shield-agpl| image:: https://img.shields.io/badge/license-AGPL--3%2E0-green :target: LICENSE.txt .. |shield-release| image:: https://shields.io/github/v/tag/grommunio/gromox :target: https://github.com/grommunio/gromox/tags .. |shield-cov| image:: https://img.shields.io/coverity/scan/gromox :target: https://scan.coverity.com/projects/gromox .. |shield-loc| image:: https://img.shields.io/github/languages/code-size/grommunio/gromox :target: https://github.com/grommunio/gromox/
Gromox 采用模块化设计,由一组组件和程序组成,以提供其功能集。本仓库包含若干手册页,其渲染版本位于 docs.grommunio.com <https://docs.grommunio.com/man/gromox.7.html>_。
编译说明见 doc/install.rst <doc/install.rst>。
此外,<doc/> 目录中还有其他主要偏技术性的文档。
Gromox 依赖其他组件以提供一套合理完整的邮件系统,
- Admin API/CLI(管理):
grommunio Admin API/CLI <https://github.com/grommunio/admin-api>_ - Admin Web Interface(管理):
grommunio Admin Web <https://github.com/grommunio/admin-web>_ - User Web Interface(Web UI):
grommunio Web <https://github.com/grommunio/grommunio-web>_ - Exchange ActiveSync (EAS)(移动设备):
grommunio Sync <https://github.com/grommunio/grommunio-sync>_ - CalDAV & CardDAV(与客户端的互操作性):
grommunio DAV <https://github.com/grommunio/grommunio-dav>_ - 邮件传输代理,如 Postfix、Exim 等
- 邮件安全解决方案,如 rspamd 及其他(包括商业方案)
grommunio Appliance 附带这些必备组件,并提供一套可直接运行的 Gromox 安装环境。
Support
支持可通过 grommunio GmbH 及其合作伙伴获得。
详情请参见 https://grommunio.com/。社区论坛位于
<https://community.grommunio.com/>_。
源代码仓库和技术问题跟踪器可在
<https://github.com/grommunio/gromox>_ 找到。
如需直接联系或提供有关安全相关
负责任披露的信息,请联系 dev@grommunio.com <dev@grommunio.com>_。
标准和协议
参见 <doc/protocols.rst>_ 进行讨论。
贡献
- https://docs.github.com/en/get-started/quickstart/contributing-to-projects
- 或者,将提交上传到您选择的 git 存储库,或使用
git format-patch <https://git-scm.com/docs/git-format-patch>_ 将系列导出为补丁集,然后通过我们的直接联系地址(如上) 传达 git 链接/补丁。
编码和社交风格
入乡随俗。
参见 doc/style.rst <doc/style.rst>_ 进行技术深入探讨。
源代码布局
-
exch/: -
emsmdb/: EMSMDB/OXCROPS 调用的解码器(良好的起点/可 grep 的关键词:rop_ext_pull(EXT_PULL &x, ROP_BUFFER &r)函数)以及这些调用的处理程序入口点(参见:rop_dispatch)-
ews/: 处理 EWS 请求的逻辑(参见:EWSPlugin::dispatch) -
exmdb/: Information Store 服务器。EXRPC 调用的解码器 位于lib/exmdb_ext.cpp:exmdb_ext_pull_request;大型 caseswitch()函数在 make 期间自动生成到include/exmdb_dispatch.cpp;邮箱逻辑函数以 可 grep 的子串BOOL exmdb_server::开头。 -
http/: HTTP 服务器-
HTTP 请求解析器(参见:
htparse_rdhead,以及htparse_rdhead_stnear/* 请求头结束 */) -
MSRPC 解析器(参见:
pdu_processor_input)
-
-
mh/: OXCMAPIHTTP 请求的处理程序。实际的 邮箱逻辑很少,因为代码转发到 emsmdb/nsp 函数。 -
midb/: 专门用于 gromox-imap/gromox-pop3 的支持服务器,参见mail_engine_commands。基于文本的 输入协议。 -
mysql_adaptor/: 用户数据库支持函数 -
nsp/: OXNSPI 请求的解码器(参见:exchange_nsp_ndr_pull),以及处理这些请求的逻辑(参见:exchange_nsp_dispatch) -
zcore/: PHP-MAPI 请求的状态保持器。ZRPC 请求的解码器参见rpc_parser_dispatch,邮箱逻辑参见ec_error_t zs_) -
authmgr.cpp: 用于在 MySQL/LDAP 之间引导身份验证的组件 -
oxdisco.cpp: AutoDiscover 请求的处理程序
-
-
lib/: 大规模共享的函数-
lib/email/: 电子邮件、日历、联系人解析器(RFC 5322, 5545/5546, 6350) -
lib/mapi/: 主要特定于 MAPI 的数据结构
-
-
oxcical.cpp: 解析后的 iCalendar 与 MAPI 日历项之间的转换逻辑-
oxcmail.cpp: 解析后的电子邮件与 MAPI 消息项之间的转换逻辑 -
oxvcard.cpp: 解析后的 vCards 与 MAPI 联系人项之间的转换逻辑
-
-
mda/: 消息传递代理exmdb_local/gsp.exmdb_local_hook
-
delivery_app/: 投递代理smtp/: MDA 的 SMTP 协议处理器
-
mra/: 消息检索代理(IMAP、POP3);这些是 midb 客户端(不是 exrpc 客户端),参见imap_parser_dispatch_cmd2和pop3_parser_dispatch_cmd2。