Connection Diagrams

This appendix contains overview connection diagrams between functional components of Kolab Groupware as well as detailed connection diagrams per component.

Bearing in mind Kolab Groupware comes with a lot of option value, it is worth noting these connection diagrams reference functional components and roles.

Ranked

The following diagram is a full connection diagram, ranked and uncategorized.

digraph con_ref_rank { rankdir = LR; splines = true; overlab = prism; edge [ color=gray50, fontname=Calibri, fontsize=11 ]; node [ style=filled, shape=record, fontname=Calibri, fontsize=11 ]; "kolabd" [ href="../appendices/application-role-reference.html#kolabd", target="_top" ]; "guam" [ href="../appendices/application-role-reference.html#guam", target="_top" ]; "asav-in" [ href="../appendices/application-role-reference.html#asav-in", target="_top" ]; "asav-int" [ href="../appendices/application-role-reference.html#asav-int", target="_top" ]; "asav-out" [ href="../appendices/application-role-reference.html#asav-out", target="_top" ]; "wallace" [ href="../appendices/application-role-reference.html#wallace", target="_top" ]; "imapm" [ href="../appendices/application-role-reference.html#imapm", target="_top" ]; "ext-imapf" [ href="../appendices/application-role-reference.html#ext-imapf", target="_top" ]; "int-imapf" [ href="../appendices/application-role-reference.html#int-imapf", target="_top" ]; "imapba" [ href="../appendices/application-role-reference.html#imapba", target="_top" ]; "imapbb" [ href="../appendices/application-role-reference.html#imapbb", target="_top" ]; "ldapr" [ href="../appendices/application-role-reference.html#ldapr", target="_top" ]; "ldapw" [ href="../appendices/application-role-reference.html#ldapw", target="_top" ]; "ext-mx-in" [ href="../appendices/application-role-reference.html#ext-mx-in", target="_top" ]; "ext-mx-out" [ href="../appendices/application-role-reference.html#ext-mx-out", target="_top" ]; "ext-subm" [ href="../appendices/application-role-reference.html#ext-subm", target="_top" ]; "int-subm" [ href="../appendices/application-role-reference.html#int-subm", target="_top" ]; "int-mx" [ href="../appendices/application-role-reference.html#int-mx", target="_top" ]; "dbw" [ href="../appendices/application-role-reference.html#dbw", target="_top" ]; "dbr" [ href="../appendices/application-role-reference.html#dbr", target="_top" ]; "roundcube" [ href="../appendices/application-role-reference.html#roundcube", target="_top" ]; "syncroton" [ href="../appendices/application-role-reference.html#syncroton", target="_top" ]; "chwala" [ href="../appendices/application-role-reference.html#chwala", target="_top" ]; "irony" [ href="../appendices/application-role-reference.html#irony", target="_top" ]; "wap" [ href="../appendices/application-role-reference.html#wap", target="_top" ]; "freebusy" [ href="../appendices/application-role-reference.html#freebusy", target="_top" ]; "memc-pub" [ href="../appendices/application-role-reference.html#memc-pub", target="_top" ]; "memc-pvt" [ href="../appendices/application-role-reference.html#memc-pvt", target="_top" ]; "kolabd" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-1", target="_top", label="(1)" ]; "kolabd" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-2", target="_top", label="(2)" ]; "kolabd" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-3", target="_top", label="(3)"]; "guam" -> "ext-imapf" [ href="../appendices/connection-diagrams.html#conn-4", target="_top", label="(4)" ]; "asav-in" -> "ext-mx-in" [ href="../appendices/connection-diagrams.html#conn-66", target="_top", label="(66)" ]; "asav-int" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-67", target="_top", label="(67)" ]; "asav-out" -> "ext-mx-out" [ href="../appendices/connection-diagrams.html#conn-68", target="_top", label="(68)" ]; "wallace" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-69", target="_top", label="(69)" ]; "wallace" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-70", target="_top", label="(70)" ]; "wallace" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-71", target="_top", label="(71)" ]; "imapm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-5", target="_top", label="(5)" ]; "ext-imapf" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-6", target="_top", label="(6)" ]; "ext-imapf" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-7", target="_top", label="(7)" ]; "ext-imapf" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-8", target="_top", label="(8)" ]; "int-imapf" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-9", target="_top", label="(9)" ]; "int-imapf" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-10", target="_top", label="(10)" ]; "int-imapf" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-11", target="_top", label="(11)" ]; "imapba" -> "imapbb" [ href="../appendices/connection-diagrams.html#conn-12" target="_top", label="(12)", constraint=false ]; "imapba" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-13", target="_top", label="(13)" ]; "imapba" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-14", target="_top", label="(14)" ]; "imapba" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-15", target="_top", label="(15)" ]; "imapbb" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-16", target="_top", label="(16)" ]; "imapbb" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-17", target="_top", label="(17)" ]; "imapbb" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-18", target="_top", label="(18)" ]; "imapbb" -> "imapba" [ href="../appendices/connection-diagrams.html#conn-77" target="_top", label="(77)", constraint=false ]; "ldapw" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-19", target="_top", label="(19)" ]; "ext-mx-in" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-20", target="_top", label="(20)" ]; "ext-mx-in" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-21", target="_top", label="(21)" ]; "ext-mx-in" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-22", target="_top", label="(22)" ]; "ext-mx-in" -> "asav-in" [ href="../appendices/connection-diagrams.html#conn-65", target="_top", label="(65)" ]; "ext-mx-out" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-23", target="_top", label="(23)" ]; "ext-mx-out" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-24", target="_top", label="(24)" ]; "ext-mx-out" -> "asav-out" [ href="../appendices/connection-diagrams.html#conn-72", target="_top", label="(72)" ]; "ext-subm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-25", target="_top", label="(25)" ]; "ext-subm" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-26", target="_top", label="(26)" ]; "ext-subm" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-27", target="_top", label="(27)" ]; "int-subm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-28", target="_top", label="(28)" ]; "int-subm" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-29", target="_top", label="(29)" ]; "int-subm" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-30", target="_top", label="(30)" ]; "int-mx" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-31", target="_top", label="(31)" ]; "int-mx" -> "asav-int" [ href="../appendices/connection-diagrams.html#conn-74", target="_top", label="(74)" ]; "int-mx" -> "wallace" [ href="../appendices/connection-diagrams.html#conn-73", target="_top", label="(73)" ]; "int-mx" -> "ext-mx-out" [ href="../appendices/connection-diagrams.html#conn-32", target="_top", label="(32)" ]; "int-mx" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-33", target="_top", label="(33)" ]; "dbr" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-34", target="_top", label="(34)" ]; "roundcube" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-35", target="_top", label="(35)" ]; "roundcube" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-36", target="_top", label="(36)" ]; "roundcube" -> "chwala" [ href="../appendices/connection-diagrams.html#conn-75", target="_top", label="(75)" ]; "roundcube" -> "freebusy" [ href="../appendices/connection-diagrams.html#conn-76", target="_top", label="(76)" ]; "roundcube" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-37", target="_top", label="(37)" ]; "roundcube" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-38", target="_top", label="(38)" ]; "roundcube" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-39", target="_top", label="(39)" ]; "roundcube" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-40", target="_top", label="(40)" ]; "roundcube" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-41", target="_top", label="(41)" ]; "syncroton" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-42", target="_top", label="(42)" ]; "syncroton" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-43", target="_top", label="(43)" ]; "syncroton" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-44", target="_top", label="(44)" ]; "syncroton" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-45", target="_top", label="(45)" ]; "syncroton" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-46", target="_top", label="(46)" ]; "chwala" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-47", target="_top", label="(47)" ]; "chwala" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-48", target="_top", label="(48)" ]; "chwala" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-49", target="_top", label="(49)" ]; "chwala" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-50", target="_top", label="(50)" ]; "chwala" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-51", target="_top", label="(51)" ]; "irony" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-52", target="_top", label="(52)" ]; "irony" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-53", target="_top", label="(53)" ]; "irony" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-54", target="_top", label="(54)" ]; "irony" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-55", target="_top", label="(55)" ]; "irony" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-56", target="_top", label="(56)" ]; "irony" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-57", target="_top", label="(57)" ]; "wap" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-58", target="_top", label="(58)" ]; "wap" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-59", target="_top", label="(59)" ]; "wap" -> "memc-pvt" [ href="../appendices/connection-diagrams.html#conn-60", target="_top", label="(60)" ]; "freebusy" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-61", target="_top", label="(61)" ]; "freebusy" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-62", target="_top", label="(62)" ]; "freebusy" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-63", target="_top", label="(63)" ]; "freebusy" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-64", target="_top", label="(64)" ]; }

A ranked connection diagram for a default Kolab Groupware installation.

Categorized

digraph conn_ref_cat { rankdir = LR; edge [ color=gray50, fontname=Calibri, fontsize=11 ]; node [ style=filled, shape=record, fontname=Calibri, fontsize=11 ]; "kolabd" [ href="../appendices/application-role-reference.html#kolabd", target="_top" ]; subgraph cluster_imap { color = none; "guam" [ href="../appendices/application-role-reference.html#guam", target="_top" ]; subgraph cluster_murder { color = none; "imapm" [ href="../appendices/application-role-reference.html#imapm", target="_top" ]; subgraph cluster_murder_frontends { color = none; "ext-imapf" [ href="../appendices/application-role-reference.html#ext-imapf", target="_top" ]; "int-imapf" [ href="../appendices/application-role-reference.html#int-imapf", target="_top" ]; } subgraph cluster_murder_backends { color = none; "imapba" [ href="../appendices/application-role-reference.html#imapba", target="_top" ]; "imapbb" [ href="../appendices/application-role-reference.html#imapbb", target="_top" ]; } { rank = same "ext-imapf" "int-imapf" } { rank = same "imapba" "imapbb" } } } subgraph cluster_ldap { color = none; "ldapr" [ href="../appendices/application-role-reference.html#ldapr", target="_top" ]; "ldapw" [ href="../appendices/application-role-reference.html#ldapw", target="_top" ]; } subgraph cluster_mx { color = none; subgraph cluster_ext_mx { color = none; "ext-mx-in" [ href="../appendices/application-role-reference.html#ext-mx-in", target="_top" ]; "ext-mx-out" [ href="../appendices/application-role-reference.html#ext-mx-out", target="_top" ]; } subgraph cluster_subm { color = none; "ext-subm" [ href="../appendices/application-role-reference.html#ext-subm", target="_top" ]; "int-subm" [ href="../appendices/application-role-reference.html#int-subm", target="_top" ]; } "asav-in" [ href="../appendices/application-role-reference.html#asav-in", target="_top" ]; "asav-int" [ href="../appendices/application-role-reference.html#asav-int", target="_top" ]; "asav-out" [ href="../appendices/application-role-reference.html#asav-out", target="_top" ]; "wallace" [ href="../appendices/application-role-reference.html#wallace", target="_top" ]; "int-mx" [ href="../appendices/application-role-reference.html#int-mx", target="_top" ]; { rank=same "ext-mx-in" "ext-mx-out" } { rank=same "asav-in" "asav-out" } { rank=same rankdir=TB "int-mx" "asav-int" } } subgraph cluster_db { color = none; "dbw" [ href="../appendices/application-role-reference.html#dbw", target="_top" ]; "dbr" [ href="../appendices/application-role-reference.html#dbr", target="_top" ]; } subgraph cluster_web { color = none; "roundcube" [ href="../appendices/application-role-reference.html#roundcube", target="_top" ]; "syncroton" [ href="../appendices/application-role-reference.html#syncroton", target="_top" ]; "chwala" [ href="../appendices/application-role-reference.html#chwala", target="_top" ]; "irony" [ href="../appendices/application-role-reference.html#irony", target="_top" ]; "wap" [ href="../appendices/application-role-reference.html#wap", target="_top" ]; "freebusy" [ href="../appendices/application-role-reference.html#freebusy", target="_top" ]; { rank=same "chwala" "freebusy" "irony" "roundcube" "syncroton" } } "memc-pub" [ href="../appendices/application-role-reference.html#memc-pub", target="_top" ]; "memc-pvt" [ href="../appendices/application-role-reference.html#memc-pvt", target="_top" ]; "kolabd" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-1", target="_top", label="(1)" ]; "kolabd" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-2", target="_top", label="(2)" ]; "kolabd" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-3", target="_top", label="(3)"]; "guam" -> "ext-imapf" [ href="../appendices/connection-diagrams.html#conn-4", target="_top", label="(4)" ]; "asav-in" -> "ext-mx-in" [ href="../appendices/connection-diagrams.html#conn-66", target="_top", label="(66)" ]; "asav-int" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-67", target="_top", label="(67)" ]; "asav-out" -> "ext-mx-out" [ href="../appendices/connection-diagrams.html#conn-68", target="_top", label="(68)" ]; "wallace" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-69", target="_top", label="(69)" ]; "wallace" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-70", target="_top", label="(70)" ]; "wallace" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-71", target="_top", label="(71)" ]; "imapm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-5", target="_top", label="(5)" ]; "ext-imapf" -> "imapm" [ constraint=false, href="../appendices/connection-diagrams.html#conn-6", target="_top", label="(6)" ]; "ext-imapf" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-7", target="_top", label="(7)" ]; "ext-imapf" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-8", target="_top", label="(8)" ]; "int-imapf" -> "imapm" [ constraint=false, href="../appendices/connection-diagrams.html#conn-9", target="_top", label="(9)" ]; "int-imapf" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-10", target="_top", label="(10)" ]; "int-imapf" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-11", target="_top", label="(11)" ]; "imapba" -> "imapbb" [ constraint=false, href="../appendices/connection-diagrams.html#conn-12" target="_top", label="(12)" ]; "imapba" -> "imapm" [ constraint=false, href="../appendices/connection-diagrams.html#conn-13", target="_top", label="(13)" ]; "imapba" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-14", target="_top", label="(14)" ]; "imapba" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-15", target="_top", label="(15)" ]; "imapbb" -> "imapm" [ constraint=false, href="../appendices/connection-diagrams.html#conn-16", target="_top", label="(16)" ]; "imapbb" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-17", target="_top", label="(17)" ]; "imapbb" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-18", target="_top", label="(18)" ]; "imapbb" -> "imapba" [ constraint=false, href="../appendices/connection-diagrams.html#conn-77" target="_top", label="(77)" ]; "ldapw" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-19", target="_top", label="(19)" ]; "ext-mx-in" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-20", target="_top", label="(20)" ]; "ext-mx-in" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-21", target="_top", label="(21)" ]; "ext-mx-in" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-22", target="_top", label="(22)" ]; "ext-mx-in" -> "asav-in" [ href="../appendices/connection-diagrams.html#conn-65", target="_top", label="(65)" ]; "ext-mx-out" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-23", target="_top", label="(23)" ]; "ext-mx-out" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-24", target="_top", label="(24)" ]; "ext-mx-out" -> "asav-out" [ href="../appendices/connection-diagrams.html#conn-72", target="_top", label="(72)" ]; "ext-subm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-25", target="_top", label="(25)" ]; "ext-subm" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-26", target="_top", label="(26)" ]; "ext-subm" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-27", target="_top", label="(27)" ]; "int-subm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-28", target="_top", label="(28)" ]; "int-subm" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-29", target="_top", label="(29)" ]; "int-subm" -> "int-mx" [ href="../appendices/connection-diagrams.html#conn-30", target="_top", label="(30)" ]; "int-mx" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-31", target="_top", label="(31)" ]; "int-mx" -> "asav-int" [ href="../appendices/connection-diagrams.html#conn-74", target="_top", label="(74)" ]; "int-mx" -> "wallace" [ href="../appendices/connection-diagrams.html#conn-73", target="_top", label="(73)" ]; "int-mx" -> "ext-mx-out" [ href="../appendices/connection-diagrams.html#conn-32", target="_top", label="(32)" ]; "int-mx" -> "imapba", "imapbb" [ href="../appendices/connection-diagrams.html#conn-33", target="_top", label="(33)" ]; "dbr" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-34", target="_top", label="(34)" ]; "roundcube" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-35", target="_top", label="(35)" ]; "roundcube" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-36", target="_top", label="(36)" ]; "roundcube" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-37", target="_top", label="(37)" ]; "roundcube" -> "chwala" [ href="../appendices/connection-diagrams.html#conn-75", target="_top", label="(75)" ]; "roundcube" -> "freebusy" [ href="../appendices/connection-diagrams.html#conn-76", target="_top", label="(76)" ]; "roundcube" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-38", target="_top", label="(38)" ]; "roundcube" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-39", target="_top", label="(39)" ]; "roundcube" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-40", target="_top", label="(40)" ]; "roundcube" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-41", target="_top", label="(41)" ]; "syncroton" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-42", target="_top", label="(42)" ]; "syncroton" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-43", target="_top", label="(43)" ]; "syncroton" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-44", target="_top", label="(44)" ]; "syncroton" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-45", target="_top", label="(45)" ]; "syncroton" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-46", target="_top", label="(46)" ]; "chwala" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-47", target="_top", label="(47)" ]; "chwala" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-48", target="_top", label="(48)" ]; "chwala" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-49", target="_top", label="(49)" ]; "chwala" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-50", target="_top", label="(50)" ]; "chwala" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-51", target="_top", label="(51)" ]; "irony" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-52", target="_top", label="(52)" ]; "irony" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-53", target="_top", label="(53)" ]; "irony" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-54", target="_top", label="(54)" ]; "irony" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-55", target="_top", label="(55)" ]; "irony" -> "int-subm" [ href="../appendices/connection-diagrams.html#conn-56", target="_top", label="(56)" ]; "irony" -> "memc-pub" [ href="../appendices/connection-diagrams.html#conn-57", target="_top", label="(57)" ]; "wap" -> "ldapw" [ href="../appendices/connection-diagrams.html#conn-58", target="_top", label="(58)" ]; "wap" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-59", target="_top", label="(59)" ]; "wap" -> "memc-pvt" [ href="../appendices/connection-diagrams.html#conn-60", target="_top", label="(60)" ]; "freebusy" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-61", target="_top", label="(61)" ]; "freebusy" -> "dbr" [ href="../appendices/connection-diagrams.html#conn-62", target="_top", label="(62)" ]; "freebusy" -> "dbw" [ href="../appendices/connection-diagrams.html#conn-63", target="_top", label="(63)" ]; "freebusy" -> "int-imapf" [ href="../appendices/connection-diagrams.html#conn-64", target="_top", label="(64)" ]; }

A categorized connection diagram for a default Kolab Groupware installation.

digraph internal_networks { splines = true; overlab = prism; edge [color=gray50, fontname=Calibri, fontsize=11]; node [style=filled, shape=record, fontname=Calibri, fontsize=11]; subgraph cluster_internet { label = "Internet"; "Clients (Internet)" [label="Clients"]; } subgraph cluster_intranet { label = "Intranet"; subgraph cluster_intra_client { label = "Client Networks"; "Clients (Intranet)" [label="Clients"]; } subgraph cluster_intra_server { label = "Server Networks"; "Servers"; } } "Clients (Internet)" -> "Internet" -> "Transparent Reverse Proxy"; "Transparent Reverse Proxy" -> "Kolab Web Client Application Server" [label="Application Pages"]; "Transparent Reverse Proxy" -> "Kolab Web Client Assets" [label="Assets"]; "Transparent Reverse Proxy" -> "File Cloud Application Server" [label="File Cloud Application"]; }

Kolab Web Client Traffic

digraph internal_networks { splines = true; overlab = prism; edge [color=gray50, fontname=Calibri, fontsize=11]; node [style=filled, shape=record, fontname=Calibri, fontsize=11]; "Client"; "Internet"; "Transparent Reverse Proxy"; "Kolab Web Client"; }

Client

Internet

Transparent Reverse Proxy

Kolab Web Client

Two categories:

  • Application pages,
  • Assets

Connections for kolabd

kolabd -> ldapw

This is a long-lived connection that is not frequently re-established.

The functional component known as kolabd is responsible for synchronizing changes in LDAP to the rest of the environment. It therefore requires a connection to an LDAP server, and most commonly uses a writeable LDAP server for this purpose.

The kolab daemon requires the ability to write attributes back to LDAP entries, such as mail and alias for the application of the recipient policy, and the mailhost for traffic routing, and the mailquota management.

It uses the connection to listen for or detect changes to ldap and responds to such changes.

Note

kolabd could be made a functional daemon against a read-only LDAP server, by suspending the application of the recipient policy, and either ensuring the mailhost attribute is properly pre-populated or that delivery is performed through Cyrus IMAP frontends using lmtpd(8), and ensuring that LDAP entries are complete and correct.

kolabd -> int-imapf

The kolabd daemon creates a connection to the internal imap frontends to create, rename or delete user mailboxes.

One such connection is rather long-lived, and constitutes the administrative connection. This connection is used for the listing of all mailboxes and mailfolders despite the owner’s authorization realm, or the namespace.

When kolabd notices a mailbox needs to be created, renamed or deleted, it uses this administrative connection to determine whether the mailbox still or already exists.

kolabd may also create secondary connections that are authorized as user connections. These connections are used to set metadata values on entries in the /private metadata namespace, such as /private/vendor/kolab/folder-type.

kolabd -> imapb

Connections to the IMAP backend that corresponds with a user’s mailbox are required to change folder’s partition and to set quota.

Note

Note that the connection goes to the only backend, or the active backend in a active/passive environment, or either one backend of an active/active cluster.

Detailed Connection Diagram for kolabd

digraph kolabd_conns { splines = true; overlab = prism; edge [ color="#DDDDDD", fontname=Calibri, fontsize=11, fontcolor="#DDDDDD" ]; node [ style=filled, shape=record, fontname=Calibri, fontsize=11, color="#DDDDDD" ]; "kolabd" [ href="../appendices/application-role-reference.html#kolabd", target="_top", color="#AAFFAA" ]; subgraph cluster_murder { color = none; "imapm" [ href="../appendices/application-role-reference.html#imapm", target="_top" ]; "int-imapf" [ href="../appendices/application-role-reference.html#int-imapf", target="_top", color="#AAFFAA" ]; "imapba" [ href="../appendices/application-role-reference.html#imapba", target="_top", color="#AAFFAA" ]; "imapbb" [ href="../appendices/application-role-reference.html#imapbb", target="_top", color="#FFAAAA" ]; { rank=same "imapba" "imapbb" "int-imapf" } } subgraph cluster_ldap { color = none; "ldapr" [ href="../appendices/application-role-reference.html#ldapr", target="_top" ]; "ldapw" [ href="../appendices/application-role-reference.html#ldapw", target="_top", color="#AAFFAA" ]; } "wap" [ href="../appendices/application-role-reference.html#wap", target="_top" ]; "kolabd" -> "ldapw" [ constraint=false, href="../appendices/connection-diagrams.html#conn-1", target="_top", label="(1)", color="#AAFFAA", fontcolor="#000000" ]; "kolabd" -> "int-imapf" [ constraint=false, href="../appendices/connection-diagrams.html#conn-2", target="_top", label="(2)", color="#AAFFAA", fontcolor="#000000" ]; "kolabd" -> "imapba" [ constraint=false, href="../appendices/connection-diagrams.html#conn-3", target="_top", label="(3)", color="#AAFFAA", fontcolor="#000000" ]; "kolabd" -> "imapbb" [ constraint=false, href="../appendices/connection-diagrams.html#conn-3", target="_top", label="(3)", color="#FFAAAA", fontcolor="#000000" ]; "imapm" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-5", target="_top", label="(5)" ]; "int-imapf" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-9", target="_top", label="(9)" ]; "int-imapf" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-10", target="_top", label="(10)" ]; "int-imapf" -> "imapba" [ href="../appendices/connection-diagrams.html#conn-11", target="_top", label="(11)" ]; "int-imapf" -> "imapbb" [ href="../appendices/connection-diagrams.html#conn-11", target="_top", label="(11)" ]; "imapba" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-13", target="_top", label="(13)" ]; "imapba" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-14", target="_top", label="(14)" ]; "imapba" -> "imapbb" [ constraint=false, href="../appendices/connection-diagrams.html#conn-12", target="_top", label="(12)" ]; "imapbb" -> "imapm" [ href="../appendices/connection-diagrams.html#conn-16", target="_top", label="(16)" ]; "imapbb" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-17", target="_top", label="(17)" ]; "imapbb" -> "imapba" [ constraint=false, href="../appendices/connection-diagrams.html#conn-77", target="_top", label="(77)" ]; "ldapw" -> "ldapr" [ href="../appendices/connection-diagrams.html#conn-19", target="_top", label="(19)" ]; "ldapw" -> "wap" [ dir=back, href="../appendices/connection-diagrams.html#conn-58", target="_top", label="(58)" ]; }

Connection diagram for the kolabd component.

Initial Creation of a User

  • kolabd is assumed to be connected to ldapw (1) and continues to listen for change notifications using a mechanism known as persistent search notification.
  • An administrator uses the wap to create a user in ldapw (58).

In parallel, this change triggers the following independent paths;

  • ldapw replicates the changes to ldapr. The success of this replication is required for functional ptloader canonification against ldapr (19) for the functioning of the following systems;
  • kolabd receives the change notification from ldapw [1];
    • kolabd applies the recipient policy and writes back any changes to ldapw.
    • kolabd writes the values of the nsuniqueid and modifytimestamp out to its local persistency database, including the value of the configured result attribute for the mailbox name [2],
    • kolabd connects to or re-uses an existing connection to int-imapf (2) to establish a mailbox for the user created.
    • kolabd awaits the propagation of the mailbox created throughout the Cyrus IMAP Discrete Murder, such that;
    • kolabd obtains the /vendor/cmu/cyrus-imapd/server metadata value from the mailbox created via int-imapf (2),
    • kolabd writes out the IMAP backend server address to the entry attribute mailhost in ldapw (1),
    • Should any additional folders need to be created, kolabd connects to int-imapf (2) and proxy-authenticates as the target user [3],
    • Should any default quota have been configured, but not set on the user entry, then kolabd will write out the mailquota attribute value for the LDAP entry on ldapw (1),
    • Should any quota need to be set on the top-level mailbox or on any sub-folders, then kolabd connects to either imapba (14) or imapbb (17), depending on which one holds the service IP address for the server address used to address either or both, and sets the quota.

Outbound Connection Table for kolabd

Source Target Protocol(s) Port(s) Type
kolabd ldapw LDAP 389/tcp [4] Long-Lived
    LDAPS 636/tcp [5] Long-Lived
kolabd inf-imapf IMAPS 993/tcp [6] Long-Lived [7]
        Short-Lived [8]
kolabd imapb IMAPS 993/tcp Short-Lived [9]

guam -> ext-imapf

The client facing intelligent IMAP proxy that, at the time of this writing, filters groupware folders for clients that do not understand the contents of groupware folders uses external-facing IMAP frontends for loggingand audit requirements and access control restrictions.

Connections to guam can be made from external clients (Internet clients or road-warriors) as well as internal clients that reside on internal client network segments.

imapm -> ldapr

Authentication (through kolab-saslauthd) and username canonification (through ptloader) uses ldapr.

Source Target Protocol(s) Port(s) Type
imapm ldapr LDAP 389/tcp [10] Frequent, Short-Lived
    LDAPS 636/tcp [11] Frequent, Short-Lived

ext-imapf -> imapm

keep up-to-date with the latest news about mailboxes in the cluster

ext-imapf -> ldapr

ptloader, saslauthd

Source Target Protocol(s) Port(s) Type
ext-imapf ldapr LDAP 389/tcp [12] Frequent, Short-Lived
    LDAPS 636/tcp [13] Frequent, Short-Lived

ext-imapf -> imapb

proxied connections

int-imapf -> imapm

keep up-to-date with the latest news about mailboxes in the cluster

int-imapf -> ldapr

ptloader, saslauthd

Source Target Protocol(s) Port(s) Type
int-imapf ldapr LDAP 389/tcp [14] Frequent, Short-Lived
    LDAPS 636/tcp [15] Frequent, Short-Lived

int-imapf -> imapb

proxied connections

imapba <-> imapbb

replication

imapba -> imapm

mupdate connection in order to update the mupdate master about changes to local mailboxes.

imapba -> ldapr

authentication, routing

Source Target Protocol(s) Port(s) Type
imapba ldapr LDAP 389/tcp [16] Frequent, Short-Lived
    LDAPS 636/tcp [17] Frequent, Short-Lived

imapba -> int-mx

relay (sieve forward / autorespond), MSN, NDR

Source Target Protocol(s) Port(s) Type
imapba int-mx SMTP 25/tcp [18] Frequent, Short-Lived

imapbb -> imapm

mupdate connection in order to update the mupdate master about changes to local mailboxes.

imapbb -> ldapr

authentication, routing

Source Target Protocol(s) Port(s) Type
imapba ldapr LDAP 389/tcp [19] Frequent, Short-Lived
    LDAPS 636/tcp [20] Frequent, Short-Lived

imapbb -> int-mx

relay (sieve forward / autorespond), MSN, NDR

Source Target Protocol(s) Port(s) Type
imapbb int-mx SMTP 25/tcp [21] Frequent, Short-Lived

ldapw -> ldapr

replication

ext-mx-in -> ldapr

destination verification

ext-mx-in -> dbw

caching

ext-mx-in -> int-mx

relay

ext-mx-out -> ldapr

routing information for MSN and NDR

ext-mx-out -> int-mx

the actual routing

ext-subm -> ldapr

authentication, access policy

ext-subm -> dbw

cache

ext-subm -> int-mx

relay

int-subm -> ldapr

authentication, access policy

int-subm -> dbw

cache

int-subm -> int-mx

relay

int-mx -> ldapr

routing

int-mx -> ext-mx-out

relay for non-local mail

int-mx -> imapb

routing for local mail

dbr -> dbw

replication – iirc, the slave connects to the master

roundcube -> ldapr

authentication, username canonification, address book, delegation identities, identity provisioning, (...)

roundcube -> ldapw

password changes

roundcube -> dbr

read-only connections to the database

roundcube -> dbw

write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread)

roundcube -> int-imapf

web client to imap

roundcube -> int-subm

submission of new messages

roundcube -> memc-pub

certain caches, session information, attachments (redundant)

syncroton -> ldapr

authentication, GAB searches

syncroton -> dbr

read-only connections to the database

syncroton -> dbw

write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread)

syncroton -> int-imapf

payload connection

syncroton -> int-subm

submission of new messages

chwala -> ldapr

authentication

chwala -> dbr

read-only connections to the database

chwala -> dbw

write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread)

chwala -> int-imapf

payload

chwala -> memc-pub

certain caches, sesssion information

irony -> ldapr

authentication, GAB

irony -> dbr

read-only connections to the database

irony -> dbw

write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread)

irony -> int-imapf

payload

irony -> int-subm

submission of scheduling invitation

Note

This may actually not be true at all, and instead the local mx could be used, in which case this is int-mx not int-subm.

irony -> memc-pub

certain caches.

wap -> ldapw

administration of entries

wap -> dbw

wap-specific settings

wap has no dsnr

wap -> memc-pvt

the type of information the wap caches should not be on the same (pair of replicated) memcached servers

freebusy -> ldapr

authentication, user information

freebusy -> dbr

read-only connections to the database

freebusy -> dbw

write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread)

freebusy -> int-imapf

payload

ext-mx-in -> asav

optionally scan inbound email for spam and virus

asav -> ext-mx-in

re-submission of conn 65

asav -> int-mx

re-submission of conn 74

asav -> ext-mx-out

re-submission of conn 72

wallace -> int-mx

continued delivery

wallace -> ldapr

user information

wallace -> int-imapf

payload

ext-mx-out -> asav

optionally scan outbound email for spam and virus

int-mx -> wallace

submit messages to wallace for evaluation, application of policy, etc.

int-mx -> asav

optionally, check internal email for spam and virus

roundcube -> chwala

roundcube -> freebusy

Free/Busy information for Roundcube calendaring.

imapbb -> imapba

Replication from IMAP Backend

Footnotes

[1]This is not an outbound connection for ldapw, but rather a protocol response to a long-lived connection from kolabd to ldapw.
[2]The recording for the nsuniqueid and result attribute value allow kolabd to respond to change notifications that modify the value of the result attribute.
[3]Using proxy-authentication authorizes the connection as if it were the target user itself logging on to IMAP. This is important for kolabd because additional folders may need to be set metadata on, that resides in the /private namespace – only the user themselves can do this effectively.
[4]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[5]Implicit SSL – better.
[6]Authentication is not allowed over connections not already protected on a different layer.
[7]The administrative connection for top-level mailboxes is re-used for as long as it is functional.
[8]Second connection, proxy authenticated. Occurs as frequently as there are new user accounts added to LDAP.
[9]Some commands are not proxied through IMAP frontends correctly. The use of a connection directly to the appropriate IMAP backend ensures quota can be set, and mail-folders can be moved between partitions.
[10]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[11]Implicit SSL – better.
[12]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[13]Implicit SSL – better.
[14]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[15]Implicit SSL – better.
[16]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[17]Implicit SSL – better.
[18]Unauthenticated, w/ STARTTLS.
[19]Authenticated, as anonymous binds should not be allowed. Binds should be allowed over connections that are protected by a transport security layer such as TLS.
[20]Implicit SSL – better.
[21]Unauthenticated, w/ STARTTLS.