imip-agent

Annotated docs/wiki/WebServerIntegration

1384:9baa0aae5b43
2017-10-31 Paul Boddie Provided a convenience function for instantiating handler objects. Added a mode that produces output instead of sending messages without also producing debugging information. client-editing-simplification
paul@933 1
= Web Server Integration =
paul@933 2
paul@934 3
Although imip-agent is mostly concerned with e-mail messaging, it can
paul@934 4
integrate with a Web server for the following purposes:
paul@933 5
paul@961 6
 * To [[../FreeBusyPublishing|publish free/busy information]] for calendar users
paul@961 7
 * To provide a [[../CalendarManager|management interface]] for calendar users
paul@933 8
paul@934 9
Currently, imip-agent provides configuration files for Apache, but other Web
paul@934 10
servers may also be supported.
paul@933 11
paul@961 12
== Authentication and Access Control in Apache ==
paul@933 13
paul@934 14
Apache supports a range of mechanisms for protecting resources and
paul@934 15
authenticating users. Most usefully for imip-agent given the
paul@934 16
[[../MailIntegration|e-mail integration]] requirements, modules supporting
paul@934 17
[[http://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html|LDAP]] and
paul@949 18
[[http://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html|text-based lists]]
paul@949 19
of users are available for such purposes.
paul@961 20
paul@961 21
== Configuring Web Servers for Free/Busy Publishing ==
paul@961 22
paul@961 23
Each user may request the [[../FreeBusyPublishing|publishing]] of their
paul@961 24
free/busy information by configuring certain settings. The
paul@961 25
`conf/apache/imip-agent.conf` file provides a configuration file for
paul@961 26
deployment with the Apache Web server software that exposes a directory for
paul@961 27
Web publishing containing the published free/busy information.
paul@961 28
paul@963 29
On Debian, to enable the serving of free/busy data, copy the configuration
paul@963 30
file to the Apache configuration and enable it as follows
paul@963 31
paul@963 32
{{{
paul@963 33
cp conf/apache/imip-agent.conf /etc/apache2/sites-available/
paul@963 34
a2ensite imip-agent
paul@963 35
}}}
paul@963 36
paul@961 37
Access to free/busy information may not be moderated, but Web server
paul@961 38
directives can be introduced to impose access controls. Mail programs that
paul@961 39
wish to consult the free/busy information may have problems in dealing with
paul@961 40
authentication mechanisms, however, and it may be regarded as acceptable in
paul@961 41
certain environments to expose such information publicly or with
paul@961 42
network-specific access constraints.
paul@961 43
paul@961 44
== Configuring Web Servers for the Calendar Management Interface ==
paul@961 45
paul@961 46
A [[../CalendarManager|calendar management interface]] is provided to allow
paul@961 47
users to view and interact with their calendars through the Web. The
paul@961 48
`conf/apache/imip-manager.conf` file provides a configuration file for
paul@961 49
deployment with the Apache Web server software that enables this interface.
paul@961 50
paul@988 51
=== Configuring the Management Interface ===
paul@988 52
paul@1214 53
The `config.txt` file described in the [[../Configuration|configuration guide]]
paul@988 54
provides some settings that can be adjusted to configure the management
paul@988 55
interface.
paul@988 56
paul@988 57
{{{{#!table
paul@988 58
'''Setting''' || '''Result'''
paul@988 59
==
paul@988 60
`MANAGER_INTERFACE`
paul@988 61
|| If set to `True`, causes links to the interface to be included in
paul@988 62
.. notification messages sent by imip-agent. If set to `False`, such links
paul@988 63
.. will be omitted.
paul@988 64
==
paul@988 65
`MANAGER_URL`
paul@988 66
|| The deployment URL of the management interface. Together with the
paul@988 67
.. `MANAGER_PATH` described below, this forms the basis of the links
paul@988 68
.. described above. Some examples:
paul@988 69
{{{
paul@988 70
http://webserver.example.com/
paul@988 71
http://webserver.example.com/webapps/
paul@988 72
}}}
paul@988 73
It can be left as `None` and a default URL will be built using the
paul@988 74
hostname of the system running the software.
paul@988 75
==
paul@988 76
`MANAGER_URL_SCHEME`
paul@988 77
|| The URL scheme or protocol employed if a default URL is being constructed
paul@988 78
.. instead of `MANAGER_URL` providing a value. Some examples:
paul@988 79
{{{
paul@988 80
http://
paul@988 81
https://
paul@988 82
}}}
paul@988 83
Since the manager is only likely to be available via common Web protocols,
paul@988 84
other values may not make much sense.
paul@988 85
==
paul@988 86
`MANAGER_PATH`
paul@988 87
|| The "path info" added to the `MANAGER_URL` that locates the management
paul@988 88
.. interface in its deployment location. Some examples:
paul@988 89
{{{
paul@988 90
/
paul@988 91
/imip-agent
paul@988 92
}}}
paul@988 93
This setting affects the `imip-manager.conf` file, whose `Alias`, `ScriptAlias`
paul@988 94
and `Location` directives should be changed if this setting is changed.
paul@988 95
}}}}
paul@988 96
paul@988 97
=== Deploying the Configuration ===
paul@988 98
paul@963 99
On Debian, to enable the management interface, copy the configuration file to
paul@963 100
the Apache configuration and enable it as follows:
paul@963 101
paul@963 102
{{{
paul@963 103
cp conf/apache/imip-manager.conf /etc/apache2/sites-available/
paul@963 104
a2ensite imip-manager
paul@963 105
}}}
paul@963 106
paul@961 107
The management interface is deployed as a CGI program, meaning that a suitable
paul@961 108
module must be enabled in the Apache configuration. On Debian, this is done as
paul@961 109
follows:
paul@961 110
paul@961 111
{{{
paul@961 112
a2enmod cgi
paul@961 113
}}}
paul@961 114
paul@961 115
Since such access to calendars should only be performed by identified
paul@961 116
users, access controls are suggested in the configuration file. Modules
paul@961 117
providing additional authentication support may need to be enabled. For
paul@961 118
example, on Debian, the LDAP authentication/authorisation support is enabled
paul@961 119
as follows:
paul@961 120
paul@961 121
{{{
paul@961 122
a2enmod authnz_ldap
paul@961 123
}}}
paul@988 124
paul@988 125
=== Authenticating Users ===
paul@988 126
paul@988 127
The `imip-manager.conf` file contains example directives for accessing
paul@988 128
authentication services or data.
paul@988 129
paul@988 130
Where LDAP authentication is to be used, the appropriate LDAP URL needs to be
paul@988 131
specified using a directive. For example:
paul@988 132
paul@988 133
{{{
paul@988 134
AuthLDAPUrl "ldap://localhost/ou=People,dc=example,dc=com?mail?sub"
paul@988 135
}}}
paul@988 136
paul@988 137
Here, the `mail` attribute is used to match the username provided in the
paul@988 138
authentication dialogue. Configuration changes may be required within the LDAP
paul@988 139
infrastructure to allow this mechanism to function, but this is not described
paul@988 140
here.
paul@988 141
paul@988 142
Meanwhile, particularly where [[../MailIntegration/Simple|simple integration]]
paul@988 143
strategies have been chosen, a plain text user file can be employed to
paul@988 144
authenticate users. For example:
paul@988 145
paul@988 146
{{{
paul@988 147
AuthUserFile /var/www/imip-agent/users
paul@988 148
}}}
paul@988 149
paul@988 150
Such a file should be created using the usual tools provided by the Apache Web
paul@988 151
server distribution.