:tocdepth: 2 =================== 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. .. graphviz:: :caption: A ranked connection diagram for a default Kolab Groupware installation. 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)" ]; } Categorized =========== .. graphviz:: :caption: A categorized connection diagram for a default Kolab Groupware installation. 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)" ]; } .. graphviz:: 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 ======================== .. graphviz:: 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"; } .. _conn-webclient-client: Client ------ .. _conn-webclient-internet: Internet -------- .. _conn-webclient-rev-prx: Transparent Reverse Proxy ------------------------- .. _conn-webclient-webclient: Kolab Web Client ---------------- Two categories: * Application pages, * Assets Connections for ``kolabd`` ========================== .. _conn-1: kolabd -> ldapw --------------- This is a long-lived connection that is not frequently re-established. The functional component known as :ref:`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:: :ref:`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 :manpage:`lmtpd(8)`, and ensuring that LDAP entries are complete and correct. .. _conn-2: kolabd -> int-imapf ------------------- The :ref:`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 :ref:`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. :ref:`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``. .. _conn-3: 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`` ------------------------------------------ .. graphviz:: :caption: Connection diagram for the ``kolabd`` component. 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)" ]; } Initial Creation of a User -------------------------- * :ref:`kolabd` is assumed to be connected to :ref:`ldapw` :sup:`(1)` and continues to listen for change notifications using a mechanism known as *persistent search notification*. * An administrator uses the :ref:`wap` to create a user in :ref:`ldapw` :sup:`(58)`. In parallel, this change triggers the following independent paths; * :ref:`ldapw` replicates the changes to :ref:`ldapr`. The success of this replication is required for functional ptloader canonification against :ref:`ldapr` :sup:`(19)` for the functioning of the following systems; * :ref:`int-imapf` :sup:`(10)`, * :ref:`imapba` :sup:`(14)`, * :ref:`imapbb` :sup:`(17)`. * :ref:`kolabd` receives the change notification from :ref:`ldapw` [#]_; * :ref:`kolabd` applies the recipient policy and writes back any changes to :ref:`ldapw`. * :ref:`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 [#]_, * :ref:`kolabd` connects to or re-uses an existing connection to :ref:`int-imapf` :sup:`(2)` to establish a mailbox for the user created. * :ref:`kolabd` awaits the propagation of the mailbox created throughout the Cyrus IMAP Discrete Murder, such that; * :ref:`imapba` (and :ref:`imapbb` :sup:`(12)`) have made the reservation in :ref:`imapm` :sup:`(13, 16)`, * :ref:`imapba` (and :ref:`imapbb` :sup:`(12)`) have created the mailbox in their local spools, * :ref:`imapba` (and :ref:`imapbb` :sup:`(12)`) have activated the reservation of the mailbox in :ref:`imapm` :sup:`(13, 16)`, * :ref:`imapm` has communicated the changes to :ref:`int-imapf` :sup:`(9)`. * :ref:`kolabd` obtains the ``/vendor/cmu/cyrus-imapd/server`` metadata value from the mailbox created via :ref:`int-imapf` :sup:`(2)`, * :ref:`kolabd` writes out the IMAP backend server address to the entry attribute ``mailhost`` in :ref:`ldapw` :sup:`(1)`, * Should any additional folders need to be created, :ref:`kolabd` connects to :ref:`int-imapf` :sup:`(2)` and proxy-authenticates as the target user [#]_, * Should any default quota have been configured, but not set on the user entry, then :ref:`kolabd` will write out the ``mailquota`` attribute value for the LDAP entry on :ref:`ldapw` :sup:`(1)`, * Should any quota need to be set on the top-level mailbox or on any sub-folders, then :ref:`kolabd` connects to either :ref:`imapba` :sup:`(14)` or :ref:`imapbb` :sup:`(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`` ---------------------------------------- .. table:: +--------+-----------+-------------+--------------+------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +========+===========+=============+==============+==================+ | kolabd | ldapw | LDAP | 389/tcp [#]_ | Long-Lived | +--------+-----------+-------------+--------------+------------------+ | | | LDAPS | 636/tcp [#]_ | Long-Lived | +--------+-----------+-------------+--------------+------------------+ | kolabd | inf-imapf | IMAPS | 993/tcp [#]_ | Long-Lived [#]_ | +--------+-----------+-------------+--------------+------------------+ | | | | | Short-Lived [#]_ | +--------+-----------+-------------+--------------+------------------+ | kolabd | imapb | IMAPS | 993/tcp | Short-Lived [#]_ | +--------+-----------+-------------+--------------+------------------+ .. _conn-4: 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 :ref:`guam` can be made from external clients (Internet clients or road-warriors) as well as internal clients that reside on internal client network segments. .. _conn-5: imapm -> ldapr -------------- Authentication (through :term:`kolab-saslauthd`) and username canonification (through :term:`ptloader`) uses :ref:`ldapr`. .. table:: +--------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +========+========+=============+==============+=======================+ | imapm | ldapr | LDAP | 389/tcp [#]_ | Frequent, Short-Lived | +--------+--------+-------------+--------------+-----------------------+ | | | LDAPS | 636/tcp [#]_ | Frequent, Short-Lived | +--------+--------+-------------+--------------+-----------------------+ .. _conn-6: ext-imapf -> imapm ------------------ keep up-to-date with the latest news about mailboxes in the cluster .. _conn-7: ext-imapf -> ldapr ------------------ ptloader, saslauthd .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | ext-imapf | ldapr | LDAP | 389/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ | | | LDAPS | 636/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-8: ext-imapf -> imapb ------------------ proxied connections .. _conn-9: int-imapf -> imapm ------------------ keep up-to-date with the latest news about mailboxes in the cluster .. _conn-10: int-imapf -> ldapr ------------------ ptloader, saslauthd .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | int-imapf | ldapr | LDAP | 389/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ | | | LDAPS | 636/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-11: int-imapf -> imapb ------------------ proxied connections .. _conn-12: imapba <-> imapbb ----------------- replication .. _conn-13: imapba -> imapm --------------- mupdate connection in order to update the mupdate master about changes to local mailboxes. .. _conn-14: imapba -> ldapr --------------- authentication, routing .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | imapba | ldapr | LDAP | 389/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ | | | LDAPS | 636/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-15: imapba -> int-mx ---------------- relay (sieve forward / autorespond), MSN, NDR .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | imapba | int-mx | SMTP | 25/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-16: imapbb -> imapm --------------- mupdate connection in order to update the mupdate master about changes to local mailboxes. .. _conn-17: imapbb -> ldapr --------------- authentication, routing .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | imapba | ldapr | LDAP | 389/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ | | | LDAPS | 636/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-18: imapbb -> int-mx ---------------- relay (sieve forward / autorespond), MSN, NDR .. table:: +-----------+--------+-------------+--------------+-----------------------+ | Source | Target | Protocol(s) | Port(s) | Type | +===========+========+=============+==============+=======================+ | imapbb | int-mx | SMTP | 25/tcp [#]_ | Frequent, Short-Lived | +-----------+--------+-------------+--------------+-----------------------+ .. _conn-19: ldapw -> ldapr -------------- replication .. _conn-20: ext-mx-in -> ldapr ------------------ destination verification .. _conn-21: ext-mx-in -> dbw ---------------- caching .. _conn-22: ext-mx-in -> int-mx ------------------- relay .. _conn-23: ext-mx-out -> ldapr ------------------- routing information for MSN and NDR .. _conn-24: ext-mx-out -> int-mx -------------------- the actual routing .. _conn-25: ext-subm -> ldapr ----------------- authentication, access policy .. _conn-26: ext-subm -> dbw --------------- cache .. _conn-27: ext-subm -> int-mx ------------------ relay .. _conn-28: int-subm -> ldapr ----------------- authentication, access policy .. _conn-29: int-subm -> dbw --------------- cache .. _conn-30: int-subm -> int-mx ------------------ relay .. _conn-31: int-mx -> ldapr --------------- routing .. _conn-32: int-mx -> ext-mx-out -------------------- relay for non-local mail .. _conn-33: int-mx -> imapb --------------- routing for local mail .. _conn-34: dbr -> dbw ---------- replication -- iirc, the slave connects to the master .. _conn-35: roundcube -> ldapr ------------------ authentication, username canonification, address book, delegation identities, identity provisioning, (...) .. _conn-36: roundcube -> ldapw ------------------ password changes .. _conn-37: roundcube -> dbr ---------------- read-only connections to the database .. _conn-38: roundcube -> dbw ---------------- write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread) .. _conn-39: roundcube -> int-imapf ---------------------- web client to imap .. _conn-40: roundcube -> int-subm --------------------- submission of new messages .. _conn-41: roundcube -> memc-pub --------------------- certain caches, session information, attachments (redundant) .. _conn-42: syncroton -> ldapr ------------------ authentication, GAB searches .. _conn-43: syncroton -> dbr ---------------- read-only connections to the database .. _conn-44: syncroton -> dbw ---------------- write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread) .. _conn-45: syncroton -> int-imapf ---------------------- payload connection .. _conn-46: syncroton -> int-subm --------------------- submission of new messages .. _conn-47: chwala -> ldapr --------------- authentication .. _conn-48: chwala -> dbr ------------- read-only connections to the database .. _conn-49: chwala -> dbw ------------- write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread) .. _conn-50: chwala -> int-imapf ------------------- payload .. _conn-51: chwala -> memc-pub ------------------ certain caches, sesssion information .. _conn-52: irony -> ldapr -------------- authentication, GAB .. _conn-53: irony -> dbr ------------ read-only connections to the database .. _conn-54: irony -> dbw ------------ write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread) .. _conn-55: irony -> int-imapf ------------------ payload .. _conn-56: 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. .. _conn-57: irony -> memc-pub ----------------- certain caches. .. _conn-58: wap -> ldapw ------------ administration of entries .. _conn-59: wap -> dbw ---------- wap-specific settings wap has no dsnr .. _conn-60: wap -> memc-pvt --------------- the type of information the wap caches should not be on the same (pair of replicated) memcached servers .. _conn-61: freebusy -> ldapr ----------------- authentication, user information .. _conn-62: freebusy -> dbr --------------- read-only connections to the database .. _conn-63: freebusy -> dbw --------------- write connections to the database, sometimes also immediate subsequent read-only queries (dsnw_noread) .. _conn-64: freebusy -> int-imapf --------------------- payload .. _conn-65: ext-mx-in -> asav ----------------- optionally scan inbound email for spam and virus .. _conn-66: asav -> ext-mx-in ----------------- re-submission of conn 65 .. _conn-67: asav -> int-mx -------------- re-submission of conn 74 .. _conn-68: asav -> ext-mx-out ------------------ re-submission of conn 72 .. _conn-69: wallace -> int-mx ----------------- continued delivery .. _conn-70: wallace -> ldapr ---------------- user information .. _conn-71: wallace -> int-imapf -------------------- payload .. _conn-72: ext-mx-out -> asav ------------------ optionally scan outbound email for spam and virus .. _conn-73: int-mx -> wallace ----------------- submit messages to wallace for evaluation, application of policy, etc. .. _conn-74: int-mx -> asav -------------- optionally, check internal email for spam and virus .. _conn-75: roundcube -> chwala ------------------- .. _conn-76: roundcube -> freebusy --------------------- Free/Busy information for Roundcube calendaring. .. _conn-77: imapbb -> imapba ---------------- Replication from IMAP Backend .. rubric:: Footnotes .. [#] This is not an outbound connection for :ref:`ldapw`, but rather a protocol response to a long-lived connection from :ref:`kolabd` to :ref:`ldapw`. .. [#] The recording for the ``nsuniqueid`` and result attribute value allow :ref:`kolabd` to respond to change notifications that modify the value of the result attribute. .. [#] Using proxy-authentication authorizes the connection as if it were the target user itself logging on to IMAP. This is important for :ref:`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. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] Authentication is not allowed over connections not already protected on a different layer. .. [#] The administrative connection for top-level mailboxes is re-used for as long as it is functional. .. [#] Second connection, proxy authenticated. Occurs as frequently as there are new user accounts added to LDAP. .. [#] 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. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] Unauthenticated, w/ STARTTLS. .. [#] 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. .. [#] Implicit SSL -- better. .. [#] Unauthenticated, w/ STARTTLS.