1 = Outgoing Messages = 2 3 When messages are sent by a mail client, imip-agent employs an outgoing 4 message rule in the MTA to provide a handler to inspect any calendar-related 5 content and to update its records. 6 7 {{{#!graphviz 8 //format=svg 9 //transform=notugly 10 digraph outgoing { 11 node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Outgoing messages"]; 12 edge [tooltip="Outgoing messages"]; 13 rankdir=LR; 14 15 mail [label="Outgoing mail",shape=folder,style=filled,fillcolor=cyan]; 16 17 subgraph { 18 rank=same; 19 outgoingrouter [label="Outgoing router"]; 20 } 21 22 subgraph { 23 rank=same; 24 outgoinghandler [label="Outgoing handler",style=filled,fillcolor=gold]; 25 scheduling [label="Scheduling",shape=ellipse,style=filled,fillcolor=gold]; 26 freebusy [label="Free/busy",shape=folder,style=filled,fillcolor=gold]; 27 manager [label="imip-manager",style=filled,fillcolor=gold]; 28 } 29 30 client [label="Mail clients"]; 31 32 client -> mail; 33 mail -> outgoingrouter -> outgoinghandler -> scheduling -> freebusy -> manager; 34 } 35 }}} 36 37 The management interface does not use this outgoing message rule because it 38 sends messages from the general calendar address (for example, 39 `calendar@example.com`), and there is no trivial way of deducing the identity 40 of the real sender. Instead, the manager explicitly sends suitably-modified 41 messages to the address of the user operating the interface to achieve the 42 same effect as the outgoing message rule, as well as to notify any mail 43 clients that would normally be managing calendar events on behalf of the user. 44 45 {{{#!graphviz 46 //format=svg 47 //transform=notugly 48 digraph manager_outgoing { 49 node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Outgoing messages from the manager"]; 50 edge [tooltip="Outgoing messages from the manager"]; 51 rankdir=LR; 52 53 mail [label="Outgoing mail",shape=folder,style=filled,fillcolor=cyan]; 54 55 subgraph { 56 rank=same; 57 personrouter [label="Person router"]; 58 } 59 60 subgraph { 61 rank=same; 62 personhandler [label="Person handler",style=filled,fillcolor=gold]; 63 scheduling [label="Scheduling",shape=ellipse,style=filled,fillcolor=gold]; 64 freebusy [label="Free/busy",shape=folder,style=filled,fillcolor=gold]; 65 manager [label="imip-manager",style=filled,fillcolor=gold]; 66 } 67 68 webserver [label="Web server\n(Apache, ...)",tooltip="Web server"]; 69 70 browser [label="Web browsers"]; 71 72 browser -> webserver -> manager -> mail -> personrouter -> 73 personhandler -> scheduling -> freebusy -> manager; 74 } 75 }}} 76 77 == Events == 78 79 {{{#!table 80 '''Method''' || '''Effect on Objects''' || '''Effect on Free/Busy''' 81 || '''Effect on Request Queue''' 82 == 83 `CANCEL` 84 || Remove selected attendees or an entire event 85 || Remove record if entire event is cancelled 86 ||<rowspan="4"> Remove any queue entry 87 == 88 `PUBLISH` 89 ||<rowspan="2"> Add or update object, removing specific recurrences of 90 .. recurring events 91 ||<rowspan="2"> Add record for the event, removing records for specific 92 .. recurrences of an event 93 == 94 `REQUEST` 95 == 96 `REPLY` 97 || Merge attendee participation information 98 || Update records for the event, preserving specific recurrence records when 99 .. changing a recurring event 100 }}} 101 102 The effect of the outgoing handler is to ensure that the user's free/busy 103 status reflects the consequences of their stated attendance of events, and for 104 the object records to reflect the most recent state of each event. 105 106 == Other Object Types == 107 108 Other object types are not handled. Free/busy information, if exchanged, is 109 not obtained by the handler to replace its own records.