paul@933 | 1 | = imip-agent = |
paul@933 | 2 | |
paul@963 | 3 | imip-agent is an extension for existing mail systems (such as |
paul@963 | 4 | [[http://exim.org/|Exim]] and [[http://www.postfix.org/|Postfix]]) |
paul@963 | 5 | providing extra support for calendaring and scheduling. |
paul@933 | 6 | |
paul@934 | 7 | * It uses the [[https://tools.ietf.org/html/rfc5545|iCalendar]], |
paul@947 | 8 | [[https://tools.ietf.org/html/rfc5546|iTIP]] and |
paul@947 | 9 | [[https://tools.ietf.org/html/rfc6047|iMIP]] Internet standards. |
paul@933 | 10 | |
paul@934 | 11 | * It can inspect messages containing calendar objects and extract |
paul@947 | 12 | availability information for sharing and publication. You and your users |
paul@963 | 13 | decide exactly which kind of messages it will inspect, whose messages it |
paul@963 | 14 | will inspect, and for whom no inspection or sharing will occur at all. |
paul@933 | 15 | |
paul@963 | 16 | * It can provide a [[/CalendarManager|Web-based interface]] to calendar |
paul@973 | 17 | information for users who cannot or choose not to use |
paul@973 | 18 | [[/MailClients|mail software]] with calendaring support. This is optional |
paul@973 | 19 | and your users can choose to adjust, ignore or disable this functionality. |
paul@933 | 20 | |
paul@934 | 21 | * It supports autonomous entities such as meeting rooms and resources, |
paul@947 | 22 | automatically accepting or declining invitations according to their |
paul@947 | 23 | schedules. You can adjust this behaviour to implement your own policies. |
paul@933 | 24 | |
paul@963 | 25 | * It is [[https://www.fsf.org/about/what-is-free-software|Free Software]], |
paul@963 | 26 | giving you the freedom to see what the software does, as well as the freedom |
paul@963 | 27 | to modify and share the software with others. |
paul@933 | 28 | |
paul@971 | 29 | {{{#!graphviz |
paul@971 | 30 | //format=svg |
paul@971 | 31 | //transform=notugly |
paul@971 | 32 | digraph architecture { |
paul@971 | 33 | node [shape=box,fontsize="16.0",fontname="sans-serif",tooltip="The imip-agent architecture"]; |
paul@971 | 34 | edge [tooltip="The imip-agent architecture"]; |
paul@971 | 35 | rankdir=LR; |
paul@971 | 36 | |
paul@971 | 37 | mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; |
paul@971 | 38 | MTA [label="MTA\n(Exim, Postfix, ...)",tooltip="MTA"]; |
paul@971 | 39 | |
paul@971 | 40 | subgraph { |
paul@971 | 41 | rank=same; |
paul@971 | 42 | agent [label="imip-agent",style=filled,fillcolor=gold]; |
paul@971 | 43 | scheduling [label="Scheduling",shape=ellipse,style=filled,fillcolor=gold]; |
paul@971 | 44 | freebusy [label="Free/busy",shape=folder,style=filled,fillcolor=gold]; |
paul@971 | 45 | manager [label="imip-manager",style=filled,fillcolor=gold]; |
paul@971 | 46 | } |
paul@971 | 47 | |
paul@971 | 48 | mailbox [label="Mailboxes\n(Cyrus, Dovecot, ...)",tooltip="Mailboxes"]; |
paul@971 | 49 | webserver [label="Web server\n(Apache, ...)",tooltip="Web server"]; |
paul@971 | 50 | client [label="Mail clients"]; |
paul@971 | 51 | browser [label="Web browsers"]; |
paul@971 | 52 | |
paul@971 | 53 | mail -> MTA -> agent -> mailbox -> client; |
paul@971 | 54 | agent -> scheduling -> freebusy -> webserver -> client; |
paul@971 | 55 | freebusy -> manager; |
paul@971 | 56 | manager -> webserver [penwidth="3.0"]; |
paul@971 | 57 | webserver -> browser [penwidth="3.0"]; |
paul@971 | 58 | scheduling -> MTA -> mail [style=dashed]; |
paul@971 | 59 | } |
paul@971 | 60 | }}} |
paul@971 | 61 | |
paul@933 | 62 | Unlike some monolithic groupware solutions... |
paul@933 | 63 | |
paul@963 | 64 | * It does not require you to change your [[/MailIntegration|mail delivery]] |
paul@963 | 65 | software or your [[/MailboxIntegration|mail storage]] software (subject to |
paul@963 | 66 | existing support provided by imip-agent; support for other software can |
paul@963 | 67 | always be added). |
paul@933 | 68 | |
paul@973 | 69 | * It does not require your users to change their [[/MailClients|mail client]] |
paul@973 | 70 | software. |
paul@933 | 71 | |
paul@934 | 72 | * It does not insist that everybody must store their schedules on a single |
paul@947 | 73 | server in order to collaboratively schedule events. |
paul@933 | 74 | |
paul@934 | 75 | * Instead, imip-agent takes advantage of the decentralized nature of the |
paul@948 | 76 | iCalendar and iMIP Internet standards. |
paul@933 | 77 | |
paul@934 | 78 | * It allows people in your organisation to collaborate with people outside |
paul@947 | 79 | your organisation without insisting that they join your infrastructure or |
paul@947 | 80 | that everybody join some cloud service that keeps everyone's information |
paul@947 | 81 | within a single, typically proprietary, remote service (that may also be |
paul@947 | 82 | potentially vulnerable to intrusion and surveillance). |
paul@933 | 83 | |
paul@934 | 84 | The role of imip-agent is to bridge the gap between plain e-mail and |
paul@934 | 85 | "full-stack" groupware solutions, thus allowing organisations and individuals |
paul@934 | 86 | to augment their existing infrastructure instead of being compelled to perform |
paul@934 | 87 | costly and unnecessary migrations and infrastructure transformations. |
paul@933 | 88 | |
paul@933 | 89 | == Adding Calendaring to E-Mail == |
paul@933 | 90 | |
paul@934 | 91 | With just an e-mail system, users can already create and schedule calendar |
paul@934 | 92 | events using any mail or groupware client software that supports calendars and |
paul@934 | 93 | that already supports [[http://tools.ietf.org/html/rfc5545|iCalendar]] and |
paul@934 | 94 | [[http://tools.ietf.org/html/rfc6047|iMIP]]. |
paul@933 | 95 | |
paul@934 | 96 | Starting with an e-mail system, imip-agent can be used to add further support |
paul@934 | 97 | for calendaring: |
paul@933 | 98 | |
paul@933 | 99 | {{{#!table |
paul@933 | 100 | '''Requirement''' || '''Solution''' |
paul@933 | 101 | == |
paul@934 | 102 | Your users probably want to know when other people are available and when they |
paul@934 | 103 | are busy. |
paul@934 | 104 | || |
paul@934 | 105 | Although [[https://tools.ietf.org/html/rfc6047|iMIP]] supports this, most mail |
paul@934 | 106 | programs do not, so imip-agent will gather information about events and |
paul@961 | 107 | [[/FreeBusyPublishing|publish it for retrieval via HTTP]]. It will also respond |
paul@961 | 108 | to any iMIP requests for free/busy information via mail. |
paul@933 | 109 | == |
paul@933 | 110 | Organisations may want to coordinate access to resources using calendaring. |
paul@934 | 111 | || |
paul@961 | 112 | Here, imip-agent can provide [[/AgentPrograms|autonomous agents]] that can |
paul@961 | 113 | respond to event invitations, allowing users to book resources and to see |
paul@961 | 114 | published availability information for those resources. |
paul@933 | 115 | == |
paul@934 | 116 | Some users may not be using mail programs that understand calendars and |
paul@934 | 117 | events. |
paul@934 | 118 | || |
paul@961 | 119 | Here, imip-agent can provide a [[/CalendarManager|Web interface]] to let |
paul@961 | 120 | them respond to invitations and to create and schedule their own events. |
paul@933 | 121 | }}} |
paul@933 | 122 | |
paul@934 | 123 | According to your requirements, any or all of the above solutions can be |
paul@934 | 124 | implemented, providing as much of a groupware solution as you need. |
paul@933 | 125 | |
paul@955 | 126 | == Deployment Notes == |
paul@955 | 127 | |
paul@955 | 128 | * [[/GettingStarted|Getting Started]] |
paul@963 | 129 | * [[/Configuration|Configuration]] and [[/Preferences|Preferences]] |
paul@963 | 130 | * [[/CalendarManager|Calendar Management Interface]] |
paul@963 | 131 | * [[/FreeBusyPublishing|Free/Busy Publishing]] |
paul@955 | 132 | |
paul@933 | 133 | == Design and Implementation Notes == |
paul@933 | 134 | |
paul@934 | 135 | Details of the mechanisms employed by imip-agent are described in the |
paul@934 | 136 | following documents: |
paul@933 | 137 | |
paul@933 | 138 | * [[/CounterProposals|Counter-Proposals and Offers]] |
paul@955 | 139 | * [[/CronIntegration|Cron Task Scheduler Integration]] |
paul@933 | 140 | * [[/MailIntegration|E-Mail Integration]] |
paul@933 | 141 | * [[/EventRecurrences|Event Recurrences]] |
paul@933 | 142 | * [[/IncomingMessages|Incoming Messages]] |
paul@933 | 143 | * [[/OutgoingMessages|Outgoing Messages]] |
paul@955 | 144 | * [[/Testing|Testing]] |
paul@933 | 145 | * [[/UseCases|Use Cases]] |
paul@933 | 146 | * [[/WebServerIntegration|Web Server Integration]] |