imip-agent

Annotated README.txt

471:f5fd49a85dc5
2015-03-31 Paul Boddie Change the cursor over day and timepoint headings and over empty slots.
paul@102 1
imip-agent
paul@102 2
==========
paul@102 3
paul@102 4
This software implements an agent that can interpret e-mail messages
paul@102 5
containing calendar information, maintain availability records for scheduling
paul@102 6
participants, act on behalf of resources and other entities that need to
paul@102 7
participate in scheduling, and support user interfaces for end-users whose
paul@102 8
e-mail programs do not understand calendar data.
paul@102 9
paul@102 10
Getting Started
paul@102 11
===============
paul@102 12
paul@102 13
Eventually, this information should be incorporated into packages for various
paul@102 14
operating system distributions, and these instructions should be largely
paul@102 15
superfluous for most users.
paul@102 16
paul@102 17
System User and Filesystem Access
paul@102 18
---------------------------------
paul@102 19
paul@209 20
A system group needs to be created for LMTP delivery and for certain users to
paul@209 21
share resources:
paul@209 22
paul@209 23
  addgroup lmtp
paul@209 24
paul@209 25
This group should be employed for LMTP delivery by systems like Cyrus and
paul@209 26
Dovecot. See the section on configuring mail systems for delivery for more
paul@209 27
information.
paul@209 28
paul@102 29
A system user needs to be created and to belong to certain groups in order to
paul@102 30
deliver messages to mail stores and to publish resources on the Web:
paul@102 31
paul@102 32
  useradd -d /var/lib/imip-agent -m -U -G lmtp,www-data -r imip-agent
paul@102 33
paul@209 34
Store details and published resources need to be accessible by the imip-agent
paul@209 35
and www-data users. Thus, www-data also needs to belong to the lmtp group:
paul@102 36
paul@209 37
  adduser www-data lmtp
paul@209 38
paul@209 39
Stored and published data is then initialised as follows:
paul@102 40
paul@147 41
  mkdir /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@147 42
  mkdir /var/www/imip-agent/static
paul@147 43
  chown imip-agent /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@147 44
  chown imip-agent /var/www/imip-agent/static
paul@209 45
  chgrp lmtp /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@209 46
  chgrp lmtp /var/www/imip-agent/static
paul@147 47
  chmod g+ws /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@147 48
  chmod g+ws /var/www/imip-agent/static
paul@102 49
paul@102 50
Here, the setgid flag should ensure that new files and directories have the
paul@102 51
appropriate group associated with them.
paul@102 52
paul@102 53
Fixing ownership can be done as follows:
paul@102 54
paul@102 55
  chown -R imip-agent /var/lib/imip-agent
paul@102 56
  chgrp -R imip-agent /var/lib/imip-agent
paul@147 57
  chown -R imip-agent /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@147 58
  chown -R imip-agent /var/www/imip-agent/static
paul@209 59
  chgrp -R lmtp /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@209 60
  chgrp -R lmtp /var/www/imip-agent/static
paul@147 61
  chmod -R g+w /var/lib/imip-agent/store /var/lib/imip-agent/preferences
paul@147 62
  chmod -R g+w /var/www/imip-agent/static
paul@102 63
paul@102 64
Installing the Software
paul@102 65
-----------------------
paul@102 66
paul@102 67
The tools/install.sh script should install the software in appropriate
paul@175 68
locations. See the prerequisites below for other software that will be
paul@175 69
required.
paul@102 70
paul@102 71
Configuring Other Software
paul@102 72
--------------------------
paul@102 73
paul@102 74
The conf directory contains subdirectories for different systems:
paul@102 75
paul@102 76
  apache        Apache 2 site configuration for publishing resources
paul@102 77
  exim          Exim 4 routing and transport configuration
paul@102 78
  postfix       Postfix routing and transport configuration
paul@102 79
paul@102 80
Either Exim or Postfix can be chosen as a mail system supporting the agent.
paul@143 81
paul@143 82
Configuring Mail Systems for the Agent
paul@143 83
--------------------------------------
paul@143 84
paul@143 85
The essential aspect of mail system configuration involves mail transports and
paul@143 86
the integration of agent programs into the mail processing pipeline. Thus, the
paul@143 87
following files are of particular interest:
paul@143 88
paul@175 89
For Exim (in conf/exim)...
paul@143 90
paul@175 91
  30_exim4-config_people                Integration of agent programs
paul@175 92
  30_exim4-config_people_outgoing       ...
paul@175 93
  30_exim4-config_resources             ...
paul@143 94
paul@175 95
For Postfix (in conf/postfix)...
paul@143 96
paul@175 97
  master.cf.items                       Integration of agent programs (for
paul@175 98
                                        inclusion in master.cf)
paul@175 99
  transport                             Configuration of agent transports
paul@175 100
  virtual                               Configuration of outgoing mail routing
paul@143 101
paul@143 102
Such files need adjusting for the deployment environment so that, for example,
paul@143 103
the example.com domain would be replaced with a suitable value.
paul@143 104
paul@143 105
Where $lmtp_socket is employed, a suitable filesystem path is required; see
paul@143 106
below for a discussion of LMTP and mail delivery.
paul@143 107
paul@143 108
Configuring Mail Systems for Mail Recipients
paul@143 109
--------------------------------------------
paul@143 110
paul@143 111
The software should operate independently of the way mail recipients are
paul@143 112
identified in any given mail system, and thus does not dictate things such as
paul@143 113
routing or account querying. However, example configuration files are provided
paul@143 114
that demonstrate the use of LDAP to identify mail recipients:
paul@143 115
paul@175 116
For Exim (in conf/exim)...
paul@143 117
paul@175 118
  010_exim4-config_people_outgoing          Defines recipients and outgoing
paul@175 119
                                            mail routing
paul@175 120
  890_exim4-config_ldap_people              ...
paul@175 121
  890_exim4-config_ldap_resources           ...
paul@143 122
paul@175 123
For Postfix with LDAP (in conf/postfix/ldap)...
paul@143 124
paul@175 125
  main.cf.example                           Defines recipients and outgoing
paul@175 126
                                            mail routing (for inclusion in
paul@175 127
                                            main.cf)
paul@175 128
paul@177 129
  virtual_alias_maps_people.cf              Defines recipients and outgoing
paul@177 130
  virtual_alias_maps_people_outgoing.cf     mail routing
paul@176 131
  virtual_alias_maps_resources.cf           ...
paul@143 132
paul@177 133
For Postfix without LDAP (in conf/postfix/simple)...
paul@177 134
paul@177 135
  main.cf.example                           Defines recipients and outgoing
paul@177 136
                                            mail routing (for inclusion in
paul@177 137
                                            main.cf)
paul@177 138
paul@177 139
  virtual_alias_maps_people                 Defines recipients and outgoing
paul@177 140
  virtual_alias_maps_people_outgoing        mail routing
paul@177 141
  virtual_alias_maps_resources              ...
paul@177 142
paul@177 143
The above recipient identification configuration examples can be disregarded
paul@177 144
in favour of other ways of defining mail recipients, subject to the needs of
paul@177 145
any given environment.
paul@143 146
paul@144 147
LDAP Representations for Mail Recipients
paul@144 148
----------------------------------------
paul@144 149
paul@144 150
Relevant LDAP resources for structuring recipient information include the
paul@144 151
following:
paul@144 152
paul@175 153
  RFC 4524                                  Defines the mail attribute
paul@175 154
  http://tools.ietf.org/html/rfc4524
paul@175 155
paul@175 156
  RFC 2798                                  Defines the inetOrgPerson object
paul@175 157
  http://tools.ietf.org/html/rfc2798        class
paul@175 158
paul@175 159
  RFC 2739                                  Defines the calEntry object class
paul@175 160
  https://tools.ietf.org/html/rfc2739       supporting calFBURL
paul@144 161
paul@144 162
An additional draft RFC describes the mailRecipient object class:
paul@144 163
paul@144 164
  https://tools.ietf.org/html/draft-lachman-ldap-mail-routing-03
paul@144 165
paul@144 166
Resource schemas for LDAP are not effectively standardised for the purposes of
paul@145 167
this software. A useful object class, inetResource, was defined for the
paul@145 168
iPlanet Calendar Server:
paul@145 169
paul@145 170
  http://docs.oracle.com/cd/E19566-01/819-4437/6n6jckqrf/index.html#anocg
paul@145 171
  http://docs.oracle.com/cd/E19566-01/819-4437/6n6jckqr8/index.html
paul@145 172
paul@145 173
Although Kolab maintains notions of resources, they are tied up with the
paul@145 174
notion of a shared folder and the kolabSharedFolder object class, although the
paul@145 175
mailRecipient object class is employed by resources in Kolab.
paul@144 176
paul@143 177
Configuring Mail Systems for Mail Delivery
paul@143 178
------------------------------------------
paul@143 179
paul@143 180
The agent software assumes that delivery of mail to recipients may be
paul@143 181
performed using LMTP to a suitable mailbox provider. This is largely beyond
paul@143 182
the scope of this document, but systems such as Cyrus and Dovecot can be
paul@143 183
configured to provide a Unix domain socket offering support for LMTP
paul@143 184
connections.
paul@133 185
paul@209 186
For Cyrus, the following bug report is pertinent:
paul@209 187
paul@209 188
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=494746
paul@209 189
paul@209 190
A permanent change in permissions on the Cyrus LMTP socket is therefore
paul@209 191
required to make delivery available to the lmtp group:
paul@209 192
paul@209 193
  dpkg-statoverride --force --update --add \
paul@209 194
    cyrus lmtp 750 /var/run/cyrus/socket
paul@209 195
paul@133 196
Prerequisites
paul@133 197
-------------
paul@133 198
paul@133 199
Depending on the mail transport agent (MTA) chosen, the following packages are
paul@133 200
required for this software to work on Debian systems:
paul@133 201
paul@133 202
  Exim:    exim4-daemon-heavy
paul@133 203
  Postfix: postfix postfix-ldap
paul@149 204
paul@175 205
The software itself requires the following packages:
paul@175 206
paul@175 207
  pytz:    python-tz
paul@175 208
paul@149 209
The management Web interface requires the following packages:
paul@149 210
paul@149 211
  Babel:   python-babel