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