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