2018-11-13 04:09:59 -06:00
|
|
|
|
# SOGo: Manage resources (Free/Busy)
|
|
|
|
|
|
2018-11-13 04:16:52 -06:00
|
|
|
|
[TOC]
|
|
|
|
|
|
2018-11-13 04:09:59 -06:00
|
|
|
|
> This tutorial is a slight rewritten of SOGo wiki tutorial for iRedMail:
|
|
|
|
|
> [Use Resources with SOGo](http://wiki.sogo.nu/ResourceConfiguration).
|
|
|
|
|
|
|
|
|
|
SOGo supports the management of resources like meeting rooms. A resource has,
|
|
|
|
|
just like a person, a calendar, an email address and may be invited to events.
|
|
|
|
|
The big difference is that resources auto accept invitations.
|
|
|
|
|
|
|
|
|
|
When you mark a mail user as a meeting room resource, SOGo will display its
|
|
|
|
|
Free/Busy info when you invite this user in a calendar event.
|
|
|
|
|
|
2018-11-13 04:42:51 -06:00
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
|
|
This document has been tested with iRedMail-0.9.8 and SOGo-4.0.x, but it should
|
|
|
|
|
work fine with any iRedMail releases and SOGo v2/v3/v4.
|
2018-11-13 04:09:59 -06:00
|
|
|
|
|
|
|
|
|
## OpenLDAP backend
|
|
|
|
|
|
|
|
|
|
### Add missing LDAP schema files
|
|
|
|
|
|
|
|
|
|
We need 2 new LDAP schema files, you can click links below to download them:
|
|
|
|
|
|
|
|
|
|
* [calresource](./files/sogo/calresource.schema). It's defined in
|
|
|
|
|
[IETF draft](https://tools.ietf.org/id/draft-cal-resource-schema-03.txt)
|
|
|
|
|
(not final yet). Contributed by Martin Lehman on the
|
|
|
|
|
[SOGo mailing list](https://www.mail-archive.com/users@sogo.nu/msg05186.html)
|
|
|
|
|
(in 29 April 2011).
|
|
|
|
|
* [calentry](./files/sogo/calentry.schema), defined in RFC 2739.
|
|
|
|
|
|
|
|
|
|
Upload downloaded schema files to iRedMail server which runs OpenLDAP backend,
|
|
|
|
|
copy them to default schema directory:
|
|
|
|
|
|
|
|
|
|
* On RHEL/CentOS, it's `/etc/openldap/schema/`
|
|
|
|
|
* On Debian/Ubuntu, it's `/etc/ldap/schema/`
|
|
|
|
|
* On FreeBSD, it's `/usr/local/etc/openldap/schema/`
|
|
|
|
|
* On OpenBSD, it's `/etc/openldap/schema/`
|
|
|
|
|
|
|
|
|
|
Edit OpenLDAP config file `slapd.conf` with your favourite text editor, add 2
|
|
|
|
|
new `include` directives right after the `iredmail.schema` line like
|
|
|
|
|
below:
|
|
|
|
|
|
|
|
|
|
* On RHEL/CentOS, it's `/etc/openldap/slapd.conf`
|
|
|
|
|
* On Debian/Ubuntu, it's `/etc/ldap/slapd.conf`
|
|
|
|
|
* On FreeBSD, it's `/usr/local/etc/openldap/slapd.conf`
|
|
|
|
|
* On OpenBSD, it's `/etc/openldap/slapd.conf`
|
|
|
|
|
|
|
|
|
|
!!! attention
|
|
|
|
|
|
|
|
|
|
Please make sure you're using the correct schema directory.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# this line already exists
|
|
|
|
|
include /etc/openldap/schema/iredmail.schema
|
|
|
|
|
|
2018-11-13 08:42:54 -06:00
|
|
|
|
# Add below 2 new lines.
|
|
|
|
|
# WARNING: calentry.schema must be loaded before calresource.schema.
|
2018-11-13 04:09:59 -06:00
|
|
|
|
include /etc/openldap/schema/calentry.schema
|
2018-11-13 08:42:54 -06:00
|
|
|
|
include /etc/openldap/schema/calresource.schema
|
2018-11-13 04:09:59 -06:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Since we don't use any new ldap attribute names in LDAP query filter, no index
|
|
|
|
|
required for new attribute names.
|
|
|
|
|
|
|
|
|
|
Now restart OpenLDAP service.
|
|
|
|
|
|
|
|
|
|
### Add missing settings in SOGo config file
|
|
|
|
|
|
2018-11-14 19:42:17 -06:00
|
|
|
|
SOGo needs 2 parameters to understand which LDAP attributes it should check
|
2018-11-13 04:09:59 -06:00
|
|
|
|
to understand the resources:
|
|
|
|
|
|
|
|
|
|
* `KindFieldName`: specify the LDAP attribute name which stores resource type.
|
|
|
|
|
|
|
|
|
|
SOGo will try to determine if the value of the field corresponds to either
|
|
|
|
|
"group", "location" or "thing". If thatās the case, SOGo will consider the
|
|
|
|
|
returned entry to be a resource.
|
|
|
|
|
|
2018-11-14 19:42:17 -06:00
|
|
|
|
* `MultipleBookingsFieldName`: specify the LDAP attribute name which stores
|
2018-11-13 04:09:59 -06:00
|
|
|
|
multiple booking type.
|
|
|
|
|
|
|
|
|
|
The value of this LDAP attribute is the maximum number of concurrent events
|
|
|
|
|
to which a resource can be part of at any point in time.
|
|
|
|
|
|
|
|
|
|
* If this is set to __0__, or if the attribute is __missing__, it means no limit.
|
|
|
|
|
* If set to __-1__, no limit is imposed but the resource will be marked as
|
|
|
|
|
busy the first time it is booked.
|
|
|
|
|
|
|
|
|
|
Edit SOGo config file `sogo.conf`, add these 2 new parameters in the global
|
|
|
|
|
address book section like below:
|
|
|
|
|
|
|
|
|
|
* On RHEL/CentOS, it's `/etc/sogo/sogo.conf`
|
|
|
|
|
* On Debian/Ubuntu, it's `/etc/sogo/sogo.conf`
|
|
|
|
|
* On FreeBSD, it's `/usr/local/etc/sogo/sogo.conf`
|
|
|
|
|
* On OpenBSD, it's `/etc/sogo/sogo.conf`
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
SOGoUserSources = (
|
|
|
|
|
...
|
|
|
|
|
{
|
|
|
|
|
// Used for global address book
|
|
|
|
|
type = ldap;
|
|
|
|
|
id = global_addressbook;
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
// Add below 2 lines
|
|
|
|
|
KindFieldName = "Kind";
|
|
|
|
|
MultipleBookingsFieldName = "MultipleBookings";
|
|
|
|
|
}
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Now restart SOGo service.
|
|
|
|
|
|
|
|
|
|
### Testing
|
|
|
|
|
|
|
|
|
|
We use mail domain name `example.com` for example below, you need to replace it
|
|
|
|
|
by your real domain name during testing.
|
|
|
|
|
|
|
|
|
|
* Create a testing mail user with iRedAdmin. for example, user `meetingroom@example.com`.
|
|
|
|
|
* Install package `ldapvi` on iRedMail server, then run command `ldapvi` like this:
|
|
|
|
|
|
|
|
|
|
!!! attention
|
|
|
|
|
|
|
|
|
|
* `ldapvi` is like vi/vim text editor for editing LDIF data directly.
|
|
|
|
|
* You need to replace `dc=xx,dc=xx` by the real LDAP suffix.
|
|
|
|
|
* It will ask you to input password of `cn=manager,dc=xx,dc=xx`.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ldapvi -D 'cn=manager,dc=xx,dc=xx' -b 'o=domains,dc=xx,dc=xx' -W "mail=meetingroom@example.com"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
In the ldapvi editor, you should see full LDIF data of user
|
|
|
|
|
`meetingroom@example.com`. Please append few lines for this user:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
objectClass: CalendarResource
|
|
|
|
|
objectClass: calEntry
|
|
|
|
|
Kind: location
|
|
|
|
|
MultipleBookings: 1
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Save your change and quit ldapvi (just like quitting vi/vim text editor).
|
|
|
|
|
|
|
|
|
|
* Login to SOGo webmail as `meetingroom@example.com`, then click the `Calendar`
|
|
|
|
|
icon on top-right corner.
|
|
|
|
|
* Click the three-dot icon beside `Personal Calendar`, and choose `Sharing...`.
|
|
|
|
|
* In the popup modal window, click `Any Authenticated User`, set values of
|
|
|
|
|
options `Public`, `Confidential` and `Private` to `View the Date & Time`.
|
|
|
|
|
Save your changes.
|
|
|
|
|
|
|
|
|
|
![](./images/sogo/resources/access-rights.png){: width=600px }
|
|
|
|
|
|
2018-11-14 19:42:17 -06:00
|
|
|
|
Tip: If you don't want to set the access rights from web UI, you can run
|
|
|
|
|
command below instead:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sogo-tool manage-acl \
|
|
|
|
|
add meetingroom@example.com \
|
|
|
|
|
'Calendar/personal' \
|
|
|
|
|
'<default>' \
|
|
|
|
|
'["PublicDAndTViewer", "ConfidentialDAndTViewer", "PrivateDAndTViewer"]'
|
|
|
|
|
```
|
|
|
|
|
|
2018-11-13 04:09:59 -06:00
|
|
|
|
* Now logout of SOGo webmail, re-login as a different user under same domain.
|
|
|
|
|
* Create a new testing event, invite `meetingroom@example.com` as attendee.
|
|
|
|
|
* Create second testing event in same day as first event, invite
|
|
|
|
|
`meetingroom@example.com` as attendee, this time SOGo will indicate
|
|
|
|
|
`meetingroom@example.com` is busy in the time window of first event.
|
|
|
|
|
|
|
|
|
|
![](./images/sogo/resources/free-busy.png){: width=600px }
|
|
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
|
|
* [Use Resources with SOGo](http://wiki.sogo.nu/ResourceConfiguration)
|