diff --git a/.gitignore b/.gitignore index 5123e76a3..a0a7d6b1f 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ SoObjects/SOGo/derived_src/ Tests/*/config.py *.pyc ._* +Documentation/*.docbook +Documentation/*.pdf diff --git a/Documentation/Makefile b/Documentation/Makefile new file mode 100644 index 000000000..6e7015bc2 --- /dev/null +++ b/Documentation/Makefile @@ -0,0 +1,8 @@ +all: $(patsubst %.asciidoc,%.pdf,$(wildcard *.asciidoc)) + +%.pdf : %.asciidoc + asciidoc -a docinfo2 -b docbook -d book -d book -o $<.docbook $< + fop -c fonts/fop-config.xml -xsl docbook/xsl/sogo-fo.xsl -xml $<.docbook -pdf $@ + +clean: + rm *.asciidoc.docbook *.pdf diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt deleted file mode 100644 index 64513c61f..000000000 Binary files a/Documentation/SOGo Installation Guide.odt and /dev/null differ diff --git a/Documentation/SOGo Mobile Devices Configuration.odt b/Documentation/SOGo Mobile Devices Configuration.odt deleted file mode 100644 index 401789ea8..000000000 Binary files a/Documentation/SOGo Mobile Devices Configuration.odt and /dev/null differ diff --git a/Documentation/SOGo Mozilla Thunderbird Configuration.odt b/Documentation/SOGo Mozilla Thunderbird Configuration.odt deleted file mode 100644 index 01702b8e5..000000000 Binary files a/Documentation/SOGo Mozilla Thunderbird Configuration.odt and /dev/null differ diff --git a/Documentation/SOGo Native Microsoft Outlook Configuration.odt b/Documentation/SOGo Native Microsoft Outlook Configuration.odt deleted file mode 100644 index ed89ec8c0..000000000 Binary files a/Documentation/SOGo Native Microsoft Outlook Configuration.odt and /dev/null differ diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc new file mode 100644 index 000000000..74d58541a --- /dev/null +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -0,0 +1,2599 @@ +Installation and Configuration Guide +==================================== + +//// + + This file is part of the SOGo project. + + See docinfo.xml for authors, copyright and license information. + +//// + +include::includes/global-attributes.asciidoc[] + +About this Guide +---------------- + +This guide will walk you through the installation and configuration of +the SOGo solution. It also covers the installation and configuration of +SOGo ActiveSync support – the solution used to synchronize mobile +devices with SOGo. + +The instructions are based on version {release_version} of SOGo. + +The latest version of this guide is available +at http://www.sogo.nu/downloads/documentation.html. + +Introduction +------------ + +SOGo is a free and modern scalable groupware server. It offers shared +calendars, address books, and emails through your favourite Web browser +and by using a native client such as Mozilla Thunderbird and Lightning. + +SOGo is standard-compliant. It supports CalDAV, CardDAV, GroupDAV, iMIP +and iTIP and reuses existing IMAP, SMTP and database servers - making +the solution easy to deploy and interoperable with many applications. + +SOGo features: + +* Scalable architecture suitable for deployments from dozens to many +thousands of users +* Rich Web-based interface that shares the look and feel, the features +and the data of Mozilla Thunderbird and Lightning +* Improved integration with Mozilla Thunderbird and Lightning by using +the SOGo Connector and the SOGo Integrator +* Native compatibility for Microsoft Outlook 2003, 2007, 2010, and 2013 +* Two-way synchronization support with any Microsoft ActiveSync-capable +device, or Outlook 2013 + +SOGo is developed by a community of developers located mainly in North +America and Europe. More information can be found +at http://www.sogo.nu/ + +Architecture and Compatibility +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +image::images/architecture.png[System Architecture] + +Standard protocols such as CalDAV, CardDAV, GroupDAV, HTTP, IMAP and +SMTP are used to communicate with the SOGo platform or its +sub-components. Mobile devices supporting the Microsoft ActiveSync +protocol are also supported. + +To install and configure the native Microsoft Outlook compatibility +layer, please refer to the _SOGo Native Microsoft Outlook Configuration +Guide_. + +System Requirements +------------------- + +Assumptions +~~~~~~~~~~~ + +SOGo reuses many components in an infrastructure. Thus, it requires the +following: + +* Database server (MySQL, PostgreSQL or Oracle) +* LDAP server (OpenLDAP, Novell eDirectory, Microsoft Active Directory +and others)  +* SMTP server (Postfix, Sendmail and others) +* IMAP server (Courier, Cyrus IMAP Server, Dovecot and others) + +In this guide, we assume that all those components are running on the +same server (i.e., `localhost` or `127.0.0.1`) that SOGo will be +installed on. + +Good understanding of those underlying components and GNU/Linux is +required to install SOGo. If you miss some of those required components, +please refer to the appropriate documentation and proceed with the +installation and configuration of these requirements before continuing +with this guide. + +The following table provides recommendations for the required +components, together with version numbers: + +|============================================= +|Database server |PostgreSQL 7.4 or later +|LDAP server |OpenLDAP 2.3.x or later +|SMTP server |Postfix 2.x +|IMAP server |Cyrus IMAP Server 2.3.x or later +|============================================= + +More recent versions of the software mentioned above can also be used. + +Minimum Hardware Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following table provides hardware recommendations for the server, +desktops and mobile devices: + +[cols="2,8a"] +|======================================================================= +|Server +|Evaluation and testing + +[options="compact"] +* Intel, AMD, or PowerPC CPU 1 GHz +* 512 MB of RAM +* 1 GB of disk space + +Production + +[options="compact"] +* Intel, AMD or PowerPC CPU 3 GHz +* 2048 MB of RAM +* 10 GB of disk space (excluding the mail store) + +|Desktop +|General + +[options="compact"] +* Intel, AMD, or PowerPC CPU 1.5 GHz +* 1024x768 monitor resolution +* 512 MB of RAM +* 128 Kbps or higher network connection + +Microsoft Windows + +[options="compact"] +* Microsoft Windows XP SP2 or Vista + +Apple Mac OS X + +[options="compact"] +* Apple Mac OS X 10.2 or later + +Linux + +[options="compact"] +* Your favourite GNU/Linux distribution + + +|Mobile Device +|Any mobile device which supports CalDAV, CardDAV or +Microsoft ActiveSync. +|======================================================================= + +Operating System Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following 32-bit and 64-bit operating systems are currently +supported by SOGo: + +* Red Hat Enterprise Linux (RHEL) Server 5 and 6 +* Community ENTerprise Operating System (CentOS) 5 and 6 +* Debian GNU/Linux 5.0 (Lenny) to 7.0 (Wheezy) +* Ubuntu 10.04 (Lucid) to 14.04 (Trusty) + +Make sure the required components are started automatically at boot time +and that they are running before proceeding with the SOGo configuration. +Also make sure that you can install additional packages from your +standard distribution. For example, if you are using Red Hat Enterprise +Linux 5, you have to be subscribed to the Red Hat Network before +continuing with the SOGo software installation. + +This document covers the installation of SOGo under RHEL 6. + +For installation instructions on Debian and Ubuntu, please refer +directly to the SOGo website at http://www.sogo.nu/. +Under the downloads section, you will find links for installation steps +for Debian and Ubuntu. + +Note that once the SOGo packages are installed under Debian and Ubuntu, +this guide can be followed in order to fully configure SOGo. + +Installation +------------ + +This section will guide you through the installation of SOGo together +with its dependencies. The steps described here apply to an RPM-based +installation for a Red Hat or CentOS distribution. + +Software Downloads +~~~~~~~~~~~~~~~~~~ + +SOGo can be installed using the+yum+utility. To do so, first create +the `/etc/yum.repos.d/inverse.repo` configuration file with the following +content: + +---- +[SOGo] +name=Inverse SOGo Repository +baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch +gpgcheck=0 +---- + +Some of the softwares on which SOGo depends are available from the +repository of RepoForge (previously known as RPMforge). To add RepoForge +to your packages sources, download and install the appropriate RPM +package +from http://packages.sw.be/rpmforge-release/. +Also make sure you enabled the "rpmforge-extras" repository. + +For more information on using RepoForge, +visit http://repoforge.org/use/. + +Software Installation +~~~~~~~~~~~~~~~~~~~~~ + +Once the yum configuration file has been created, you are now ready to +install SOGo and its dependencies. To do so, proceed with the following +command: + + yum install sogo + +This will install SOGo and its dependencies such as GNUstep, the SOPE +packages and memcached. Once the base packages are installed, you need +to install the proper database connector suitable for your environment. +You need to install `sope49-gdl1-postgresql` for the PostgreSQL database +system, `sope49-gdl1-mysql` for MySQL or `sope49-gdl1-oracle` for Oracle. +The installation command will thus look like this: + + yum install sope49-gdl1-postgresql + +Once completed, SOGo will be fully installed on your server. You are now +ready to configure it. + +Configuration +------------- + +In this section, you'll learn how to configure SOGo to use your existing +LDAP, SMTP and database servers. As previously mentioned, we assume that +those components run on the same server on which SOGo is being +installed. If this is not the case, please adjust the configuration +parameters to reflect those changes. + +GNUstep Environment Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo makes use of the GNUstep environment. GNUstep is a free software +implementation of the OpenStep specification which provides many +facilities for building all types of server and desktop applications. +Among those facilities, there is a configuration API similar to the +"Registry" paradigm in Microsoft Windows. In OpenSTEP, GNUstep and MacOS +X, these are called the "user defaults". + +In SOGo, the user's applications settings are stored +in `/etc/sogo/sogo.conf`. You can use your favourite text editor to +modify the file. + +The +sogo.conf+ file is a serialized _property list_. This simple format +encapsulates four basic data types: arrays, dictionaries (or hashes), +strings and numbers. Numbers are represented as-is, except for booleans +which can take the unquoted values `YES` and `NO`. Strings are not +mandatorily quoted, but doing so will avoid you many problems. A +dictionary is a sequence of key and value pairs separated in their +middle with a `=` sign. It starts with a `\{` and ends with a +corresponding `}`. Each value definition in a dictionary ends with a +semicolon. An array is a chain of values starting with `(` and ending +with `)`, where the values are separated with a `,`. Also, the file +generally follows a C-style indentation for clarity but this indentation +is not required, only recommended. Block comments are delimited by `/*` +and `*/` and can span multiple lines while line comments must start with +`//`. + +Preferences Hierarchy +~~~~~~~~~~~~~~~~~~~~~ + +SOGo supports domain names segregation, meaning that you can separate +multiple groups of users within one installation of SOGo. A user +associated to a domain is limited to access only the users data from the +same domain. Consequently, the configuration parameters of SOGo are +defined on three levels: + +image::images/preferences-hierarchy.png[Preferences Hierarchy] + +Each level inherits the preferences of the parent level. Therefore, +domain preferences define the defaults values of the user preferences, +and the system preferences define the default values of all domains +preferences. Both system and domains preferences are defined in +the `/etc/sogo/sogo.conf`, while the users preferences are configurable +by the user and stored in SOGo's database. + +To identify the level in which each parameter can be defined, we use the +following abbreviations in the tables of this document: + +[cols="^3,97"] +|==================================================================== +|S |Parameter exclusive to the system and not configurable per domain +|D |Parameter exclusive to a domain and not configurable per user +|U |Parameter configurable by the user +|==================================================================== + +Remember that the hierarchy paradigm allow the default value of a +parameter to be defined at a parent level. + +General Preferences +~~~~~~~~~~~~~~~~~~~ + +The following table describes the general parameters that can be set: + +[cols="^3,47,50a"] +|======================================================================= +|S |WOWorkersCount +|The amount of instances of SOGo that will be spawned +to handle multiple requests simultaneously. When started from the init +script, that amount is overriden by the `PREFORK` value +in `/etc/sysconfig/sogo` or `/etc/default/sogo`. A value of 3 is a +reasonable default for low usage. The maximum value depends on the CPU +and IO power provided by your machine: a value set too high will +actually decrease performances under high load. + +Defaults to 1 when unset. + +|S |WOListenQueueSize | +This parameter controls the backlog size of the +socket listen queue. For large-scale deployments, this value must be +adjusted in case all workers are busy and the parent processes receives +lots of incoming connections. + +Defaults to 5 when unset. + +|S |WOPort +|The TCP listening address and port used by the SOGo +daemon. The format is `ipaddress:port`. + +Defaults to `127.0.0.1:20000` when unset. + +|S |WOLogFile +|The file path where to log messages. Specify `-` to log to +the console. + +Defaults to `/var/log/sogo/sogo.log`. + +|S |WOPidFile +|The file path where the parent process id will be written. + +Defaults to `/var/run/sogo/sogo.pid`. + +|S |WOWatchDogRequestTimeout +|This parameter specifies the number of minutes after which a busy child +process will be killed by the parent process. + +Defaults to 10 (minutes). + +Do not set this too low as child processes replying to clients on a slow +internet connection could be killed prematurely. + +|S |SxVMemLimit +|Parameter used to set the maximum amount of memory (in +megabytes) that a child can use. Reaching that value will force children +processes to restart, in order to preserve system memory. + +Defaults to `384`. + +|S |SOGoMemcachedHost +|Parameter used to set the hostname and optionally the port of the +memcached server. + +A path can also be used if the server must be reached via a Unix socket. + +Defaults to `localhost`. + +See `memcached_servers_parse(3)` for details on the syntax. + +|S |SOGoCacheCleanupInterval +|Parameter used to set the expiration (in seconds) of each object in the +cache. + +Defaults to `300`. + +|S |SOGoAuthenticationType +|Parameter used to define the way by which users will be authenticated. +For C.A.S., specify `cas`. For SAML2, specify `saml2`. For anything +else, leave that value empty. + +|S |SOGoTrustProxyAuthentication +|Parameter used to set whether HTTP username should be trusted. + +Defaults to `NO` when unset. + +|S |SOGoEncryptionKey +|Parameter used to define a key to encrypt the passwords of remote Web +calendars when _SOGoTrustProxyAuthentication_ is enabled. + +|S |SOGoCASServiceURL +|When using C.A.S. authentication, this specifies the base url for +reaching the C.A.S. service. This will be used by SOGo to deduce the +proper login page as well as the other C.A.S. services that SOGo will +use. + +|S |SOGoCASLogoutEnabled +|Boolean value indicating whether the "Logout" link is enabled when +using C.A.S. as authentication mechanism. + +The "Logout" link will end up calling _SOGoCASServiceURL_/logout to +terminate the client's single sign-on C.A.S. session. + +|S |SOGoAddressBookDAVAccessEnabled +|Parameter controlling WebDAV access to the Contacts collections. +This can be used to deny access to these resources from Lightning for +example. + +Defaults to `YES` when unset. + +|S |SOGoCalendarDAVAccessEnabled +|Parameter controlling WebDAV access to the Calendar collections. + +This can be used to deny access to these resources from Lightning for +example. + +Defaults to `YES` when unset. + +|S |SOGoSAML2PrivateKeyLocation +|The location of the SSL private key file on the filesystem that is used +by SOGo to sign and encrypt communications with the SAML2 identity +provider. This file must be generated for each running SOGo service +(rather than host). + +|S |SOGoSAML2CertiticateLocation +|The location of the SSL certificate file. This file must be generated +for each running SOGo service. + +|S |SOGoSAML2IdpMetadataLocation +|The location of the metadata file that describes the services available +on the SAML2 identify provider. + +|S |SOGoSAML2IdpPublicKeyLocation +|The location of the SSL public key file on the filesystem that is used +by SOGo to sign and encrypt communications with the SAML2 identity +provider. This file should be part of the setup of your identity +provider. + +|S |SOGoSAML2IdpCertificateLocation +|The location of the SSL certificate file. This file should be part of +the setup of your identity provider. + +|S |SOGoSAML2LogoutEnabled +|Boolean value indicated whether the "Logout" link is enabled when using +SAML2 as authentication mechanism. + +|D |SOGoTimeZone +|Parameter used to set a default time zone for users. The default +timezone is set to UTC. The Olson database is a standard database that +takes all the time zones around the world into account and represents +them along with their history. On GNU/Linux systems, time zone +definition files are available under `/usr/share/zoneinfo`. Listing the +available files will give you the name of the available time zones. +This could be `America/New_York`, `Europe/Berlin`, `Asia/Tokyo` or +`Africa/Lubumbashi`. + +In our example, we set the time zone to `America/Montreal`. + +|D |SOGoMailDomain +|Parameter used to set the default domain name used by SOGo. SOGo uses +this parameter to build the list of valid email addresses for users. + +In our example, we set the default domain to `acme.com`. + +|D |SOGoAppointmentSendEMailNotifications +|Parameter used to set whether SOGo sends or not email notifications to +meeting participants. Possible values are: + +[options="compact"] +* `YES` – to send notifications +* `NO` – to not send notifications + +Defaults to `NO` when unset. + +|D |SOGoFoldersSendEMailNotifications +|Same as above, but the notifications are triggered on the creation of a +calendar or an address book. + +|D |SOGoACLsSendEMailNotifications +|Same as above, but the notifications are sent to the involved users of +a calendar or address book's ACLs. + +|D |SOGoCalendarDefaultRoles +|Parameter used to define the default roles when giving permissions to a +user to access a calendar. Defaults roles are ignored for public +accesses. Must be an array of up to five strings. Each string defining a +role for an event category must begin with one of those values: + +[options="compact"] +* `Public` +* `Confidential` +* `Private` + +And each string must end with one of those values: + +[options="compact"] +* `Viewer` +* `DAndTViewer` +* `Modifier` +* `Responder` + +The array can also contain one or many of the following strings: + +[options="compact"] +* `ObjectCreator` +* `ObjectEraser` + +Example: `SOGoCalendarDefaultRoles = ("ObjectCreator", "PublicViewer");` + +Defaults to no role when unset. Recommended values are `PublicViewer` +and `ConfidentialDAndTViewer`. + +|D |SOGoContactsDefaultRoles +|Parameter used to define the default roles when giving permissions to a +user to access an address book. Defaults roles are ignored for public +accesses. Must be an array of one or many of the following strings: + +[options="compact"] +* ObjectViewer +* ObjectEditor +* ObjectCreator +* ObjectEraser + +Example: `SOGoContactsDefaultRoles = ("ObjectEditor");` + +Defaults to no role when unset. + +|D |SOGoSuperUsernames +|Parameter used to set which usernames require administrative privileges +over all the users tables. For example, this could be used to post +events in the users calendar without requiring the user to configure +his/her ACLs. In this case you will need to specify those superuser's +usernames like this: `SOGoSuperUsernames = ([, , ...]);` + +|U |SOGoLanguage +|Parameter used to set the default language used in the Web interface +for SOGo. Possible values are: + +[options="compact"] +* `BrazilianPortuguese` +* `Czech` +* `Dutch` +* `English` +* `French` +* `German` +* `Hungarian` +* `Italian` +* `Russian` +* `Spanish` +* `Swedish` +* `Welsh` + +|D |SOGoNotifyOnPersonalModifications +|Parameter used to set whether SOGo sends or not email receipts when +someone changes his/her own calendar. Possible values are: + +[options="compact"] +- `YES` – to send notifications +- `NO` – to not send notifications + +Defaults to `NO` when unset. User can overwrite this from the calendar +properties window. + +|D |SOGoNotifyOnExternalModifications +|Parameter used to set whether SOGo sends or not email receipts when a +modification is being done to his/her own calendar by someone else. +Possible values are: + +[options="compact"] +* `YES` – to send notifications +* `NO` – to not send notifications + +Defaults to `NO` when unset. User can overwrite this from the calendar +properties window. + +|D |SOGoLDAPContactInfoAttribute +|Parameter used to specify an LDAP attribute that should be displayed +when auto-completing user searches. + +|D |SOGoiPhoneForceAllDayTransparency +|When set to `YES`, this will force all-day events sent over by iPhone +OS based devices to be transparent. This means that the all-day events +will not be considered during freebusy lookups. + +Defaults to `NO` when unset. + +|S |SOGoEnablePublicAccess +|Parameter used to allow or not your users to share publicly (ie., +requiring not authentication) their calendars and address books. + +Possible values are: + +[options="compact"] +* `YES` – to allow them +* `NO` – to prevent them from doing so + +Defaults to `NO` when unset. + +|S |SOGoPasswordChangeEnabled +|Parameter used to allow or not users to change their passwords from +SOGo. + +Possible values are: + +[options="compact"] +* `YES` – to allow them +* `NO` – to prevent them from doing so + +Defaults to `NO` when unset. + +For this feature to work properly when authenticating against AD or +Samba4, the LDAP connection must use SSL/TLS. Server side restrictions +can also cause the password change to fail, in which case SOGo will only +log a 'Constraint violation (0x13)' error. These restrictions include +password too young, complexity constraints not satisfied, user cannot +change password, etc... Also note that Samba has a minimum password age +of 1 day by default. + +|S |SOGoSupportedLanguages +|Parameter used to configure which languages are available from SOGo's +Web interface. Available languages are specified as an array of string. + +The default value is: `( "Czech", "Welsh", "English", "Spanish", "French", "German", "Italian", "Hungarian", "Dutch", "BrazilianPortuguese", "Polish", "Russian", Ukrainian", "Swedish" )` + +|D |SOGoHideSystemEMail +|Parameter used to control if SOGo should hide or not the system email +address (UIDFieldName@SOGoMailDomain). This is currently limited to +CalDAV (calendar-user-address-set). + +Defaults to `NO` when unset. + +|D |SOGoSearchMinimumWordLength +|Parameter used to control the minimum length to be used for the search +string (attendee completion, address book search, etc.) prior triggering +the server-side search operation. + +Defaults to `2` when unset – which means a search operation will be +triggered on the 3rd typed character. + +|S |SOGoMaximumFailedLoginCount +|Parameter used to control the number of failed login attempts required +during _SOGoMaximumFailedLoginInterval_ seconds or more. If conditions +are met, the account will be blocked for _SOGoFailedLoginBlockInterval_ +seconds since the first failed login attempt. + +Default value is `0`, or disabled. + +|S |SOGoMaximumFailedLoginInterval +|Number of seconds, defaults to `10`. + +|S |SOGoFailedLoginBlockInterval +|Number of seconds, defaults to `300` (or 5 minutes). Note that +_SOGoCacheCleanupInterval_ must be set to a value equal or higher than +_SOGoFailedLoginBlockInterval_. + +|S |SOGoMaximumMessageSubmissionCount +|Parameter used to control the number of email messages a user can send +from SOGo's webmail interface, to _SOGoMaximumRecipientCount_, in +_SOGoMaximumSubmissionInterval_ seconds or more. If conditions are met +or exceeded, the user won't be able to send mails for +_SOGoMessageSubmissionBlockInterval_ seconds. + +Default value is `0`, or disabled. + +|S |SOGoMaximumRecipientCount +|Maximum number of recipients. Default value is `0`, or disabled. + +|S |SOGoMaximumSubmissionInterval +|Number of seconds, defaults to `30`. + +|S |SOGoMessageSubmissionBlockInterval +|Number of seconds, default to `300` (or 5 minutes). Note that +_SOGoCacheCleanupInterval_ must be set to a value equal or higher than +_SOGoFailedLoginBlockInterval_. +|======================================================================= + +Authentication using LDAP +~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo can use a LDAP server to authenticate users and, if desired, to +provide global address books. SOGo can also use an SQL backend for this +purpose (see the section_Authentication using SQL_ later in this +document). Insert the following text into your configuration file to +configure an authentication and global address book using an LDAP +directory server: + +---- +SOGoUserSources = ( + { + type = ldap; + CNFieldName = cn; + IDFieldName = uid; + UIDFieldName = uid; + IMAPHostFieldName = mailHost; + baseDN = "ou=users,dc=acme,dc=com"; + bindDN = "uid=sogo,ou=users,dc=acme,dc=com"; + bindPassword = qwerty; + canAuthenticate = YES; + displayName = "Shared Addresses"; + hostname = "ldap://127.0.0.1:389"; + id = public; + isAddressBook = YES; + } +); +---- + +In our example, we use a LDAP server running on the same host where SOGo +is being installed. + +You can also, using the filter attribute, restrict the results to match +various criteria. For example, you could define, in your +`.GNUstepDefaults` file, the following filter to return only entries +belonging to the organization _Inverse_ with a _mail_ address and +not _inactive_: + + filter = "(o='Inverse' AND mail='*' AND status <> 'inactive')"; + +Since LDAP sources can serve as user repositories for authentication as +well as address books, you can specify the following for each source to +make them appear in the address book module: + +---- +displayName = ""; +isAddressBook = YES; +---- + +For certain LDAP sources, SOGo also supports indirect binds for user +authentication. Here is an example: + +---- +SOGoUserSources = ( + { + type = ldap; + CNFieldName = cn; + IDFieldName = cn; + UIDFieldName = sAMAccountName; + baseDN = "cn=Users,dc=acme,dc=com"; + bindDN = "cn=sogo,cn=Users,dc=acme,dc=com"; + bindFields = (sAMAccountName); + bindPassword = qwerty; + canAuthenticate = YES; + displayName = "Active Directory"; + hostname = ldap://10.0.0.1:389; + id = directory; + isAddressBook = YES; + } +); +---- + +In this example, SOGo will use an indirect bind by first determining the +user DN. That value is found by doing a search on the fields specified +in `bindFields`. Most of the time, there will be only one field but it +is possible to specify more in the form of an array (for example, +`bindFields = (sAMAccountName, cn)`). When using multiple fields, only +one of the fields needs to match the login name. In the above example, +when a user logs in, the login will be checked against the +`sAMAccountName` entry in all the user cards, and once this card is +found, the user DN of this card will be used for checking the user's +password. + +Finally, SOGo supports LDAP-based groups. Groups must be defined like +any other authentication sources (ie., _canAuthenticate_ must be set +to `YES` and a group must have a valid email address). In order for SOGo +to determine if a specific LDAP entry is a group, SOGo will look for one +of the following objectClass attributes: + +* `group` +* `groupOfNames` +* `groupOfUniqueNames` +* `posixGroup` + +You can set ACLs based on group membership and invite a group to a +meeting (and the group will be decomposed to its list of members upon +save by SOGo). You can also control the visibility of the group from the +list of shared address books or during mail autocompletion by setting +the `isAddressBook` parameter to `YES` or `NO`. The following LDAP entry +shows how a typical group is defined: + +---- +dn: cn=inverse,ou=groups,dc=inverse,dc=ca +objectClass: groupOfUniqueNames +objectClass: top +objectClass: extensibleObject +uniqueMember: uid=alice,ou=users,dc=inverse,dc=ca +uniqueMember: uid=bernard,ou=users,dc=inverse,dc=ca +uniqueMember: uid=bob,ou=users,dc=inverse,dc=ca +cn: inverse +structuralObjectClass: groupOfUniqueNames +mail: inverse@inverse.ca +---- + +The corresponding _SOGoUserSources_ entry to handle groups like this one +would be: + +---- +{ + type = ldap; + CNFieldName = cn; + IDFieldName = cn; + UIDFieldName = cn; + baseDN = "ou=groups,dc=inverse,dc=ca”; + bindDN = "cn=sogo,ou=services,dc=inverse,dc=ca"; + bindPassword = zot; + canAuthenticate = YES; + displayName = “Inverse Groups”; + hostname = ldap://127.0.0.1:389; + id = inverse_groups; + isAddressBook = YES; +} +---- + +The following table describes the possible parameters related to a LDAP +source: + +[cols="^3,>47,50a"] +|======================================================================= +.33+|D <|SOGoUserSources +|Parameter used to set the LDAP and/or SQL sources used for +authentication and global address books. Multiple sources can be +specified as an array of dictionaries. A dictionary that defines an LDAP +source can contain the following values: + +|type +|The type of this user source, set to ldap` for an LDAP source. + +|id +|The identification name of the LDAP repository. This must be unique – +even when using multiple domains. + +|CNFieldName +|The field that returns the complete name. + +|IDFieldName +|The field that starts a user DN if bindFields is not used. This field +must be unique across the entire SOGo domain. + +|UIDFieldName +|The field that returns the login name of a user. + +The returned value *must be unique across the whole SOGo installation* +since it is used to identify the user in the `folder_info` database +table. + +|MailFieldNames +|An array of fields that returns the user's email addresses (defaults to +`mail` when unset). + +|SearchFieldNames +|An array of fields to to match against the search string when filtering +users (defaults to `sn`, `displayName`, and `telephoneNumber` when +unset). + +|IMAPHostFieldName (optional) +|The field that returns either an URI to the IMAP server as described +for SOGoIMAPServer, or a simple server hostname that would be used as a +replacement for the hostname part in the URI provided by the +_SOGoIMAPServer_ parameter. + +|IMAPLoginFieldName (optional) +|The field that returns the IMAP login name for the user (defaults to +the value of _UIDFieldName_ when unset). + +|SieveHostFieldName (optional) +|The field that returns either an URI to the SIEVE server as described +for _SOGoSieveServer_, or a simple server hostname that would be used as +a replacement for the hostname part in the URI provided by the +_SOGoSieveServer_ parameter. + +|baseDN +|The base DN of your user entries. + +|KindFieldName (optional) +|If set, 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. + +For LDAP-based sources, SOGo can also automatically determine if it's a +resource if the entry has the calendarresource objectClass set. + +|MultipleBookingsFieldName (optional) +|The value of this 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. + +|filter (optional) +|The filter to use for LDAP queries, it should be defined as an +EOQualifier. The following operators are supported: + +[options="compact"] +* `<>` – inequality operator +* `=` – equality operator + +Multiple qualifiers can be joined by using `OR` and `AND`, they can also +be grouped together by using parenthesis. Attribute values should be +quoted to avoid unexpected behaviour. + +For example: `filter = "(objectClass='mailUser' OR objectClass='mailGroup') AND accountStatus='active' AND uid <> 'alice'";` + +|scope (optional) +|Either `BASE`, `ONE` or `SUB`. + +|bindDN +|The DN of the login name to use for binding to your server. + +|bindPassword +|Its password. + +|bindAsCurrentUser +|If set to `YES`, SOGo will always keep binding to the LDAP server using +the DN of the currently authenticated user. If _bindFields_ is set, +_bindDN_ and _bindPassword_ will still be required to find the proper DN + of the user. + +|bindFields (optional) +|An array of fields to use when doing indirect binds. + +|hostname +|A space-delimited list of LDAP URLs or LDAP hostnames. + +LDAP URLs are specified in RFC 4516 and have the following general +format: + +`scheme://host:port/DN?attributes?scope?filter?extensions` + +Note that SOGo doesn't currently support DN, attributes, scope and +filter in such URLs. Using them may have undefined side effects. + +URLs examples: + +[options="compact"] +* `ldap://127.0.0.1:3389` +* `ldaps://127.0.0.1` +* `ldap://127.0.0.1/????!StartTLS` + +|port(deprecated) +|Port number of the LDAP server. + +A non-default port should be part of the ldap URL in the hostname +parameter. + +|encryption (deprecated) +|Either `SSL` or `STARTTLS` + +SSL should be specified as `ldaps://` in the LDAP URL. STARTTLS should +be specified as a LDAP Extension in the LDAP URL (e.g. +`ldap://127.0.0.1/????!StartTLS`) + +|userPasswordAlgorithm +|The algorithm used for password encryption when changing passwords +without Password Policies enabled. + +Possible values are: `none`, `plain`, `crypt`, `md5`, `md5-crypt`, +`smd5`, `cram-md5` and `sha`, `sha256`, `sha512` and its ssha (e.g. +`ssha` or `ssha256`) variants (plus setting of the encoding with `.b64` +or `.hex`). + +For a more detailed description see +http://wiki.dovecot.org/Authentication/PasswordSchemes. + +Note that `cram-md5` is not actually using cram-md5 (due to the lack of +challenge-response mechanism), its just saving the intermediate MD5 +context as Dovecot stores in its database. + +|canAuthenticate +|If set to `YES`, this LDAP source is used for authentication + +|passwordPolicy +|If set to `YES`, SOGo will use the extended LDAP Password Policies +attributes. If you LDAP server does not support those and you activate +this feature, every LDAP requests will fail. + +|isAddressBook +|If set to `YES`, this LDAP source is used as a shared address book +(with read-only access). Note that if set to `NO`, autocompletion will +not work for entries in this source and thus, freebusy lookups. + +|displayName (optional) +|If set as an address book, the human identification name of the LDAP +repository + +|ModulesConstraints (optional) +|Limits the access of any module through a constraint based on an LDAP +attribute; must be a dictionary with keys `Mail`, and/or `Calendar`, for +example: + +---- +ModulesConstraints = { + Calendar = { + ou = employees; + }; +}; +---- + +|mapping +|A dictionary that maps contact attributes used by SOGo to the LDAP +attributes used by the schema of the LDAP source. Each entry must have +an attribute name as key and an array of strings as value. This enables +actual fields to be mapped one after another when fetching contact +informations. + +See the LDAP Attribute Mapping section below for an example and a list +of supported attributes. + +|objectClasses +|When the _modifiers_ list (see below) is set, or when using LDAP-based +user addressbooks (see _abOU_ below), this list of object classes will +be applied to new records as they are created. + +|modifiers +|A list (array) of usernames that are authorized to perform +modifications to the address book defined by this LDAP source. + +|abOU +|This field enables LDAP-based user addressbooks by specifying the value +of the address book container beneath each user entry, for example: +`ou=addressbooks,uid=username,dc=domain`. +|======================================================================= + +The following parameters can be defined along the other keys of each +entry of the SOGoUserSources, but can also defined at the domain and/or +system levels: + +[cols="3,47,50a"] +|======================================================================= +|D |SOGoLDAPContactInfoAttribute +|Parameter used to specify an attribute that should appear in +autocompletion of the web interface. + +|D |SOGoLDAPQueryLimit +|Parameter used to limit the number of returned results from the LDAP +server whenever SOGo performs a LDAP query (for example, during +addresses completion in a shared address book). + +|D |SOGoLDAPQueryTimeout +|Parameter to define the timeout of LDAP queries. The actual time limit +for operations is also bounded by the maximum time that the server is +configured to allow. + +Defaults to `0` (unlimited). +|======================================================================= + +LDAP Attributes Indexing +~~~~~~~~~~~~~~~~~~~~~~~~ + +To ensure proper performance of the SOGo application, the following LDAP +attributes must be fully indexed: + +* givenName +* cn +* mail +* sn + +Please refer to the documentation of the software you use in order to +index those attributes. + +LDAP Attributes Mapping +~~~~~~~~~~~~~~~~~~~~~~~ + +Some LDAP attributes are mapped to contacts attributes in the SOGo UI. +The table below list most of them. It is possible to override these by +using the _mapping_ configuration parameter.  + +For example, if the LDAP schema uses the _fax_ attribute to store the +fax number, one could map it to the _facsimiletelephonenumber_ attribute +like this: + +---- +mapping = \{ +  facsimiletelephonenumber = ("fax", "facsimiletelephonenumber"); +}; +---- + +|=== +2+h|Name +|First |givenName +|Last |sn +|DisplayName |displayName _or_ cn _or_ givenName + sn +|Nickname |mozillanickname + +2+h|Internet +|Email |mail +|Secondary email |mozillasecondemail +|ScreenName |nsaimid + +2+h|Phones +|Work |telephoneNumber +|Home |homephone +|Mobile |mobile +|Fax |facsimiletelephonenumber +|Pager |pager + +2+h|Home +|Address |mozillahomestreet + mozillahomestreet2 +|City |mozillahomelocalityname +|State/Province |mozillahomestate +|Zip/Postal Code |mozillahomepostalcode +|Country |mozillahomecountryname +|Web page |mozillahomeurl + +2+h|Work +|Title |title +|Department |ou +|Organization |o +|Address |street + mozillaworkstreet2 +|City |l +|State/Province |st +|Zip/Postal code |postalCode +|Country |c +|Web page |mozillaworkurl + +2+h|Other +|Birthday |birthyear-birthmonth-birthday +|Note |description +|=== + +Authenticating using C.A.S. +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo natively supports C.A.S. authentication. For activating C.A.S. +authentication you need first to make sure that +the _SOGoAuthenticationType_ setting is set to `cas` and that +the _SOGoCASServiceURL_ setting is configured appropriately. + +The tricky part shows up when using SOGo as a frontend interface to an +IMAP server as this imposes constraints needed by the C.A.S. protocol to +ensure secure communication between the different services. Failing to +take those precautions will prevent users from accessing their mails, +while still granting basic authentication to SOGo itself. + +The first constraint is that *the amount of workers that SOGo uses must +be higher than 1 in order to enable the C.A.S.* service to perform some +validation requests during IMAP authentication. A single worker alone +would not, by definition, be able to respond to the C.A.S. requests +while treating the user request that required the triggering of those +requests. You must therefore configure the _WOWorkersCount_ setting +appropriately. + +The second constraint is that *the SOGo service must be accessible and +accessed via https*. Moreover, the certificate used by the SOGo server +has to be recognized and trusted by the C.A.S. service. In the case of a +certificate issued by a third-party authority, there should be nothing +to worry about. In the case of a self-signed certificate, the +certificate must be registered in the trusted keystore of the C.A.S. +application. The procedure to achieve this can be summarized as +importing the certificate in the proper "keystore" using +the `keytool` utility and specifying the path for that keystore to the +Tomcat instance which provides the C.A.S. service. This is done by +tweaking the `javax.net.ssl.trustStore` setting, either in the +`catalina.properties` file or in the command-line parameters. On debian, +the SOGo certificate can also be added to the truststore as follows: + +---- +openssl x509 -in /etc/ssl/certs/sogo-cert.pem -outform DER \ + -out /tmp/sogo-cert.der +keytool -import -keystore /etc/ssl/certs/java/cacerts \ + -file /tmp/sogo-cert.der -alias sogo-cert +# The keystore password is 'changeit' +# tomcat must be restarted after this operation +---- + +*The certificate used by the CAS server must also be trusted by SOGo.* +In case of a self-signed certificate, this means exporting tomcat's +certificate using the +keytool+utility, converting it to PEM format and +appending it to the `ca-certificates.crt` file (the name and location of +that file differs between distributions). Basically: + +---- +# export tomcat's cert to openssl format +keytool -keystore /etc/tomcat7/keystore -exportcert -alias tomcat | \ + openssl x509 -inform der >tomcat.pem + +Enter keystore password: tomcat + +# add the pem to the trusted certs +cp tomcat.pem /etc/ssl/certs +cat tomcat.pem >>/etc/ssl/certs/ca-certificates +---- + +If any of those constraints is not satisfied, the webmail interface of +SOGo will display an empty email account. Unfortunately, SOGo has no +possibility to detect which one is the cause of the problem. The only +indicators are log messages that at least pinpoint the symptoms: + +___________________________________________________ +_"failure to obtain a PGT from the C.A.S. service"_ +___________________________________________________ + +Such an error will show up during authentication of the user to SOGo. It +happens when the authentication service has accepted the user +authentication ticket but has not returned a "Proxy Granting Ticket". + +_______________________________________________ +_"a CAS failure occurred during operation...."_ +_______________________________________________ + +This error indicate that an attempt was made to retrieve an +authentication ticket for a third-party service such as IMAP or sieve. +Most of the time, this happens as a consequence to the problem described +above. To troubleshoot these issues, one should be tailing `cas.log`, +pam logs and sogo logs. + +Currently, SOGo will ask for a CAS ticket using the same CAS service +name for both IMAP and Sieve. *When CASifying sieve, this means that the +`-s` parameter of `pam_cas`should be the same for both IMAP and Sieve*, +otherwise the CAS server will complain: + +---- +ERROR [org.jasig.cas.CentralAuthenticationServiceImpl] - ServiceTicket +[ST-31740-hoV1brhhwMNfnBkSMVUw-ocas] with service [imap://myimapserver +does not match supplied service [sieve://mysieveserver:2000] +---- + +Finally, when using imapproxy to speed up the imap accesses, the +SOGoIMAPCASServiceName should be set to the actual imap service name +expected by pam_cas, otherwise it will fail to authenticate incoming +connection properly. + +Authenticating using SAML2 +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo natively supports SAML2 authentication. Please refer to the +documentation of your identity provider and the SAML2 configuration keys +that are listed above for proper setup. Once a SOGo instance is +configured properly, the metadata for that instance can be retrieved +from `http:///SOGo/saml2-metadata` for registration with the +identity provider. + +In order to relay authentication information to your IMAP server and if +you make use of the CrudeSAML SASL plugin, you need to make sure that +_NGImap4AuthMechanism_ is configured to use the `SAML` mechanism. If you +make use of the CrudeSAML PAM plugin, this value may be left empty. + +Database Configuration +~~~~~~~~~~~~~~~~~~~~~~ + +SOGo requires a relational database system in order to store +appointments, tasks and contacts information. It also uses the database +system to store personal preferences of SOGo users. In this guide, we +assume you use PostgreSQL so commands provided the create the database +are related to this application. However, other database servers are +supported, such as MySQL and Oracle. + +First, make sure that your PostgreSQL server has TCP/IP connections +support enabled. + +Create the database user and schema using the following commands: + +---- +su – postgres +createuser --no-superuser --no-createdb –-no-createrole \ + –-encrypted --pwprompt sogo +(specify “sogo” as password) +createdb -O sogo sogo +---- + +You should then adjust the access rights to the database. To do so, +modify the configuration file `/var/lib/pgsql/data/pg_hba.conf` in order +to add the following line at the very beginning of the file: + + host   sogo   sogo     127.0.0.1/32     md5 + +Once added, restart the PostgreSQL database service. Then, modify the +SOGo configuration file (`/etc/sogo/sogo.conf`) to reflect your database +settings: + +---- +SOGoProfileURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile"; +OCSFolderInfoURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info"; +OCSSessionsFolderURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder"; +---- + +The following table describes the parameters that were set: + +[cols="3,47,50a"] +|======================================================================= +|D |SOGoProfileURL +|Parameter used to set the database URL so that SOGo can retrieve user +profiles. + +For MySQL, set the database URL to something like: +`mysql://sogo:sogo@localhost:3306/sogo/sogo_user_profile`. + +|D |OCSFolderInfoURL +|Parameter used to set the database URL so that SOGo can retrieve the +location of user folders (address books and calendars). + +For Oracle, set the database URL to something like: +`oracle://sogo:sogo@localhost:1526/sogo/sogo_folder_info`. + +|D |OCSSessionsFolderURL +|Parameter used to set the database URL so that SOGo can store and +retrieve secured user sessions information. For PostgreSQL, the database +URL could be set to something like: +`postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder`. + +|D |OCSEMailAlarmsFolderURL +|Parameter used to set the database URL for email-based alarms (that can +be set on events and tasks). This parameter is relevant only if +_SOGoEnableEMailAlarms_ is set to `YES`. For PostgreSQL, the database +URL could be set to something like: +`postgresql://sogo:sogo@localhost:5432/sogo/sogo_alarms_folder` + +See the "EMail reminders" section in this document for more information. +|======================================================================= + +If you're using MySQL, make sure in your `my.cnf` file you have: + +---- +[mysqld] +... +character_set_server=utf8 +character_set_client=utf8 + +[client] +default-character-set=utf8 + +[mysql] +default-character-set=utf8 +---- + +Authentication using SQL +~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo can use a SQL-based database server for authentication. The +configuration is very similar to LDAP-based authentication. + +The following table describes all the possible parameters related to a +SQL source: + +[cols="3,47,50a"] +|======================================================================= +.18+|D |SOGoUserSources +|Parameter used to set the SQL and/or LDAP sources used for +authentication and global address books. Multiple sources can be +specified as an array of dictionaries. A dictionary that defines a SQL +source can contain the following values: + +|type +|The type of this user source, set to `sql` for a SQL source. + +|id +|The identification name of the SQL repository. This must be unique – +even when using multiple domains. + +|viewURL +|Database URL of the view used by SOGo. The view expects columns to be +present. Required columns are: + +[options="compact"] +* `c_uid`: will be used for authentication – it's a username or + username@domain.tld +* `c_name`: will be used to uniquely identify entries – which can be + identical to `c_uid` +* `c_password`: password of the user, plain text, crypt, md5 or sha + encoded +* `c_cn`: the user's common name +* mail : the user's email address + +Other columns can exist and will actually be mapped automatically if +they have the same name as popular LDAP attributes (such as `givenName`, +`sn`, `department`, `title`, `telephoneNumber`, etc.). + +|userPasswordAlgorithm +|The default algorithm used for password encryption when changing +passwords. Possible values are: `none`, `plain`, `crypt`, `md5`, +`md5-crypt`, `smd5`, `cram-md5`, `ldap-md5`, and `sha`, `sha256`, +`sha512` and its ssha (e.g. `ssha` or `ssha256`) variants. Passwords can +have the scheme prepended in the form `{scheme}encryptedPass`. + +If no scheme is given, _userPasswordAlgorithm_ is used instead. The +schemes listed above follow the algorithms described in +http://wiki.dovecot.org/Authentication/PasswordSchemes. + +Note that `cram-md5` is not actually using cram-md5 (due to the lack of +challenge-response mechanism), its just saving the intermediate MD5 +context as Dovecot stores in its database.  + +|prependPasswordScheme +|The default behaviour is to store newly set passwords without the +scheme (default: `NO`). This can be overridden by setting to `YES` and +will result in passwords stored as `{scheme}encryptedPass`.  + +|canAuthenticate +|If set to `YES`, this SQL source is used for authentication. + +|isAddressBook +|If set to `YES`, this SQL source is used as a shared address book +(with read-only access). Note that if set to `NO`, autocompletion will +not work for entries in this source and thus, freebusy lookups. + +|authenticationFilter (optional) +|A filter that limits which users can authenticate from this source. + +|displayName (optional) +|If set as an address book, the human identification name of the SQL +repository. + +|LoginFieldNames (optional) +|An array of fields that specifies the column names that contain valid +authentication usernames (defaults to `c_uid` when unset). + +|MailFieldNames (optional) +|Aan array of fields that specifies the column names that hold +additional email addresses (beside the `mail` column) for each user. + +|IMAPHostFieldName (optional) +|The field that returns the IMAP hostname for the user. + +|IMAPLoginFieldName (optional) +|The field that returns the IMAP login name for the user (defaults to +`c_uid` when unset). + +|SieveHostFieldName (optional) +|The field that returns the Sieve hostname for the user. + +|KindFieldName (optional) +|If set, 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. + +|MultipleBookingsFieldName (optional) +|The value of this field 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. + +|DomainFieldName (optional) +|If set, SOGo will use the value of that field as the domain associated +to the user. + +See the _Multi-domains Configuration_ section in this document for more +information. +|======================================================================= + +Here is an example of an SQL-based authentication and address book +source: + +---- +SOGoUserSources = +( + { + type = sql; + id = directory; + viewURL = "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view"; + canAuthenticate = YES; + isAddressBook = YES; + userPasswordAlgorithm = md5; + } +); +---- + +Certain database columns must be present in the view/table, such as: + +* `c_uid` – will be used for authentication – it's the username +or username@domain.tld +* `c_name` – which can be identical to `c_uid` – will be used to + uniquely identify entries +* `c_password` – password of the user, plain-text, md5 or sha encoded + for now +* `c_cn` – the user's common name – such as "John Doe" +* `mail` – the user's mail address + +Note that groups are currently not supported for SQL-based +authentication sources. + +SMTP Server Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo makes use of a SMTP server to send emails from the Web interface, +iMIP/iTIP messages and various notifications. + +The following table describes the related parameters. + +[cols="3,47,50a"] +|======================================================================= +|D |SOGoMailingMechanism +|Parameter used to set how SOGo sends mail messages. Possible values +are: + +[options="compact"] +* `sendmail` – to use the sendmail binary +* `smtp` – to use the SMTP protocol + +|D |SOGoSMTPServer +|The DNS name or IP address of the SMTP server used when +_SOGoMailingMechanism_ is set to `smtp`. + +|D |SOGoSMTPAuthenticationType +|Activate SMTP authentication and specifies which type is in use. +Current, only `PLAIN` is supported and other values will be ignored. + +|S |WOSendMail +|The path of the sendmail binary. + +Defaults to `/usr/lib/sendmail`. + +|D |SOGoForceExternalLoginWithEmail +|Parameter used to specify if, when logging in to the SMTP server, the +primary email address of the user will be used instead of the username. +Possible values are: + +[options="compact"] +* `YES` +* `NO` + +Defaults to `NO` when unset. +|======================================================================= + +IMAP Server Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo requires an IMAP server in order to let users consult their email +messages, manage their folders and more. + +The following table describes the related parameters. + +[cols="3,47,50a"] +|======================================================================= +|U |SOGoDraftsFolderName +|Parameter used to set the IMAP folder name used to store drafts +messages. + +Defaults to `Drafts` when unset. + +Use a `/` as a hierarchy separator if referring to an IMAP subfolder. +For example: `INBOX/Drafts`. + +|U |SOGoSentFolderName +|Parameter used to set the IMAP folder name used to store sent messages. + +Defaults to `Sent` when unset. + +Use a `/` as a hierarchy separator if referring to an IMAP subfolder. +For example: `INBOX/Sent`. + +|U |SOGoTrashFolderName +|Parameter used to set the IMAP folder name used to store deleted +messages. + +Defaults to `Trash` when unset. + +Use a `/` as a hierarchy separator if referring to an IMAP subfolder. +For example: `INBOX/Trash`. + +|D |SOGoIMAPCASServiceName +|Parameter used to set the CAS service name (URL) of the imap service. +This is useful if SOGo is connecting to the IMAP service through a +proxy. When using `pam_cas`, this parameter should be set to the same +value as the `-s` argument of the imap pam service. + +|D |SOGoIMAPServer +|Parameter used to set the DNS name or IP address of the IMAP server +used by SOGo. You can also use SSL or TLS by providing a value using an +URL, such as: + +[options="compact"] +* `imaps://localhost:993` +* `imaps://localhost:143/?tls=YES` + +|D |SOGoSieveServer +|Parameter used to set the DNS name or IP address of the Sieve +(managesieve) server used by SOGo. You must use an URL such as: + +[options="compact"] +* `sieve://localhost` +* `sieve://localhost:2000` +* `sieve://localhost:2000/?tls=YES` + +Note that TLS is supported but SSL is not. + +|D |SOGoSieveFolderEncoding +|Parameter used to specify which encoding is used for IMAP folder names +in Sieve filters. Defaults to "UTF-7". The other possible value is +"UTF-8". + +|U |SOGoMailShowSubscribedFoldersOnly +|Parameter used to specify if the Web interface should only show +subscribed IMAP folders. Possible values are: + +[options="compact"] +* `YES` +* `NO` + +Defaults to `NO` when unset. + +|D |SOGoIMAPAclStyle +|Parameter used to specify which RFC the IMAP server implements with +respect to ACLs. Possible values are: + +[options="compact"] +* `rfc2086` +* `rfc4314` + +Defaults to `rfc4314` when unset. + +|D |SOGoIMAPAclConformsToIMAPExt +|Parameter used to specify if the IMAP server implements the Internet +Message Access Protocol Extension. Possible values are: + +[options="compact"] +* `YES` +* `NO` + +Defaults to `NO` when unset. + +|D |SOGoForceExternalLoginWithEmail +|Parameter used to specify if, when logging in to the IMAP server, the +primary email address of the user will be used instead of the username. +Possible values are: + +[options="compact"] +* `YES` +* `NO` + +Defaults to `NO` when unset. + +|D |SOGoMailSpoolPath +|Parameter used to set the path where temporary email drafts are +written. If you change this value, you must also modify the daily +cronjob `sogo-tmpwatch`. + +Defaults to `/var/spool/sogo`. + +|S |NGImap4ConnectionStringSeparator +|Parameter used to set the IMAP mailbox separator. Setting this will +also have an impact on the mailbox separator used by Sieve filters. + +The default separator is `/`. + +|S |NGImap4AuthMechanism +|Trigger the use of the IMAP `AUTHENTICATE` command with the specified +SASL mechanism. Please note that feature might be limited at this time. + +|D |NGImap4ConnectionGroupIdPrefix +|Prefix to prepend to names in IMAP ACL transactions, to indicate the +name is a group name not a user name. + +RFC4314 gives examples where group names are prefixed with `$`. Dovecot, +for one, follows this scheme, and will, for example, apply permissions +for `$admins` to all users in group `admins` in the absence of specific +permissions for the individual user. + +The default prefix is `$`.  +|======================================================================= + +Web Interface Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following additional parameters only affect the Web interface +behaviour of SOGo. + +[cols="3,47,50a"] +|======================================================================= +|S |SOGoPageTitle +|Parameter used to define the Web page title. + +Defaults to `SOGo` when unset. + +|U |SOGoLoginModule +|Parameter used to specify which module to show after login. Possible +values are: + +[options="compact"] +* `Calendar` +* `Mail` +* `Contacts` + +Defaults to `Calendar` when unset. + +|S |SOGoFaviconRelativeURL +|Parameter used to specify the relative URL of the site favion. + +When unset, defaults to the file `sogo.ico` under the default web +resources directory. + +|S |SOGoZipPath +|Parameter used to specify the path of the zip binary used to archive +messages. + +Defaults to `/usr/bin/zip` when unset. + +|D |SOGoSoftQuotaRatio +|Parameter used to change the quota returned by the IMAP server by +multiplying it by the specified ratio. Acts as a soft quota. Example: +`0.8`. + +|U |SOGoMailUseOutlookStyleReplies (not currently editable in Web interface) +|Parameter used to set if email replies should use Outlook's style. + +Defaults to `NO` when unset. + +|U |SOGoMailListViewColumnsOrder (not currently editable in Web +interface) +|Parameter used to specify the default order of the columns from the +SOGo webmail interface. The parameter is an array, for example: + + SOGoMailListViewColumnsOrder = (Flagged, Attachment, Priority, From, Subject, Unread, Date, Size); + +|D |SOGoVacationEnabled +|Parameter used to activate the edition from the preferences window of a +vacation message. + +Requires Sieve script support on the IMAP host. + +Defaults to `NO` when unset. + +When enabling this parameter, one must also enable the associated +cronjob in `/etc/cron.d/sogo` in order to activate automatic vacation +message expiration. + +See the _Cronjob — Vacation messages expiration_ section below for +details. + +|D |SOGoForwardEnabled +|Parameter used to activate the edition from the preferences window of a +forwarding email address. Requires Sieve script support on the IMAP +host. + +Defaults to `NO` when unset. + +|D |SOGoSieveScriptsEnabled +|Parameter used to activate the edition from the preferences windows of +server-side mail filters. Requires Sieve script support on the IMAP +host. + +Defaults to `NO` when unset. + +|D |SOGoMailPollingIntervals +|Parameter used to define the mail polling intervals (in minutes) +available to the user. The parameter is an array that can contain the +following numbers: + +[options="compact"] +* `1` +* `2` +* `5` +* `10` +* `20` +* `30` +* `60` + +Defaults to the list above when unset. + +|U |SOGoMailMessageCheck +|Parameter used to define the mail polling interval at which the IMAP +server is queried for new messages. Possible values are: + +[options="compact"] +* `manually` +* `every_minute` +* `every_2_minutes` +* `every_5_minutes` +* `every_10_minutes` +* `every_20_minutes` +* `every_30_minutes` +* `once_per_hour` + +Defaults to `manually` when unset. + +|D |SOGoMailAuxiliaryUserAccountsEnabled +|Parameter used to activate the auxiliary IMAP accounts in SOGo. When +set to `YES`, users can add other IMAP accounts that will be visible +from the SOGo Webmail interface. + +Defaults to `NO` when unset. + +|U |SOGoDefaultCalendar +|Parameter used to specify which calendar is used when creating an event +or a task. Possible values are: + +[options="compact"] +* `selected` +* `personal` +* `first` + +Defaults to `selected` when unset. + +|U |SOGoDayStartTime +|The hour at which the day starts (`0` through `12`). + +Defaults to `8` when unset. + +|U |SOGoDayEndTime +|The hour at which the day ends (`12` through `23`). + +Defaults to `18` when unset. + +|U |SOGoFirstDayOfWeek +|The day at which the week starts in the week and month views (`0` +through `6`). `0` indicates Sunday. + +Defaults to `0` when unset. + +|U |SOGoFirstWeekOfYear +|Parameter used to defined how is identified the first week of the year. +Possible values are: + +[options="compact"] +* `January1` +* `First4DayWeek` +* `FirstFullWeek` + +Defaults to `January1` when unset. + +|U |SOGoTimeFormat +|The format used to display time in the timeline of the day and week +views. Please refer to the documentation for the date command or the +`strftime` C function for the list of available format sequence. + +Defaults to `%H:%M`. + +|U |SOGoCalendarCategories +|Parameter used to define the categories that can be associated to +events. This parameter is an array of arbitrary strings. + +Defaults to a list that depends on the language. + +|U |SOGoCalendarDefaultCategoryColor +|Parameter used to define the default colour of categories. + +Defaults to `#F0F0F0` when unset. + +|U |SOGoCalendarEventsDefaultClassification +|Parameter used to defined the default classification for new events. +Possible values are: + +[options="compact"] +* `PUBLIC` +* `CONFIDENTIAL` +* `PRIVATE` + +Defaults to `PUBLIC` when unset. + +|U |SOGoCalendarTasksDefaultClassification +|Parameter used to defined the default classification for new tasks. +Possible values are: + +[options="compact"] +* `PUBLIC` +* `CONFIDENTIAL` +* `PRIVATE` + +Defaults to `PUBLIC` when unset. + +|U |SOGoCalendarDefaultReminder +|Parameter used to defined a default reminder for new events. Possible +values are: + +[options="compact"] +* `-PT5M` +* `-PT10M` +* `-PT15M` +* `-PT30M` +* `-PT45M` +* `-PT1H` +* `-PT2H` +* `-PT5H` +* `-PT15H` +* `-P1D` +* `-P2D` +* `-P1W` + +|D |SOGoFreeBusyDefaultInterval +|The number of days to include in the free busy information. The +parameter is an array of two numbers, the first being the number of days +prior to the current day and the second being the number of days +following the current day. + +Defaults to `(7, 7)` when unset. + +|U |SOGoBusyOffHours +|Parameter used to specify if off-hours should be automatically added to +the free-busy information. Off hours included weekends and periods +covered between _SOGoDayEndTime_ and _SOGoDayStartTime_. + +Defaults to `NO` when unset. + +|U |SOGoMailMessageForwarding +|The method the message is to be forwarded. Possible values are: + +[options="compact"] +* `inline` +* `attached` + +Defaults to `inline` when unset. + +|U |SOGoMailCustomFullName +|The string to use as full name when composing an email, if +_SOGoMailCustomFromEnabled_ is set in the user's domain defaults. + +When unset, the full name specified in the user sources for the user is +used instead. + +|U |SOGoMailCustomEmail +|The string to use as email address when composing an email, if +_SOGoMailCustomFromEnabled_ is set in the user's +domain defaults. When unset, the email specified in the user sources for +the user is used instead. + +|U |SOGoMailReplyPlacement +|The reply placement with respect to the quoted message. Possible values +are: + +[options="compact"] +* `above` +* `below` + +Defaults to `below`. + +|U |SOGoMailReplyTo +|The email address to use in the `reply-to` header field when the user +sends a message. + +Ignored when empty. + +|U |SOGoMailSignaturePlacement +|The placement of the signature with respect to the quoted message. +Possible values are: + + +[options="compact"] +* `above` +* `below` + +Defaults to `below`. + +|U |SOGoMailComposeMessageType +|The message composition format. Possible values are: + +* `text` +* `html` + +Defaults to `text`. + +|S |SOGoEnableEMailAlarms +|Parameter used to enable email-based alarms on events and tasks. + +Defaults to `NO` when unset. + +For this feature to work correctly, one must also set the +_OCSEMailAlarmsFolderURL_ parameter and enable the associated cronjob. +See the _Cronjob — EMail reminders_ section from this document for more +information. + +|U |SOGoContactsCategories +|Parameter used to define the categories that can be associated to +contacts. This parameter is an array of arbitrary strings. + +Defaults to a list that depends on the language. + +|D |SOGoUIAdditionalJSFiles +|Parameter used to define a list of additional JavaScript files loaded +by SOGo for all displayed web pages. This parameter is an array of +strings corresponding of paths to the arbitrary JavaScript files. The +paths are relative to the `WebServerResources` directory, which is +usually found under `/usr/lib/GNUstep/SOGo/.` + +|D |SOGoMailCustomFromEnabled +|Parameter used to allow or not users to specify custom "From" addresses +from SOGo's preferences panel. + +Defaults to `NO` when unset. + +|D |SOGoSubscriptionFolderFormat +|Parameter used to set the default formatting of a subscription folder +name. Available variables are: + +* `%{FolderName}` +* `%{UserName}` +* `%{Email}` + +Defaults to `%{FolderName} (%{UserName} <%{Email}>)` when unset. + +|D |SOGoUIxAdditionalPreferences +|Parameter used to enable an extra preferences tab using the content of +the template named `UIxAdditionalPreferences.wox`. This template should +be put under `~sogo/GNUstep/Library/SOGo/Templates/PreferencesUI/`. + +Defaults to `NO` when unset. +|======================================================================= + +SOGo Configuration Summary +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The complete SOGo configuration file+/etc/sogo/sogo.conf+should look +like this: + +---- +{ + SOGoProfileURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile"; + OCSFolderInfoURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info"; + OCSSessionsFolderURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder"; + SOGoAppointmentSendEMailNotifications = YES; + SOGoCalendarDefaultRoles = ( + PublicViewer, + ConfidentialDAndTViewer + ); + SOGoLanguage = English; + SOGoMailDomain = acme.com; + SOGoDraftsFolderName = Drafts; + SOGoIMAPServer = localhost; + SOGoUserSources = ( + { + type = ldap; + CNFieldName = cn; + IDFieldName = uid; + UIDFieldName = uid; + baseDN = "ou=users,dc=acme,dc=com"; + bindDN = "uid=sogo,ou=users,dc=acme,dc=com"; + bindPassword = qwerty; + canAuthenticate = YES; + displayName = "Shared Addresses"; + hostname = localhost; + id = public; + isAddressBook = YES; + port = 389; + } + ); + SOGoMailingMechanism = smtp; + SOGoSMTPServer = 127.0.0.1; + SOGoSentFolderName = Sent; + SOGoTimeZone = America/Montreal; + SOGoTrashFolderName = Trash; +} +---- + +Multi-domains Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you want your installation to isolate two groups of users, you must +define a distinct authentication source for each _domain_. Following is +the same configuration that now includes two domains (acme.com and +coyote.com): + +---- +{ + SOGoProfileURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile"; + OCSFolderInfoURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info"; + OCSSessionsFolderURL = + "postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder"; + SOGoAppointmentSendEMailNotifications = YES; + SOGoCalendarDefaultRoles = ( + PublicViewer, + ConfidentialDAndTViewer + ); + SOGoLanguage = English; + SOGoMailingMechanism = smtp; + SOGoSMTPServer = 127.0.0.1; + SOGoSentFolderName = Sent; + SOGoTimeZone = America/Montreal; + SOGoTrashFolderName = Trash; + SOGoIMAPServer = localhost; + domains = { + acme = { + SOGoMailDomain = acme.com; + SOGoDraftsFolderName = Drafts; + SOGoUserSources = ( + { + type = ldap; + CNFieldName = cn; + IDFieldName = uid; + UIDFieldName = uid; + baseDN = "ou=users,dc=acme,dc=com"; + bindDN = "uid=sogo,ou=users,dc=acme,dc=com"; + bindPassword = qwerty; + canAuthenticate = YES; + displayName = "Shared Addresses"; + hostname = localhost; + id = public_acme; + isAddressBook = YES; + port = 389; + } + ); + }; + coyote = { + SOGoMailDomain = coyote.com; + SOGoIMAPServer = imap.coyote.com; + SOGoUserSources = ( + { + type = ldap; + CNFieldName = cn; + IDFieldName = uid; + UIDFieldName = uid; + baseDN = "ou=users,dc=coyote,dc=com"; + bindDN = "uid=sogo,ou=users,dc=coyote,dc=com"; + bindPassword = qwerty; + canAuthenticate = YES; + displayName = "Shared Addresses"; + hostname = localhost; + id = public_coyote; + isAddressBook = YES; + port = 389; + } + ); + }; + }; +} +---- + +The following additional parameters only affect SOGo when using multiple +domains. + +[cols="3,47,50a"] +|======================================================================= +|S |SOGoEnableDomainBasedUID +|Parameter used to activate user identification by domain. Users will be +able (without being required) to login using the form `username@domain`, +meaning that values of _UIDFieldName_ no longer have to be unique among +all domains but only within the same domain. Internally, users will +always be identified by the concatenation of their username and domain. + +Consequently, activating this parameter on an existing system implies +that user identifiers will change and their previous calendars and +address books will no longer be accessible unless a conversion is +performed. + +Defaults to `NO` when unset. + +|S |SOGoLoginDomains +|Parameter used to define which domains should be selectable from the +login page. This parameter is an array of keys from the `domains` +dictionary. + +Defaults to an empty array, which means that no domains appear on the +login page. If you prefer having the domain names listed, just use these +as keys for the the `domains` dictionary. + +|S |SOGoDomainsVisibility +|Parameter used to set domains visible among themselves. This parameter +is an array of arrays. + +Example: `SOGoDomainsVisibility = ((acme, coyote));` + +Defaults to an empty array, which means domains are isolated from each +other. +|======================================================================= + +Apache Configuration +~~~~~~~~~~~~~~~~~~~~ + +The SOGo configuration for Apache is located in +`/etc/httpd/conf.d/SOGo.conf`. + +Upon SOGo installation, a default configuration file is created which is +suitable for most configurations. + +You must also configure the following parameters in the SOGo +configuration file for Apache in order to have a working installation: + +---- +RequestHeader set "x-webobjects-server-port" "80" +RequestHeader set "x-webobjects-server-name" "yourhostname" +RequestHeader set "x-webobjects-server-url" "http://yourhostname" +---- + +You may consider enabling SSL on top of this current installation to +secure access to your SOGo installation. + +See http://httpd.apache.org/docs/2.2/ssl/ for details. + +You might also have to adjust the configuration if you have SELinux +enabled. + +The default configuration will use `mod_proxy` and `mod_headers` to +relay requests to the `sogod` parent process. This is suitable for small +to medium deployments. + +Starting Services +~~~~~~~~~~~~~~~~~ + +Once SOGo if fully installed and configured, start the services using +the following command: + + service sogod start + +You may verify using thechkconfigcommand that the SOGo service is +automatically started at boot time. Restart the Apache service since +modules and configuration files were added: + + service httpd restart + +Finally, you should also make sure that the `memcached` service is +started and that it is also automatically started at boot time. + +_Cronjob_ — EMail reminders +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo allows you to set email-based reminders for events and tasks. To +enable this, you must enable the `SOGoEnableEMailAlarms` preference and +set the `OCSEMailAlarmsFolderURL` preference accordingly. + +Once you've correctly set those two preferences, you must create +a _cronjob_ that will run under the "sogo" user. This _cronjob_ should +be run every minute. + +A commented out example should have been installed in +`/etc/cron.d/sogo`, to enable it, simply uncomment it. + +As a reference, the _cronjob_ should de defined like this: + +---- +* * * * *     /usr/sbin/sogo-ealarms-notify +---- + +If your mail server requires use of SMTP AUTH, specify a credential file +using `-p /path/to/credFile`. This file should contain the username and +password, separated by a colon (`username:password`) + +_Cronjob_ — Vacation messages expiration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When vacation messages are enabled (see the parameter +_SOGoVacationEnabled_), users can set an expiration date to messages +auto-reply. For this feature to work, you must run a _cronjob_ under the +"sogo" user. + +A commented out example should have been installed in +`/etc/cron.d/sogo`. To work correctly this tool must login as an +administrative user on the sieve server. The required credentials must +be specified in a file by using `-p /path/to/credFile`. This file should +contain the username and password, separated by a colon +(`username:password`). + +The _cronjob_ should look like this: + +---- +0 0 * * * sogo /usr/sbin/sogo-tool expire-autoreply -p /etc/sogo/sieve.creds +---- + +Managing User Accounts +---------------------- + +Creating the SOGo Administrative Account +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +First, create the SOGo administrative account in your LDAP server. The +following LDIF file (`sogo.ldif`) can be used as an example: + +---- +dn: uid=sogo,ou=users,dc=acme,dc=com +objectClass: top +objectClass: inetOrgPerson +objectClass: person +objectClass: organizationalPerson +uid: sogo +cn: SOGo Administrator +mail: sogo@acme.com +sn: Administrator +givenName: SOGo +---- + +Load the LDIF file inside your LDAP server using the following command: + + ldapadd -f sogo.ldif -x -w qwerty -D cn=Manager,dc=acme,dc=com + +Finally, set the password (to the value `qwerty`) of the SOGo +administrative account using the following command: + + ldappasswd -h localhost -x -w qwerty -D cn=Manager,dc=acme,dc=com uid=sogo,ou=users,dc=acme,dc=com -s qwerty + +Creating a User Account +~~~~~~~~~~~~~~~~~~~~~~~ + +SOGo uses LDAP directories to authenticate users. Use the following LDIF +file (`jdoe.ldif`) as an example to create a SOGo user account: + +---- +dn: uid=jdoe,ou=users,dc=acme,dc=com +objectClass: top +objectClass: inetOrgPerson +objectClass: person +objectClass: organizationalPerson +uid: jdoe +cn: John Doe +mail: jdoe@acme.com +sn: Doe +givenName: John +---- + +Load the LDIF file inside your LDAP server using the following command: + + ldapadd -f jdoe.ldif -x -w qwerty -D cn=Manager,dc=acme,dc=com + +Finally, set the password (to the value `qwerty`) of the SOGo +administrative account using the following command: + + ldappasswd -h localhost -x -w qwerty -D cn=Manager,dc=acme,dc=com uid=jdoe,ou=users,dc=acme,dc=com -s qwerty + +As an alternative to using command-line tools, you can also use LDAP +editors such as _Luma_ or _Apache Directory Studio_ to make your work +easier. These GUI utilities can make use of templates to create and +pre-configure typical user accounts or any standardized LDAP record, +along with the correct object classes, fields and default values. + +Microsoft ActiveSync +-------------------- + +SOGo supports the Microsoft ActiveSync protocol. + +ActiveSync clients can fully synchronize contacts, emails, events and +tasks with SOGo. Freebusy and GAL lookups are also supported, as well as +"Smart reply" and "Smart forward" operations. + +To enable Microsoft ActiveSync support in SOGo, you must install the +required packages. + + yum install sogo-activesync libwbxml + +Once installed, simply uncomment the following lines from your SOGo +Apache configuration: + +---- +ProxyPass /Microsoft-Server-ActiveSync \ + http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync \ + retry=60 connectiontimeout=5 timeout=360 +---- + +Restart Apache afterwards. + +The following additional parameters only affect SOGo when using +ActiveSync: + +[cols="3,47,50a"] +|======================================================================= +|S |SOGoMaximumPingInterval +|Parameter used to set the maximum amount of time, in seconds, SOGo will +wait before replying to a Ping command. + +If not set, it defaults to `5` seconds. + +|S |SOGoMaximumSyncInterval +|Parameter used to set the maximum amount of time, in seconds, SOGo will +wait before replying to a Sync command. + +If not set, it defaults to `30` seconds. + +|S |SOGoInternalSyncInterval +|Parameter used to set the maximum amount of time, in seconds, SOGo will +wait before doing an internal check for data changes (add, delete, and +update). This parameter must be lower than _SOGoMaximumSyncInterval_. + +If not set, it defaults to `10` seconds. + +|S |SOGoMaximumSyncWindowSize +|Parameter used to overwrite the maximum number of items returned during +a Sync operation. + +Defaults to `0`, which means no overwrite is performed. + +Setting this parameter to a value greater than `512` will +have unexpected behaviour with various ActiveSync clients. +|======================================================================= + +Please be aware of the following limitations: + +* Currently, only the personal calendar and address book are +synchronized. Adding support for all folders is planned. +* When creating an Outlook 2013 profile, you must actually kill Outlook +before the end of the creation process. See http://www.vionblog.com/connect-zimbra-community-with-outlook-2013 +for a procedure example. +* Outlook 2013 does not search the GAL. One possible alternative +solution is to configure Outlook to use a LDAP server (over SSL) with +authentication. Alternatively, when supporting more than just the +personal address book, we'll also be able to expose the LDAP/SQL based +address books in SOGo over ActiveSync. +* Make sure you do not use a self-signed certificate. While this will +work, Outlook will work intermittently as it will raise popups for +certificate validation, sometimes in background, preventing the user to +see the warning and thus, preventing any synchronization to happen. +* ActiveSync clients keep connections open for a while. Each connection +will grab a hold on a sogod process so you will need a lot of processes +to handle many clients. This limitation will eventually be overcome in +SOGo. +* Repetitive events with occurrences exceptions are currently not +supported. +* Outlook 2013 Autodiscovery is currently not supported. +* Outlook 2013 freebusy lookups are supported using the Internet +Free/Busy feature of Outlook 2013. Please +see http://support.microsoft.com/kb/291621 for configuration +instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to +`YES` and the URL to use must be of the following format: +`http:///SOGo/dav/public/%NAME%/freebusy.ifb` + +In order to use the SOGo ActiveSync support code in production +environments, you need to get a proper usage license from Microsoft. +Please contact them directly to negotiate the fees associated to your +user base. + +To contact Microsoft, please visit: + +http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exchangeactivesyncprotocol.aspx +  +and send an email to iplicreq@microsoft.com + +Inverse inc. provides this software for free, but is not responsible for +anything related to its usage. + +Using SOGo +---------- + +SOGo Web Interface +~~~~~~~~~~~~~~~~~~ + +To acces the SOGo Web Interface, point your Web browser, which is +running from the same server where SOGo was installed, to the following +URL: http://localhost/SOGo. + +Log in using the "jdoe" user and the "qwerty" password. The underlying +database tables will automatically be created by SOGo. + +Mozilla Thunderbird and Lightning +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Alternatively, you can access SOGo with a GroupDAV and a CalDAV client. +A typical well-integrated setup is to use Mozilla Thunderbird and +Mozilla Lightning along with Inverse's _SOGo Connector_ plug in to +synchronize your address books and the Inverse's _SOGo Integrator_ plug +in to provide a complete integration of the features of SOGo into +Thunderbird and Lightning. Refer to the documentation of Thunderbird to +configure an initial IMAP account pointing to your SOGo server and using +the user name and password mentioned above. + +With the SOGo Integrator plug in, your calendars and address books will +be automatically discovered when you login in Thunderbird. This plug in +can also propagate specific extensions and default user settings among +your site. However, be aware that in order to use the SOGo Integrator +plug in, you will need to repackage it with specific modifications. +Please refer to the documentation published online: + +http://www.sogo.nu/downloads/documentation.html + +If you only use the SOGo Connector plug in, you can still easily access +your data. + +To access your personal address book: + +* Choose Go > Address Book. +* Choose File > New > Remote Address Book. +* Enter a significant name for your calendar in the Name field. +* Type the following URL in the URL field: +`http://localhost/SOGo/dav/jdoe/Contacts/personal/` +* Click on OK. + +To access your personal calendar: + +* Choose Go > Calendar. +* Choose Calendar > New Calendar. +* Select On the Network and click on Continue. +* Select CalDAV. +* Type the following URL in the URL field: +`http://localhost/SOGo/dav/jdoe/Calendar/personal/` +* Click on Continue. + +Apple iCal +~~~~~~~~~~ + +Apple iCal can also be used as a client application for SOGo. + +To configure it so it works with SOGo, create a new account and specify, +as the Account URL, an URL such as: + +http://localhost/SOGo/dav/jdoe/ + +Note that the trailing slash is important for Apple iCal 3. + +Apple AddressBook +~~~~~~~~~~~~~~~~~ + +Since Mac OS X 10.6 (Snow Leopard), Apple AddressBook can be configured +to use SOGo. + +In order to make this work, you must add a new virtual host in your +Apache configuration file to listen on port 8800 and handle requests +coming from iOS devices. + +The virtual host should be defined like: + +---- + + RewriteEngine Off + ProxyRequests Off + SetEnv proxy-nokeepalive 1 + ProxyPreserveHost On + ProxyPassInterpolateEnv On + ProxyPass /principals http://127.0.0.1:20000/SOGo/dav/ interpolate + ProxyPass /SOGo http://127.0.0.1:20000/SOGo interpolate + ProxyPass / http://127.0.0.1:20000/SOGo/dav/ interpolate + + + Order allow,deny + Allow from all + + + RequestHeader set "x-webobjects-server-port" "8800" + RequestHeader set "x-webobjects-server-name" "acme.com:8800" + RequestHeader set "x-webobjects-server-url" "http://acme.com:8800" + RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" + RequestHeader set "x-webobjects-remote-host" "127.0.0.1" + AddDefaultCharset UTF-8 + + ErrorLog /var/log/apache2/ab-error.log + CustomLog /var/log/apache2/ab-access.log combined + +---- + +This configuration is also required if you want to configure a CardDAV +account on an Apple iOS device (version 4.0 and later). + +Microsoft ActiveSync / Mobile Devices +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can synchronize contacts, emails, events and tasks from SOGo with +any mobile devices that support Microsoft ActiveSync. Microsoft Outlook +2013 is also supported. + +The Microsoft ActiveSync server URL is generally something +like: `http://localhost/Microsoft-Active-Sync`. + +Upgrading +--------- + +This section describes what needs to be done when upgrading to the +current version of SOGo from the previous release. + +[cols="100a"] +|======================================================================= +h|2.2.8 +|The configuration configuration parameters were renamed: + +[options="compact"] +* _SOGoMailMessageCheck_ was replaced with _SOGoRefreshViewCheck_ +* _SOGoMailPollingIntervals_ was replaced with _SOGoRefreshViewIntervals_ + +Backward compatibility is in place for the old preferences values. + +h|2.0.5 +|The configuration is now stored in /etc/sogo/sogo.conf. Perform the following commands as root to migrate your previous user defaults: + +---- +install -d -m 750 -o sogo -g sogo /etc/sogo +sudo -u sogo sogo-tool dump-defaults > /etc/sogo/sogo.conf +chown root:sogo /etc/sogo/sogo.conf +chmod 640 /etc/sogo/sogo.conf +sudo -u sogo mv ~/GNUstep/Defaults/.GNUstepDefaults \ + ~/GNUstep/Defaults/GNUstepDefaults.old +---- + +h|2.0.4 +|The parameter _SOGoForceIMAPLoginWithEmail_ is now deprecated and is +replaced by _SOGoForceExternalLoginWithEmail_ (which extends the +functionality to SMTP authentication). Update your configuration if you +use this parameter. + +The sogo user is now a system user. For new installs, this means that +`su - sogo` won't work anymore. Please use `sudo -u sogo ` instead. +If used in scripts from cronjobs, `requiretty` must be disabled in +sudoers. + +h|1.3.17 +|Run the shell script `sql-update-1.3.16_to_1.3.17.sh` or +`sql-update-1.3.16_to_1.3.17-mysql.sh` (if you use MySQL). + +This will grow the "cycle info" field of calendar tables to a larger +size. + +h|1.3.12 +|Once you have updated and restarted SOGo, run the shell script +`sql-update-1.3.11_to_1.3.12.sh` or +`sql-update-1.3.11_to_1.3.12-mysql.sh` (if you use MySQL). + +This will grow the "content" field of calendar and addressbook tables to +a larger size and fix the primary key of the session table. + +h|1.3.9 +|For Red Hat-based distributions, version 1.23 of GNUstep will be +installed. Since the location of the Web resources changes, the Apache +configuration file (`SOGo.conf`) has been adapted. Verify your Apache +configuration if you have customized this file. +|======================================================================= + +include::includes/additional-info.asciidoc[] + +include::includes/commercial-support.asciidoc[] diff --git a/Documentation/SOGoMobileDevicesConfigurationGuide.asciidoc b/Documentation/SOGoMobileDevicesConfigurationGuide.asciidoc new file mode 100644 index 000000000..d1871b44a --- /dev/null +++ b/Documentation/SOGoMobileDevicesConfigurationGuide.asciidoc @@ -0,0 +1,330 @@ +Mobile Devices Configuration Guide +================================== + +//// + + This file is part of the SOGo project. + + See SOGo Mobile Devices Configuration-docinfo.xml for authors, + copyright and license information. + +//// + +include::includes/global-attributes.asciidoc[] + +About this Guide +---------------- + +This guide will walk you through the installation and configuration of +popular SyncML clients to be used with the SOGo solution. + +This guide also include instructions for configuring Apple iPhone OS +devices (iPhone, iPod touch, and iPad). + +The instructions are based on version {release_version} of SOGo. + +The latest version of this guide is available at +http://www.sogo.nu/downloads/documentation.html. + +Introduction +------------ + +SOGo is a free and modern scalable groupware server. It offers shared +calendars, address books, and emails through your favourite Web browser +and by using a native client such as Mozilla Thunderbird and Lightning. + +SOGo is standard-compliant. It supports CalDAV, CardDAV, GroupDAV, iMIP +and iTIP and reuses existing IMAP, SMTP and database servers - making +the solution easy to deploy and interoperable with many applications. + +SOGo features: + +* Scalable architecture suitable for deployments from dozen to many +thousand users +* Rich Web-based interface that shares the look and feel, the features +and the data of Mozilla Thunderbird and Lightning +* Improved integration with Mozilla Thunderbird and Lighthing by using +the SOGo Connector and the SOGo Integrator +* Two-way synchronization support with any Microsoft ActiveSync-capable +device, or Outlook 2013 + +SOGo is developed by a community of developers located mainly in North +America and Europe. More information can be found on +http://www.sogo.nu/. + +Installation +------------ + +This section will guide you through the installation of popular SyncML +clients on various devices. + +Funambol SyncML Client +~~~~~~~~~~~~~~~~~~~~~~ + +The recommended SyncML client for BlackBerry, Apple iPhone (for +contacts), mobile devices based on Microsoft Windows Mobile Smartphone +or Windows Mobile PocketPC, is the one provided directly by Funambol, +which is free and open source. + +For Microsoft Window Mobile, you must identify which kind of device you +have ("Smartphone" vs. "PocketPC"). + +Once you've identified what kind of device you have, download the +appropriate client from: + +http://www.funambol.com/opensource/downloads.php + +The version 8.5 GA or later is required.  + +NextHaus SyncJe +~~~~~~~~~~~~~~~ + +For BlackBerry and Apple iPhone devices, you can also use the +SyncJe SyncML client from NextHaus (http://www.nexthaus.com/). This +client allows one to synchronize contacts, event and tasks with SOGo. + +The version 2.43 or later is required. For BlackBerry 7XXX devices, the +required version is 2.25 but isn't officially supported. You can install +SyncJe on your BlackBerry device, over the air, by opening the following +link from your BlackBerry device: + +http://www.nexthaus.com/bb/syncjebb.jad + +This will download and install the application on your mobile device. +It's important to use the Web browser application and not the WAP +browser to perform this operation. Once installed, restart the device. +This procedure can also be used to update the SyncJe application. Note +that an update of SyncJe will not affect the state of previous +synchronizations. It's not necessary to perform a "slow sync" after an +update of SyncJe.  + +Synthesis SyncML Client +~~~~~~~~~~~~~~~~~~~~~~~ + +The Synthesis (http://www.synthesis.ch/) company provides a SyncML +client for Palm OS-based devices. + +"Over The Air" synchronization is possible, as well as synchronization +through a cradle. For the latter, you must install Softick PPP using the +Palm Desktop software. The version 3.01 or later is required and you can +download it from http://www.softick.com/ppp/. Once installed, the +desktop computer must be restarted. + +Once completed, you must download the Synthesis client for Palm OS. The +version 3.0.2.9 or later is required. Either the standard or the +professional version can be used. + +Once downloaded, uncompress the archive and install the `.prc` file on +your Palm OS-based device. After, you should see a "SyncML" icon on your +device. + +Configuration +------------- + +In this section, you'll learn how to configure the popular SyncML +clients in order to fully synchronize your mobile device with SOGo. + +Instructions for Apple iPhone OS based devices are also included. Note +that those devices do not require a SyncML client for synchronizing +calendars. + +Funambol SyncML Client +~~~~~~~~~~~~~~~~~~~~~~ + +Once the Funambol SyncML client is installed, start the application from +your mobile device to configure it using the following steps: + +From the _Tools_ menu, choose _Options..._: + +* Specify the _Location_. If your SOGo server is `sogo.domain.com`, the +location should be `http://sogo.domain.com/funambol/ds`. +* Specify your username and password +* Check the _Contacts_ check box and click on the _Details_ button. + The synchronization type is _two-way_ and the _Remote name_ is + `sogo-card`. The data format is vCard. +* Check the _Calendar_ check box and click on the _Details_ button. The + synchronization type is _two-way_ and the _Remote name_ is `sogo-cal`. + The data format is vCalendar. +* Check the _Tasks_ check box and click on the _Details_ button. The + synchronization type is _two-way_ and the _Remote name_ is + `sogo-todo`. The data format is SIF. +* Save the preferences. + +To prevent the BlackBerry to automatically add a new event in the +calendar when an invitation is received by email (IMIP message) on the +BlackBerry device, you should delete the CICAL service from the Service +Book. To do so, proceed with the following steps: + +From the _Options_ menu: + +* Choose _Advanced Options_ +* Choose _Service Book_ +* Identify the line that mentions the email address of the BlackBerry + user followed by the `[CICAL]` string. For example, `user@domain.com +[CICAL]`. +* Delete this entry. + +Once completed, you must restart the device by removing its battery for +a couple of seconds. If you ever want to reactivate the CICAL service, +follow those instructions: + +http://support.appriver.com/KB/a205/how-to-resend-service-books-on-blackberry.aspx + +Once complete, the client is ready for an initial synchronization. + +Ideally, you should *delete* all data from the mobile device before the +initial synchronization. To do so: + +* From the _Tools_ menu, choose _Recover..._ +* Choose _Replace with data from server_ +* Check the _Contacts_, _Calendar_ and _Tasks_ check boxes + +Finally, click on the _Sync All_ button to proceed with the +synchronization. + +NextHaus SyncJe +~~~~~~~~~~~~~~~ + +Once NextHaus SyncJe is installed, proceed with the following steps, +from your BlackBerry device, to configure it: + +* Open the _SyncJe Client_ + +From the _Settings_ menu: + +* Specify the _Server URL_. If your SOGo server is `sogo.domain.com`, +the URL should be `http://sogo.domain.com/funambol/ds`. +* Specify your user name and password +* Check the _Contacts_ check box and specify `sogo-card` as the + _Foldername_ +* Check the _Calendar_ check box and specify `sogo-cal` as the + _Foldername_ +* Check the _ToDo_ check box and specify `sogo-todo` as the _Foldername_ +* Check the _Auto Sync_ check box if you wish to automatically + synchronize contacts, events and tasks at a predefined time interval +* Do *not* check the _Sync events between_ check box +* Check the _Skip saving attendees_ - this will prevent the BlackBerry + device from sending emails to meeting participants for events + downloaded from the SOGo server +* Check the _BIS_ check box (for _BlackBerry Internet Services_) +* Leave the other fields to the their default value +* Then choose _Save_ from the menu to save the preferences  + +To prevent the BlackBerry to automatically add a new event in the +calendar when an invitation is received by email (IMIP message) on the +BlackBerry device, you should delete the CICAL service from the Service +Book. To do so, proceed with the following steps: + +From the _Options_ menu: + +* Choose _Advanced Options_ +* Choose _Service Book_ +* Identify the line that mentions the email address of the BlackBerry +user followed by the `[CICAL]` string. For example, `user@domain.com +[CICAL]`. +* Delete this entry + +Once completed, you must restart the device by removing its battery for +a couple of seconds. If you ever want to reactivate the CICAL service, +follow those instructions: + +http://support.appriver.com/KB/a205/how-to-resend-service-books-on-blackberry.aspx + +Once done, you're now ready for your first synchronization. + +Ideally, you must delete all data on the BlackBerry before proceeding +with the initial synchronization. To do so, proceed with the following +steps: + +* Open the _SyncJe Client_ + +From the _Settings_ menu: + +* Choose the _Clear databases_ option +* Respond _Yes_ to all questions. This will delete all contacts, events + and tasks from your BlackBerry device.  +* Go back in the previous menu +* Choose the _Force Slow Sync_ option +* Choose the _Start Sync_ option to start the synchronization. This + could take a few minutes if you have many contacts, events or tasks. + Subsequent synchronizations should be much faster.  + +After the initial _Slow Sync_, you can simply chose the _Start Sync_ +option if you do a manual synchronization to synchronize all changes.  + +Synthesis SyncML Client +~~~~~~~~~~~~~~~~~~~~~~~ + +Once the Synthesis SyncML client is installed, proceed with the +following steps to configure it: + +* Open the _Synthesis SyncML Standard Edition_ application + +From the _Settings..._ menu: + +* Specify the _Server URL_. If your SOGo server is `sogo.domain.com`, + the URL should be `http://sogo.domain.com/funambol/ds`. +* Specify your user name and password +* Check the _Contacts_, _Events_ and _Task_ check boxes +* Click on the _more..._ button +* For the _Contacts_, choose _reload device_ and specify `sogo-card` as + the _Server Path_. +* For the _Events_, choose _reload device_ and specify `sogo-cal` as + the _Server Path_. Do *not* check the _Only from..._ check box. +* For the _Tasks_, choose _reload device_ and specify `sogo-todo` as + the _Server Path_. +* Once completed, click on the _Done_ button + +The _reload device_ value will *delete* all entries on the device during +the initial synchronization and obtain contacts, events and tasks from +the server. If you do not want to delete everything from the device, +please choose _normal_ instead of _reload device_. + +Once ready, click on the _Start_ button to proceed with the initial +synchronization. + +During the initial synchronization, the Palm device will ask you how to +connect to the desktop system. From the Palm device, choose _Windows +RAS_ without specifying an user name or a password. This will allow the +Palm device to establish a PPP connection between itself and Softick PPP +and then communicate using its TCP/IP stack to the Funambol server. + +Apple iOS — Calendars +~~~~~~~~~~~~~~~~~~~~~ + +Starting from iOS 3, Apple has added CalDAV support to the calendar +application included in the iPhone/iPod/iPad. + +To add a CalDAV account, follow those instructions: + +* From the _Settings_ menu, choose _Mail, Contacts, Calendars_ +* Choose _Add Account..._ +* Choose _Other_ +* Choose _Add CalDAV Account_ +* Specify the _Server_, the URL should be + `http://sogo.domain.com/SOGo/dav/` + +On iOS 3.1.2 and later, you must also specify the range of events you +want to have.  + +* From the _Settings_ menu, choose _Mail, Contacts, Calendars_ +* From the _Sync_ menu, choose _All Events_ + +Note that other options (_Events 2 Weeks Back_, etc.) do not work right +now. + +Apple iOS — Contacts +~~~~~~~~~~~~~~~~~~~~ + +If you want to synchronize contacts with your Apple mobile device, use +the native address book application with SOGo using the CardDAV +protocol. To configure the address book application so it works with +SOGo, create a new CardDAV account and specify your server name. In +the _Advanced Settings_, set the port to `8800`. + +On iOS prior to version 4, you must install the Funambol client and +configure the `sogo-card` source. + +include::includes/additional-info.asciidoc[] + +include::includes/commercial-support.asciidoc[] diff --git a/Documentation/SOGoMozillaThunderbirdConfigurationGuide.asciidoc b/Documentation/SOGoMozillaThunderbirdConfigurationGuide.asciidoc new file mode 100644 index 000000000..9457e37f0 --- /dev/null +++ b/Documentation/SOGoMozillaThunderbirdConfigurationGuide.asciidoc @@ -0,0 +1,358 @@ +Mozilla Thunderbird Configuration Guide +======================================= + +//// + + This file is part of the SOGo project. + + See SOGo Mozilla Thunderbird Configuration Guide-docinfo.xml for + authors, copyright and license information. + +//// + +include::includes/global-attributes.asciidoc[] + +About this Guide +---------------- + +This guide will walk you through the installation and configuration of +Mozilla Thunderbird and its associated extensions so it can be used with +the SOGo solution. + +The instructions are based on version {release_version} of SOGo. + +The latest version of this guide is available +at http://www.sogo.nu/downloads/documentation.html. + +Introduction +------------ + +SOGo is a free and modern scalable groupware server. It offers shared +calendars, address books, and emails through your favourite Web browser +and by using a native client such as Mozilla Thunderbird and Lightning. + +SOGo is standard-compliant. It supports CalDAV, CardDAV, GroupDAV, iMIP +and iTIP and reuses existing IMAP, SMTP and database servers - making +the solution easy to deploy and interoperable with many applications. + +SOGo features: + +* Scalable architecture suitable for deployments from dozen to many +thousand users +* Rich Web-based interface that shares the look and feel, the features +and the data of Mozilla Thunderbird and Lightning +* Improved integration with Mozilla Thunderbird and Lightning by using +the SOGo Connector and the SOGo Integrator extensions +* Two-way synchronization support with any Microsoft ActiveSync-capable +device, or Outlook 2013 + +SOGo is developed by a community of developers located mainly in North +America and Europe. More information can be found on +http://www.sogo.nu/. + +Installation +------------ + +This section will guide you through the installation of Thunderbird and +its associated extensions. + +Mozilla Thunderbird +~~~~~~~~~~~~~~~~~~~ + +Mozilla Thunderbird is the official front end client of SOGo. + +Mozilla Thunderbird version 2, 3.1, 10 ESR (Extended Support Release), +17 ESR, and 24 are supported and it is recommended to use version 24 of +Thunderbird. + +In order to download and install Mozilla Thunderbird, please visit: + +https://www.mozilla.org/en-US/thunderbird/organizations/all-esr.html + +Mozilla Lightning +~~~~~~~~~~~~~~~~~ + +When using version 24 of Thunderbird, you can use the latest version of +Mozilla Lightning. Use the Add-ons manager of Thunderbird or visit: + +https://addons.mozilla.org/en-US/thunderbird/addon/lightning/ + +When using version 17 ESR of Thunderbird, you can use Mozilla Lightning +version 1.9.1. In order to download the extension, please visit: + +https://addons.mozilla.org/en-US/thunderbird/addon/lightning/versions/?page=1#version-1.9.1 + +For Thunderbird 2 and 3.1, you need the _Inverse Edition_of Mozilla +Lightning. It provides back ported features, bug fixes and security +fixes from the current development version of Mozilla Lightning. For +Thunderbird 2, it is based on release version 0.9 of Lightning. For +Thunderbird 3.1, it is based on 1.0b2. + +In order to download and install Mozilla Lightning – Inverse Edition for +Thunderbird 2 or 3.1, please visit: + +http://www.sogo.nu/downloads/frontends.html + +SOGo Connector and SOGo Integrator +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The SOGo Connector and Integrator extensions are provided to perfect the +integration of Mozilla Thunderbird 2, 3.1, 10 ESR, 17 ESR and 24 with +the SOGo groupware solution. + +First of all, the SOGo Connector extension transforms Thunderbird into a +full DAV client for groupware servers such as SOGo, eGroupware or +Citadel. It does this by adding support for remote DAV address books and +by adding features to be used along with the Lightning calendar +extension. + +Among supported features of the SOGo Connector extension, we have: + +* Free / Busy URL field in the address book +* Free / Busy functionality through HTTP +* Event organizers +* Synchronization of the address book using GroupDAV +* CardDAV implementation for the address book +* Support for WebDAV ACL + +On the other hand, the SOGo Integrator extension transforms Thunderbird +into a pure "heavy" client for SOGo. Whereas the SOGo Connector is meant +for portability (horizontal integration), the SOGo Integrator makes use +of the features and layout only available from SOGo (vertical +integration). + +Among the supported features of the SOGo Integrator extension, we have : + +* Remote administration of folder subscriptions +* Remote administration of folder access control lists (ACL) +* Automatic replication of your local and subscribed folders +* When correctly configured, it handles the propagation of updates to +chosen extensions from a local update server +* Automatic propagation of default settings + +In order to download and install the SOGo Connector and Integrator +extensions, please visit: + +http://www.sogo.nu/downloads/frontends.html + +Prior to installing the SOGo Integrator extension, you should read the +following chapter – _SOGo Integrator Customization_. + +SOGo Integrator Customization +----------------------------- + +In this section, you'll learn how to customize the SOGo Integrator +extension so it can be used alongside your SOGo server. + +Customization +~~~~~~~~~~~~~ + +The customization steps described here involves understanding of XML and +of text file edition. If you do not have those skills, it is recommended +that you don't try to use this extension. + +There are actually two steps in the configuration of a working +environment for SOGo Integrator. First of all, the Integrator will use +the same user name used to connect to the first email server configured +in Thunderbird. It is a current limitation but it will fit nearly all +configurations out there. + +For testing purpose, you are strongly recommended to create and +configure an additional user profile for Thunderbird. This is for two +reasons. The first is because of the limitation mentioned above. The +second is because the Integrator will synchronize your personal address +book onto the SOGo server and then remove it so that only your personal +address book on SOGo will be available. If you are not able to do that, +you may want to make a copy of that address book beforehand. + +The second part requires editing one file in the extension file sub tree +to specify where the SOGo server is located. This is done by hand. In an +enterprise environment, this step is only required once per release +since the updates are expected to propagate automatically.  + +Uncompress (using a ZIP or jar tool) the SOGo Integrator XPI and locate +the following file: + + extensions.rdf + +This file is used for locating the extension update server and the SOGo +server, which we consider to be the same for the moment. There is a line +starting with a "Seq" tag and with an attribute named "isi:updateURL". +Replace the host part of that url with the SOGo server you want to +connect to. + +For example, one would replace: + + + +by: + + + +if the SOGo server is accessible from the following URL: + + https://sogo.acme.com/SOGo + +Note that if you changed the `x-webobjects-server-url` configuration +setting from your HTTP server configuration file for SOGo, the +value *must* match the one you specify in `isi:updateURL` – even the +port number. + +Moreover, you *must* change the value of the +`sogo-integrator.autocomplete.server.urlid` preference from +`defaults/preferences/site.js` to match the identifier of your +_SOGoUserSources_. This source will be used by Thunderbird for +autocompletion. + +Once you're done modifying the configuration file, save your changes and +reconstruct the XPI file.  + +Now start Thunderbird and install your newly modified extension. + +SOGo Update Server +------------------ + +In this section, you will learn how to install and configure the SOGo +Update Server. + +The SOGo Update Server can be used to automatically install or uninstall +Mozilla Thunderbird extensions, push user settings and more – all from a +central place managed by system administrators. + +Installation +~~~~~~~~~~~~ + +Installation is relatively straightforward. You need to make +the `updates.php` script available through your HTTP server at the URL +you've specified from the `extensions.rdf` file. The `updates.php` +script can be found in the SOGo sources, under the `Scripts` directory. + +The `updateLink` section of the XML payload returned to sogo-integrator +is built dynamically using the `SCRIPT_URI` variable, which is only +available when running with mod_rewrite. It should work out of the box +as long as the script is placed in the same directory as the xpi files. + +If it is not the case, then the link should be adjusted to fit the +actual file layout: + + + +An http request similar to the following can be used to make sure that +the generated link is correct: + + http://sogo.host/path/to/updates.php?plugin=sogo-integrator@inverse.ca&version=0.00 + +Please refer to your HTTP server documentation for the installation and +configuration of PHP. + +Configuration +~~~~~~~~~~~~~ + +To configure the SOGo update server, you need to modify the +`updates.php` script directly. + +Adding an extension to be pushed automatically by the update server +require you to modify the `$plugins` array from updates.php and also +adjust accordingly SOGo Integrator's `extensions.rdf` file. + +For example, to automatically install SOGo Connector, SOGo Integrator +and Lightning, you would have: + +---- +$plugins += array( "sogo-connector@inverse.ca" + => array( "application" => "thunderbird", + "version" => "24.0.5", + "filename" => "sogo-connector-24.0.5.xpi" ), + "sogo-integrator@inverse.ca" + => array( "application" => "thunderbird", + "version" => "24.0.5", + "filename" => "sogo-integrator-24.0.5-sogo-demo.xpi" ), + "{e2fda1a4-762b-4020-b5ad-a41df1933103}" + => array( "application" => "thunderbird", + "version" => "2.6.5", + "filename" => "lightning.xpi" )); +---- + +The syntax is: + +---- + "" + => array( "application" => "thunderbird", + "version" => "", + "filename" => "" ) +---- + +The path of the filename, specified in the `filename` parameter, is +relative to the location of the `updates.php` script. For extensions +that are dependant on the architecture and operating system (Microsoft +Windows, Apple Mac OS X, etc.), they can be placed in subdirectories +relative again to the `updates.php` script (but the filename must be +identical in all subdirectories). For exemple, for Mozilla Lightning, we +could have: + +---- +Darwin_x86-gcc3/lightning.xpi +Linux_x86-gcc3/lightning.xpi +Linux_x86_64-gcc3/lightning.xpi +WINNT_x86-msvc/lightning.xpi +---- + +If you eventually want to disable an extension, that is, without +removing it from your users' computers, you can specify `disabled` as +the version number. + +Next is to modify the `extensions.rdf` file. Again, to automatically +install SOGo Connector, SOGo Integrator and Lightning, you would have: + +---- +
  • + +
  • +
  • + +
  • +
  • + +
  • +---- + +Using SOGo Integrator, you can also push user-settings for any part of +Thunderbird or its extensions. There are two kind of user-settings +push: + +* Settings that are pushed during the initial configuration of +Thunderbird +* Settings that are pushed upon every restart (ie., forced) of +Thunderbird + +Settings that pushed are pushed during initial configuration are +controlled by the `./defaults/preferences/site.js` file from SOGo +Integrator. Here is an example: + +---- +pref("calendar.alarms.showmissed", false); +pref("calendar.caldav.sched.enabled", true); +---- + +Preferences that are forced upon every restart of Thunderbird are +controlled from the `./chrome/content/general/custom-preferences.js` +configuration file. + +Here is an example: + +---- +force_int_pref("changequote.replyformat.format", 0); +force_bool_pref("changequote.headers.withcc", true); +force_char_pref(“foo.bar”, “zot”); +---- + +include::includes/additional-info.asciidoc[] + +include::includes/commercial-support.asciidoc[] diff --git a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc new file mode 100644 index 000000000..75eb4eb86 --- /dev/null +++ b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc @@ -0,0 +1,691 @@ +Native Microsoft Outlook Configuration Guide +============================================ + +//// + + This file is part of the SOGo project. + + See SOGo Native Microsoft Outlook Configuration-docinfo.xml for + authors, copyright and license information. + +//// + +include::includes/global-attributes.asciidoc[] + +About this Guide +---------------- + +This guide will walk you through the installation and configuration of +the native Microsoft Outlook compatibility layer SOGo offers. + +Prior going over this guide, you should have a working SOGo +installation. Please refer to the _SOGo Installation and Configuration +Guide_ for more information on installing and configuring SOGo. + +This guide also includes instructions for configuring Microsoft Outlook +with SOGo. + +The instructions are based on version {release_version} of SOGo. + +The latest version of this guide is available +at http://www.sogo.nu/downloads/documentation.html. + +Introduction +------------ + +SOGo is a free and modern scalable groupware server. It offers shared +calendars, address books, and emails through your favourite Web browser +and by using a native client such as Mozilla Thunderbird and Lightning. + +SOGo is standard-compliant. It supports CalDAV, CardDAV, GroupDAV, iMIP +and iTIP and reuses existing IMAP, SMTP and database servers — making +the solution easy to deploy and interoperable with many applications. + +SOGo features: + +* Scalable architecture suitable for deployments from dozen to many +thousand users +* Rich Web-based interface that shares the look and feel, the features +and the data of Mozilla Thunderbird and Lightning +* Improved integration with Mozilla Thunderbird and Lightning by using +the SOGo Connector and the SOGo Integrator +* Native compatibility for Microsoft Outlook 2003, 2007, 2010, and 2013 +* Two-way synchronization support with any Microsoft ActiveSync-capable +device, and Outlook 2013 + +SOGo is developed by a community of developers located mainly in North +America and Europe. More information can be found +on http://www.sogo.nu/. + +Architecture +------------ + +The following diagram demonstrates the architecture of the native +Outlook compatibility layer of SOGo. + +image::images/openchange.png[] + +With Samba 4 and OpenChange, Microsoft Outlook clients can communicate +natively with SOGo using the Microsoft Exchange protocol, without +requiring costly and hard-to-maintain third-party MAPI connectors for +Microsoft Outlook. + +Requirements +------------ + +Organizations generally have solutions to authenticate users such as +LDAP servers or Microsoft Active Directory servers. + +The solution being used will influence how users are provisioned in +Samba 4, a key component for native Outlook compatibility in SOGo. + +LDAP Server +~~~~~~~~~~~ + +If your organization uses a LDAP server such OpenLDAP, Novell +eDirectory, Apache Directory or any other solution, you must use +Samba 4's internal directory server and synchronize the data between +both. + +Synchronization scripts are not provided and unless you have clear-text +passwords of your existing users, they will have to be changed during +your initial synchronization so that your LDAP's server passwords are +identical to the ones from Samba 4. + +Any modifications to your existing LDAP server (password change, user +addition or deletion, etc.) will have to be replicated to Samba 4's +internal directory server. + +Note that if you install Samba 4 on a server that is already running a +LDAP service, you will have to change to TCP port on which your LDAP +server listens to. Samba 4 will use the TCP port 389 and it can't be +changed. + +For example, with OpenLDAP, you can use the `-h` parameter for `slapd` +to make it listen on an other TCP port. + +Microsoft Active Directory +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If your organization uses Microsoft Active Directory, Samba 4 will need +to be joined to your Active Directory domain, as a DC. + +Samba 4 will be able to reuse all the information contained in Microsoft +Active Directory and no synchronization process needs to be put in place +as information will get replicated to Samba 4 automatically. + +For more information on joining Samba 4 to an existing Microsoft Active +Directory domain, please refer to the Samba 4 documentation available at +the following URL: + +http://wiki.samba.org/index.php/Samba4 + +More specifically, have a look at the `samba-tool domain join` command. +Note that joining Samba 4 to your Active Directory domain as a member +will currently not work. An authentication bug is present in Samba 4 +which then prevents all Outlook users to successfully authenticate +through Samba 4. This issue has been reported to the Samba team and is +being worked on. + +Other or No Solution +~~~~~~~~~~~~~~~~~~~~ + +If your organization neither uses a LDAP server or Microsoft Active +Directory, you can start using Samba 4 as your directory server. + +Samba 4's directory can be queried over LDAP just like Microsoft Active +Directory and can also serve as a domain controller for Windows-based +environments. + +For example, SOGo can very well use Samba 4's built-in directory server +to authenticate users. A SOGoUserSources entry to achieve this wold look +like this: + +---- +su – sogo +defaults write sogod SOGoUserSources '( + { + CNFieldName = displayName; + IDFieldName = cn; + UIDFieldName = sAMAccountName; + baseDN = "cn=Users,dc=example,dc=com"; + bindDN = "cn=Administrator,cn=Users,dc=example,dc=com"; + bindFields = ( + sAMAccountName + ); + bindPassword = "%1OpenChange"; + canAuthenticate = YES; + displayName = "Shared Addresses"; + hostname = "127.0.0.1"; + id = samba; + isAddressBook = YES; + port = 389; + } +)' +---- + +Please refer to the _SOGo Installation and Configuration Guide_ for more +information regarding `SOGoUserSources`. + +IMAP Server and Trust +~~~~~~~~~~~~~~~~~~~~~ + +An IMAP server supporting the ACL, UIDPLUS and QRESYNC IMAP extensions +is required, such as Cyrus IMAP version 2.4 or later, or Dovecot version +2.1 or later. If your current IMAP server does not support these +extensions, you can use Dovecot's proxying capabilities. The follow +configuration example makes Dovecot proxy all IMAP request to an +existing server: + +---- +auth_mechanisms = plain login +imapc_host = inverse.ca +imapc_port = 993 +imapc_ssl = imaps +imapc_ssl_verify = no +mail_gid = imapproxy +mail_home = /home/imapproxy/%u +mail_location = imapc:~/imapc +mail_uid = imapproxy +passdb { + args = host=inverse.ca ssl=imaps port=993 ssl_ca_dir=/etc/pki/tls/certs + default_fields = userdb_imapc_user=%u userdb_imapc_password=%w + driver = imap +} +protocols = imap +ssl = no +userdb { + driver = prefetch +} +---- + +SOGo would then be configured to use Dovecot's proxy as the IMAP server. + +Moreover, the authentication mode in use by Windows with Samba and +Exchange servers prevent the backend from knowing the real password +being used by the user. This implies that the IMAP server must accept +any passwords from the host on which Samba is running. + +To accomplish this with Cyrus IMAP Server, set `sasl_pwcheck_method` +to `alwaystrue` in `/etc/imapd.conf`. You should restrain this to +an `imapd` instance dedicated to SOGo. + +For Dovecot, use an authentication source similar to: + +---- +passdb { + driver = static + args = nopassword=y allow_nets=127.0.0.1/32 +} +---- + +You should also make sure that you restrain this only to the SOGo +processes. + +For any other IMAP server, refer to the product's documentation. If such +capability is not offered, you can alternatively define the cleartext +password for each user. Please refer to the _Adding Users_ section from +this document. + +Installation +------------ + +This section will guide you through the installation of the native +Microsoft Outlook compatibility layer SOGo offers. + +Red Hat Enterprise Linux v5 and v6 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using Red Hat Enterprise Linux (or CentOS) version 5 or +version 6, packages for Samba 4, OpenChange and SOGo and the SOGo +OpenChange backend are available from SOGo's web site. Please follow the +instructions from +http://www.sogo.nu/english/downloads/backend_nightly.html. + +In order to satisfy certain dependencies, you should also add the EPEL +source corresponding to your distribution and architecture. More +information on this is available here: +http://fedoraproject.org/wiki/EPEL – or more specifically, +http://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F. + +Once ready, install the OpenChange packages on top of an existing SOGo +installation: + +---- +yum clean all && yum makecache +yum install samba4 \ + openchange \ + sogo-openchange-backend \ + openchange-ocsmanager \ + openchange-rpcproxy +---- + +Once the packages are installed, refer to the _Configuration_ chapter +from this guide. + +Debian 6.0 (Squeeze) and Ubuntu 12.04 (Precise Pangolin) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Samba 4, OpenChange, SOGo and the SOGo OpenChange backend are now +available from SOGo's web site. Please follow the instructions from +http://www.sogo.nu/english/downloads/backend_nightly.html to setup your +apt sources. + +Debian Squeeze ships an older version of some libraries required by +Samba 4. In order to workaround this, users of this distribution will +have to use the _squeeze-backports_ repository. To do so, create +`/etc/apt/sources.list.d/backports.list`: + + deb http://backports.debian.org/debian-backports squeeze-backports main + +Then install the dependencies on Debian Squeeze, do: + +---- +apt-get update +apt-get install -t squeeze-backports libwbclient-dev samba-common smbclient libsmbclient libsmbclient-dev +---- + +Once ready, install the `samba4` package on top of an existing SOGo +installation: + +---- +apt-get update +apt-get install samba4 +---- + +The current post installation script shipped with the Samba 4 package is +far from perfect and might fail even on a fresh install. The following +command is needed to let dpkg know that everything is fine about Samba 4 +if the post install script fails. + + sed --in-place 'N; s/Package: samba4\nStatus: install ok half-configured/Package: samba4\nStatus: install ok installed/;' /var/lib/dpkg/status + +Once completed, install the packages related to OpenChange and the SOGo +provider: + +---- +apt-get install openchangeserver \ + sogo-openchange \ + openchangeproxy \ + openchange-ocsmanager \ + openchange-rpcproxy +---- + +Once the packages are installed, refer to the _Configuration_ chapter +from this guide. + +Configuration +------------- + +In this section, you'll learn how to configure the native Microsoft +Outlook compatibility layer that SOGo offers. + +SOGo Configuration +~~~~~~~~~~~~~~~~~~ + +First thing to do is to configure SOGo to use your current services, +which are your IMAP, SMTP and SQL database servers. The configuration +instructions for this are available in the SOGo Installation and +Configuration Guide available from http://www.sogo.nu/. + +Please refer to that documentation before continuing with the +instructions included in this guide. + +Samba 4 Configuration +~~~~~~~~~~~~~~~~~~~~~ + +Run the following commands as root:  + +---- +samba-tool domain provision --realm=example.com \ + --domain=OPENCHANGE \ + --adminpass='%1OpenChange' \ + --server-role='domain controller' + +samba-tool user setexpiry administrator --noexpiry +---- + +You might consider changing the realm and domain used, to suit your +enviroment. + +You might also have to +remove `/etc/samba4/smb.conf` (or `/etc/samba/smb.conf` on Debian-based +distributions) prior running this command. + +Add the following parameters to the `[global]` section of the +`/etc/samba4/smb.conf` (`/samba/smb.conf` if you use a Debian-based +distribution) configuration file: + +---- +### Configuration required by OpenChange server ### +dcerpc endpoint servers = +epmapper, +mapiproxy +dcerpc_mapiproxy:server = true +dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr +### Configuration required by OpenChange server ### +---- + +Your Samba 4 configuration file should look like this: + +---- +# Global parameters +[global] + server role = active directory domain controller + workgroup = EXAMPLE + realm = example.com + netbios name = sogo + passdb backend = samba4 + ### Configuration required by OpenChange server ### + dcerpc endpoint servers = +epmapper, +mapiproxy + dcerpc_mapiproxy:server = true + dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr + ### Configuration required by OpenChange server ### + +[netlogon] + path = /var/lib/samba/sysvol/example.com/scripts + read only = No + +[sysvol] + path = /var/lib/samba/sysvol + read only = No +---- + +OpenChange Configuration +~~~~~~~~~~~~~~~~~~~~~~~~ + +The Samba AD schema needs to be filled with additional object +definitions by running the following commands:  + +---- +openchange_provision + +NOTE: This operation can take several minutes +[+] Step 1: Register Exchange OIDs +[+] Step 2: Add Exchange attributes to Samba schema +[+] Step 3: Add Exchange auxiliary classes to Samba schema +[+] Step 4: Add Exchange objectCategory to Samba schema +[+] Step 5: Add Exchange containers to Samba schema +[+] Step 6: Add Exchange *sub* containers to Samba schema +[+] Step 7: Add Exchange CfgProtocol subcontainers to Samba schema +[+] Step 8: Add Exchange mailGateway subcontainers to Samba schema +[+] Step 9: Add Exchange classes to Samba schema +[+] Step 10: Add possSuperior attributes to Exchange classes +[+] Step 11: Extend existing Samba classes and attributes +[+] Step 12: Exchange Samba with Exchange configuration objects +[SUCCESS] Done! +---- + +You can safely ignore the "`ERROR: no subClassOf 'serviceAdministrationPoint' for 'rRASAdministrationConnectionPoint'`" message when running the `openchange_provision` command. + +Provision the OpenChange database:  + +---- +openchange_provision --openchangedb + +Setting up openchange db +[+] Public Folders +=================== + * Public Folder Root 0x0100000000000001 + * IPM_SUBTREE 0x0200000000000001 + * NON_IPM_SUBTREE 0x0300000000000001 + * EFORMS REGISTRY 0x0400000000000001 + * OFFLINE ADDRESS BOOK 0x0500000000000001 + * /o=First Organization/cn=addrlists/cn=oabs/cn=Default Offline Address Book 0x0600000000000001 + * SCHEDULE+ FREE BUSY 0x0700000000000001 + * EX:/o=First Organization/ou=Exchange Administrative Group (UBUNTU-OC) 0x0800000000000001 + * Events Root 0x0900000000000001 +---- + +On RHEL, make sure SELinux is disabled: + + setenforce 0 + +Next, you can start Samba using the usual command : + + /etc/init.d/samba4 start + +You can also launch the OpenChange web services: + + /etc/init.d/openchange-ocsmanager start + +Apache Configuration for Web Services +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The OpenChange web services consist of two components: + +1. *OCS Manager* which is used for autodiscovery and freebusy lookups on +Outlook 2007 and 2010. This service runs in its own application server +which listens on `127.0.0.1:5000` by default. Apache needs to be +configured to forward certain requests to it to make it accessible from +the outside. +Note that this service *MUST* be accessible over*HTTPS*, otherwise Outlook +won't use it. +2. *RPC Proxy* which is used for RPC over HTTP ("Outlook Anywhere"). +This service runs as a WSGI application under apache (mod_wsgi). +While HTTPS is not required to access this service, it is strongly +recommended. + +On RHEL-based distributions, the apache configuration required by these +services can be found in `/etc/httpd/conf.d/ocsmanager.conf` and +`/etc/httpd/conf.d/rpcproxy.conf`. + +For Debian-based distributions, these files can be found +in `/etc/apache2/conf.d/`. + +The configuration requires three Apache modules:  _mod_proxy_, +_mod_proxy_http_ and _mod_wsgi_. These are usually already installed but +might need to be activated on Debian-based installations: + + a2enmod proxy proxy_http wsgi + +On RHEL-based distributions, make sure the `LoadModule` directive is +uncommented in `/etc/httpd/conf.d/wsgi.conf` (or +`python26-mod_wsgi.conf` on RHELv5). + +The _reqtimeout_ apache module is known to cause problems when using the +default configuration shipped with Debian-based systems. On such +distributions, apache will close (HTTP/1.1 500) any HTTP request for +which the HTTP body hasn't arrived in 10 seconds. + +While this is arguably good practice with regular HTTP, it will disrupt +the RPC over HTTP protocol implemented by RPC Proxy: Outlook will +continuously disconnect and reconnect leading to suboptimal performance. + +To avoid this problem, use a much higher timeout or disable the module: + + a2dismod reqtimeout + +You should now restart the Apache service and make sure it will start on +boot. On RHEL-based distributions, do: + + chkconfig httpd on && /etc/init.d/httpd restart + +On Debian-based distributions, do: + + update-rc.d apache2 defaults && /etc/init.d/apache2 restart + +Name Service Configuration for Web Services +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The autodiscovery service must be made accessible in order to advertise +the web services provided by OpenChange. This can be done in two ways. + +1. The first is to associate the FQDN `autodiscover.example.com.` with +the machine that hosts Samba 4 / OpenChange, by adding a `CNAME` entry +in your DNS configuration. Note that, instead or changing your DNS +server configuration, you can simply add a similar entry to the _hosts_ +file of the Windows machine from where you'll run Outlook, which is +handy for testing purposes. +2. The second option is to add a `SRV` entry to your DNS configuration +where the `_service` value would be `Autodiscover` and the `_protocol` +would be `_tcp`. + +For example: + + _autodiscover._tcp.example.com. IN SRV 0 0 443 sogo.example.com. + +Again, the autodiscovery service must be accessible over HTTPS. + +Adding Users +------------ + +Users that wish to connect natively to SOGo must be provisioned in +Samba 4 and in OpenChange – even if they already exist in your current +LDAP or Microsoft Active Directory server. + +To add a user, execute the following commands:  + +---- +# add user to samba +samba-tool domain passwordsettings set --complexity=off +samba-tool domain passwordsettings set --min-pwd-length=1 +samba-tool user add +samba-tool user setexpiry --noexpiry +# create user in openchange+ +openchange_newuser --create +---- + +If you don't have a trust between your IMAP server and SOGo, you must at +this point set the cleartext password of the newly created user in +`/var/lib/samba4/private/mapistore/ Mail => Email Accounts. +* Select _Add a new e-mail account_ +* Choose _Microsoft Exchange Server_ +* Fill the required information. Enter the DNS name or the IP address of +your SOGo server in the _Microsoft Exchange Server_ field +* Leave the _Use Cached Exchange Mode_ checkbox enabled +* Enter your username in the _User Name_ field +* Click on _More Settings_ and ignore the warning, if any, about +Exchange being offline by clicking on Cancel +* From the Security tab, enable Always prompt for user name and password +* From the _Connection_ tab, enable _"Outlook Anywhere"_ if you plan to +use Outlook outside of your LAN. Moreover, click on the _Exchange Proxy +Settings..._ button to enable it for slow and fast networks. Specify +also the host, which should be the same value you specified in the +Microsoft Exchange Server field. +* Finally, click on Check Name and confirm your username and password + +Start Microsoft Outlook and enter your username and password. It will +start to synchronize your mailbox. This could take a long time if you +have many emails, events, tasks and contacts. Once this step is +completed, check the autodiscovery service with Outlook 2007 or 2010 by +simultaneously holding the CTRL key on your keyboard and right-clicking +on the Outlook icon in the notification toolbar. A special entry named +"Test E-mail AutoConfiguration..." will appear and will enable you to +check the service. + +Known Issues or Limitations +--------------------------- + +* Make sure you periodically backup all your data regarding SOGo. +* Make sure you have no firewalls activated between your Microsoft +Outlook clients and the SOGo server with Native Outlook Compatibility +module. If you do, use "Outlook Anywhere" to connect Outlook to +SOGo/OpenChange. + +Current Limitations +~~~~~~~~~~~~~~~~~~~ + +The current version of the Native Microsoft Outlook compatibility layer +has some limitations. + +Those limitations will be overcome in the upcoming releases. If you are +interested in having those limitations fixed more rapidly, please +contact Inverse by sending an email to support@inverse.ca. + +General +^^^^^^^ + +* If you can't see any email's content with Microsoft Outlook 2007, +install the latest Service Pack available from Microsoft's website for +this specific version. Microsoft Outlook 2007 (12.0.6423.100) SP2 MSO +(12.0.6425.1000) is known to work. +* When you create a new Microsoft Outlook profile, not all folders might +be synchronized during the first start. Simply select the appropriate +folder and click "Send and Receive". Synchronizing a folder may take +some time. For example, a folder with 1000 email messages might take +around 5 minutes based on the underlying hardware. +* Errors when synchronizing the "Offline Address Book" are normal and +can be ignored for now. This feature is currently not supported. +* If you face strange issues from Microsoft Outlook, you might want to +remove any data associated with the user from the SOGo server and +recreate a Microsoft Outlook profile. +To remove any data associated to a user, use +the `openchange_user_cleanup` script distributed with SOGo. The script +can be found in `/usr/share/doc/sogo/` (`/usr/share/sogo-VERSION/` on +RHEL). +To reset a user, run the script as root: +`python openchange_user_cleanup username`. See the usage output for additional options. +* The "Out of Office Assistant" will not currently work. This feature +has not been implemented. +* Creating folders below INBOX (when not normally permitted by the IMAP +server), below the Personal Calendar or Personal Address Book will work +in Outlook cached mode but the server-side operation will fail and these +folders will never be created. Potentially data loss can occur if the +Outlook profile is destroyed. If you wan to create additional top-level +mail folders, calendars or address books, open Outlook's folder list, +select the top level node (usually, "email@example.com") and choose "New +Folder..." from the contextual menu. Choose the relevant item types. + +Mail +^^^^ + +* Sharing mail folders is not supported. +* To avoid possibly lossy conversion from RTF to HTML, Outlook should be +configured to send all mails as HTML (or plaintext) instead of _Outlook +Rich Text Format_. + +Calendar +^^^^^^^^ + +* Labels will not work. +* It might be impossible to view event details from a shared calendar. +This issue is being worked on. + +Tasks +^^^^^ + +* Tasks with start/due dates created from Outlook might not appear +correctly in SOGo due to a timezone issue. +* Reminders are not yet supported. +* Assigning tasks will not work. + +Contacts +^^^^^^^^ + +* Categories will not work. +* Distribution lists will not work. +* Under Microsoft Outlook 2010, the special folder "Suggested Contacts" +will not work. +* The "Offline Address Book" will not work. This feature is not yet +supported. + +Notes +^^^^^ + +* Notes are not synchronized in any ways with SOGo. The current version +of SOGo lacks support for notes. + +If you notice anything else, please send contact Inverse by sending an +email to support@inverse.ca. + +include::includes/additional-info.asciidoc[] + +include::includes/commercial-support.asciidoc[] diff --git a/Documentation/docbook/fop-centos6.patch b/Documentation/docbook/fop-centos6.patch new file mode 100644 index 000000000..630628898 --- /dev/null +++ b/Documentation/docbook/fop-centos6.patch @@ -0,0 +1,16 @@ +# +# fop fix to build our documentation on CentOS 6 +# +# Inverse inc. +# +--- /usr/bin/fop.orig 2012-01-17 21:25:50.000000000 -0500 ++++ /usr/bin/fop 2012-01-17 21:26:04.000000000 -0500 +@@ -26,7 +26,7 @@ + # Set parameters + set_jvm + set_classpath commons-io batik-all avalon-framework xmlgraphics-commons \ +- commons-logging fop ++ commons-logging fop xalan-j2 + set_flags $BASE_FLAGS + set_options $BASE_OPTIONS + diff --git a/Documentation/docbook/xmlgraphics-fop-centos5.patch b/Documentation/docbook/xmlgraphics-fop-centos5.patch new file mode 100644 index 000000000..932c494cf --- /dev/null +++ b/Documentation/docbook/xmlgraphics-fop-centos5.patch @@ -0,0 +1,17 @@ +# +# xmlgraphics-fop fix to build our documentation on CentOS 5 +# taken from https://build.opensuse.org/request/show/68994 +# +# Inverse inc. +# +--- /usr/bin/xmlgraphics-fop.orig 2012-01-17 18:42:08.000000000 -0500 ++++ /usr/bin/xmlgraphics-fop 2012-01-17 18:42:18.000000000 -0500 +@@ -24,7 +24,7 @@ + + # Rest of the configuration + MAIN_CLASS=org.apache.fop.cli.Main +-BASE_JARS="xmlgraphics-fop xmlgraphics-batik/util xml-commons-jaxp-1.3-apis excalibur/avalon-framework-api xerces-j2 xalan-j2 xalan-j2-serializer" ++BASE_JARS="xmlgraphics-fop batik-all xml-commons-jaxp-1.3-apis excalibur/avalon-framework-impl excalibur/avalon-framework-api xerces-j2 xalan-j2 xalan-j2-serializer" + + # Set parameters + set_jvm diff --git a/Documentation/docbook/xsl/headerfooter-fo.xsl b/Documentation/docbook/xsl/headerfooter-fo.xsl new file mode 100644 index 000000000..3e5fb6d41 --- /dev/null +++ b/Documentation/docbook/xsl/headerfooter-fo.xsl @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documentation/docbook/xsl/sogo-fo-article.xsl b/Documentation/docbook/xsl/sogo-fo-article.xsl new file mode 100644 index 000000000..33e3e806e --- /dev/null +++ b/Documentation/docbook/xsl/sogo-fo-article.xsl @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sorts Mill Goudy + + + 0.5em + solid 2px + 1em + + + solid 1px + 1em + 1em + + + 1em + 1em + + + 1em + + + 1em + + + + + 1.5em + 1.5em + 2.2em + + + + Delicious + 10 + Incosolata + + + + 12pt + bold + center + + + page + + + 1px solid + + + + + + + + + + + + + 0em + 0em + 0.2em + + + + + + + + + + + + + square + + + + + + images/ + .png + + 1px solid + 1px solid + 0.5em + 0.5em + 2em + + + + + + + #E0E0E0 + solid + 0pt + 0.5em + + always + + + + + wrap + + + + + + + + blue + underline + + + + + + + + + + diff --git a/Documentation/docbook/xsl/sogo-fo.xsl b/Documentation/docbook/xsl/sogo-fo.xsl new file mode 100644 index 000000000..53309e07f --- /dev/null +++ b/Documentation/docbook/xsl/sogo-fo.xsl @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sorts Mill Goudy + + + 2.5em + solid 2px + 1em + + + solid 1px + 2em + 1em + + + + + 1em + + + + Delicious + 10 + Incosolata + + + + 12pt + bold + center + + + page + + + 1px solid + + + + + + + + + + + + + + + + + + + + + + square + + + + + + images/ + .png + + 1px solid + 1px solid + 0.5em + 0.5em + 2em + + + + + + + #E0E0E0 + solid + 0pt + 0.5em + + always + + + + + wrap + + + + + + + + blue + underline + + + + + + + + + + diff --git a/Documentation/docbook/xsl/titlepage-fo.xml b/Documentation/docbook/xsl/titlepage-fo.xml new file mode 100644 index 000000000..8fc51f01b --- /dev/null +++ b/Documentation/docbook/xsl/titlepage-fo.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + <subtitle + text-align="right" + font-size="&hsize4;" + space-before="&hsize4space;" + font-family="{$title.fontset}" + border-bottom="solid"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + <title + font-size="&hsize2;" + font-weight="bold" + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup t:named-template="verso.authorgroup"/> + <author/> + <othercredit/> + <releaseinfo space-before="0.5em"/> + <pubdate space-before="1em"/> + <copyright/> + <abstract/> + <legalnotice font-size="8pt"/> + </t:titlepage-content> + + <t:titlepage-separator> + <fo:block break-after="page"/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + <fo:block break-after="page"/> + </t:titlepage-before> +</t:titlepage> + +</t:templates> diff --git a/Documentation/docbook/xsl/titlepage-fo.xsl b/Documentation/docbook/xsl/titlepage-fo.xsl new file mode 100644 index 000000000..aa120ecf6 --- /dev/null +++ b/Documentation/docbook/xsl/titlepage-fo.xsl @@ -0,0 +1,208 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="book.titlepage.recto"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bookinfo/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="book.titlepage.verso"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="right" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}" margin-top="8em"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::book[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="right" font-size="20.736pt" space-before="15.552pt" font-family="{$title.fontset}" border-bottom="solid"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="14.4pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:call-template name="verso.authorgroup"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +</xsl:stylesheet> + diff --git a/Documentation/docinfo.xml b/Documentation/docinfo.xml new file mode 100644 index 000000000..b351a2f74 --- /dev/null +++ b/Documentation/docinfo.xml @@ -0,0 +1,24 @@ +<!-- TODO have the build system take care of this --> +<releaseinfo>Version 2.2.8 - September 2014</releaseinfo> +<subtitle>for version 2.2.8</subtitle> +<date>2014-09-14</date> + +<legalnotice> + <para>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".</para> + + <!-- font licenses --> + <para>The fonts used in this guide are licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: <ulink url="http://scripts.sil.org/OFL">http://scripts.sil.org/OFL</ulink></para> + <para>Copyright © Barry Schwartz, <ulink url="http://www.crudfactory.com">http://www.crudfactory.com</ulink>, with Reserved Font Name: "Sorts Mill Goudy".</para> + <para>Copyright © Raph Levien, <ulink url="http://levien.com/">http://levien.com/</ulink>, with Reserved Font Name: "Inconsolata".</para> +</legalnotice> +<mediaobject> + <objectinfo> + <corpname>Inverse inc.</corpname> + </objectinfo> + <textobject> + <phrase>SOGo logo</phrase> + </textobject> + <imageobject> + <imagedata align="left" width="4in" format="PNG" fileref="images/sogo-logo.png" /> + </imageobject> +</mediaobject> diff --git a/Documentation/fonts/PALATINO.TTF b/Documentation/fonts/PALATINO.TTF new file mode 100644 index 000000000..2ae6c635d Binary files /dev/null and b/Documentation/fonts/PALATINO.TTF differ diff --git a/Documentation/fonts/deliciousitalic.ttf b/Documentation/fonts/deliciousitalic.ttf new file mode 100644 index 000000000..13916d0a7 Binary files /dev/null and b/Documentation/fonts/deliciousitalic.ttf differ diff --git a/Documentation/fonts/deliciousitalic.xml b/Documentation/fonts/deliciousitalic.xml new file mode 100644 index 000000000..479e89a75 --- /dev/null +++ b/Documentation/fonts/deliciousitalic.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>Delicious-Italic</font-name><full-name>Delicious-Italic</full-name><family-name>Delicious</family-name><embed/><cap-height>630</cap-height><x-height>498</x-height><ascender>706</ascender><descender>-175</descender><bbox><left>-142</left><bottom>-236</bottom><right>958</right><top>890</top></bbox><flags>97</flags><stemv>0</stemv><italicangle>-11</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="98" ue="165" us="160"/><bf gi="104" ue="172" us="167"/><bf gi="110" ue="177" us="174"/><bf gi="114" ue="184" us="180"/><bf gi="119" ue="187" us="186"/><bf gi="121" ue="207" us="191"/><bf gi="138" ue="214" us="209"/><bf gi="144" ue="220" us="216"/><bf gi="149" ue="239" us="223"/><bf gi="166" ue="252" us="241"/><bf gi="178" ue="255" us="255"/><bf gi="179" ue="305" us="305"/><bf gi="180" ue="339" us="338"/><bf gi="182" ue="376" us="376"/><bf gi="183" ue="402" us="402"/><bf gi="184" ue="711" us="710"/><bf gi="186" ue="733" us="728"/><bf gi="192" ue="916" us="916"/><bf gi="193" ue="937" us="937"/><bf gi="194" ue="960" us="960"/><bf gi="195" ue="8212" us="8211"/><bf gi="197" ue="8218" us="8216"/><bf gi="200" ue="8222" us="8220"/><bf gi="203" ue="8226" us="8224"/><bf gi="206" ue="8230" us="8230"/><bf gi="207" ue="8240" us="8240"/><bf gi="208" ue="8250" us="8249"/><bf gi="210" ue="8260" us="8260"/><bf gi="211" ue="8482" us="8482"/><bf gi="212" ue="8706" us="8706"/><bf gi="213" ue="8719" us="8719"/><bf gi="214" ue="8721" us="8721"/><bf gi="215" ue="8730" us="8730"/><bf gi="216" ue="8734" us="8734"/><bf gi="217" ue="8747" us="8747"/><bf gi="218" ue="8776" us="8776"/><bf gi="219" ue="8800" us="8800"/><bf gi="220" ue="8805" us="8804"/><bf gi="222" ue="9674" us="9674"/><bf gi="223" ue="63743" us="63743"/><bf gi="224" ue="64258" us="64257"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="1000"/><wx w="0"/><wx w="333"/><wx w="300"/><wx w="252"/><wx w="286"/><wx w="556"/><wx w="430"/><wx w="699"/><wx w="879"/><wx w="148"/><wx w="350"/><wx w="340"/><wx w="395"/><wx w="471"/><wx w="258"/><wx w="302"/><wx w="258"/><wx w="369"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="258"/><wx w="258"/><wx w="300"/><wx w="480"/><wx w="300"/><wx w="398"/><wx w="792"/><wx w="514"/><wx w="497"/><wx w="492"/><wx w="551"/><wx w="446"/><wx w="414"/><wx w="519"/><wx w="548"/><wx w="238"/><wx w="238"/><wx w="455"/><wx w="373"/><wx w="742"/><wx w="554"/><wx w="547"/><wx w="485"/><wx w="523"/><wx w="498"/><wx w="430"/><wx w="391"/><wx w="544"/><wx w="485"/><wx w="742"/><wx w="495"/><wx w="431"/><wx w="444"/><wx w="288"/><wx w="335"/><wx w="291"/><wx w="624"/><wx w="450"/><wx w="253"/><wx w="490"/><wx w="507"/><wx w="415"/><wx w="500"/><wx w="437"/><wx w="269"/><wx w="443"/><wx w="509"/><wx w="234"/><wx w="234"/><wx w="480"/><wx w="242"/><wx w="770"/><wx w="519"/><wx w="489"/><wx w="536"/><wx w="518"/><wx w="348"/><wx w="412"/><wx w="337"/><wx w="507"/><wx w="423"/><wx w="663"/><wx w="422"/><wx w="431"/><wx w="412"/><wx w="353"/><wx w="222"/><wx w="308"/><wx w="558"/><wx w="225"/><wx w="252"/><wx w="424"/><wx w="442"/><wx w="542"/><wx w="431"/><wx w="420"/><wx w="312"/><wx w="879"/><wx w="364"/><wx w="474"/><wx w="535"/><wx w="879"/><wx w="309"/><wx w="313"/><wx w="447"/><wx w="280"/><wx w="519"/><wx w="553"/><wx w="273"/><wx w="335"/><wx w="386"/><wx w="512"/><wx w="405"/><wx w="514"/><wx w="514"/><wx w="514"/><wx w="514"/><wx w="514"/><wx w="514"/><wx w="721"/><wx w="492"/><wx w="446"/><wx w="446"/><wx w="446"/><wx w="446"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="554"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="544"/><wx w="544"/><wx w="544"/><wx w="544"/><wx w="548"/><wx w="490"/><wx w="490"/><wx w="490"/><wx w="490"/><wx w="490"/><wx w="490"/><wx w="665"/><wx w="415"/><wx w="437"/><wx w="437"/><wx w="437"/><wx w="437"/><wx w="234"/><wx w="234"/><wx w="234"/><wx w="234"/><wx w="519"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="507"/><wx w="507"/><wx w="507"/><wx w="507"/><wx w="431"/><wx w="213"/><wx w="626"/><wx w="726"/><wx w="431"/><wx w="384"/><wx w="360"/><wx w="376"/><wx w="363"/><wx w="151"/><wx w="362"/><wx w="323"/><wx w="373"/><wx w="461"/><wx w="669"/><wx w="372"/><wx w="424"/><wx w="358"/><wx w="608"/><wx w="273"/><wx w="298"/><wx w="258"/><wx w="461"/><wx w="460"/><wx w="457"/><wx w="409"/><wx w="411"/><wx w="424"/><wx w="588"/><wx w="1005"/><wx w="288"/><wx w="326"/><wx w="489"/><wx w="773"/><wx w="70"/><wx w="424"/><wx w="474"/><wx w="225"/><wx w="602"/><wx w="330"/><wx w="669"/><wx w="454"/><wx w="225"/><wx w="225"/><wx w="476"/><wx w="975"/><wx w="516"/><wx w="516"/></cid-widths></multibyte-extras></font-metrics> \ No newline at end of file diff --git a/Documentation/fonts/deliciousroman.ttf b/Documentation/fonts/deliciousroman.ttf new file mode 100644 index 000000000..c0ca129fe Binary files /dev/null and b/Documentation/fonts/deliciousroman.ttf differ diff --git a/Documentation/fonts/deliciousroman.xml b/Documentation/fonts/deliciousroman.xml new file mode 100644 index 000000000..1b6a97aef --- /dev/null +++ b/Documentation/fonts/deliciousroman.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>Delicious-Roman</font-name><full-name>Delicious-Roman</full-name><family-name>Delicious</family-name><embed/><cap-height>630</cap-height><x-height>490</x-height><ascender>694</ascender><descender>-176</descender><bbox><left>-73</left><bottom>-210</bottom><right>958</right><top>890</top></bbox><flags>33</flags><stemv>0</stemv><italicangle>0</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="98" ue="165" us="160"/><bf gi="104" ue="172" us="167"/><bf gi="110" ue="177" us="174"/><bf gi="114" ue="184" us="180"/><bf gi="119" ue="187" us="186"/><bf gi="121" ue="207" us="191"/><bf gi="138" ue="214" us="209"/><bf gi="144" ue="220" us="216"/><bf gi="149" ue="239" us="223"/><bf gi="166" ue="252" us="241"/><bf gi="178" ue="255" us="255"/><bf gi="179" ue="305" us="305"/><bf gi="180" ue="339" us="338"/><bf gi="182" ue="376" us="376"/><bf gi="183" ue="402" us="402"/><bf gi="184" ue="711" us="710"/><bf gi="186" ue="733" us="728"/><bf gi="192" ue="916" us="916"/><bf gi="193" ue="937" us="937"/><bf gi="194" ue="960" us="960"/><bf gi="195" ue="8212" us="8211"/><bf gi="197" ue="8218" us="8216"/><bf gi="200" ue="8222" us="8220"/><bf gi="203" ue="8226" us="8224"/><bf gi="206" ue="8230" us="8230"/><bf gi="207" ue="8240" us="8240"/><bf gi="208" ue="8250" us="8249"/><bf gi="210" ue="8260" us="8260"/><bf gi="211" ue="8482" us="8482"/><bf gi="212" ue="8706" us="8706"/><bf gi="213" ue="8719" us="8719"/><bf gi="214" ue="8721" us="8721"/><bf gi="215" ue="8730" us="8730"/><bf gi="216" ue="8734" us="8734"/><bf gi="217" ue="8747" us="8747"/><bf gi="218" ue="8776" us="8776"/><bf gi="219" ue="8800" us="8800"/><bf gi="220" ue="8805" us="8804"/><bf gi="222" ue="9674" us="9674"/><bf gi="223" ue="64258" us="64257"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="1000"/><wx w="0"/><wx w="333"/><wx w="300"/><wx w="264"/><wx w="346"/><wx w="556"/><wx w="445"/><wx w="699"/><wx w="630"/><wx w="208"/><wx w="336"/><wx w="339"/><wx w="424"/><wx w="471"/><wx w="258"/><wx w="302"/><wx w="258"/><wx w="356"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="450"/><wx w="258"/><wx w="258"/><wx w="300"/><wx w="480"/><wx w="300"/><wx w="358"/><wx w="792"/><wx w="510"/><wx w="502"/><wx w="497"/><wx w="547"/><wx w="454"/><wx w="412"/><wx w="524"/><wx w="548"/><wx w="238"/><wx w="245"/><wx w="485"/><wx w="382"/><wx w="742"/><wx w="554"/><wx w="548"/><wx w="489"/><wx w="548"/><wx w="505"/><wx w="434"/><wx w="405"/><wx w="558"/><wx w="510"/><wx w="708"/><wx w="492"/><wx w="471"/><wx w="458"/><wx w="248"/><wx w="335"/><wx w="249"/><wx w="624"/><wx w="450"/><wx w="338"/><wx w="466"/><wx w="503"/><wx w="412"/><wx w="512"/><wx w="471"/><wx w="286"/><wx w="455"/><wx w="519"/><wx w="238"/><wx w="238"/><wx w="471"/><wx w="236"/><wx w="771"/><wx w="519"/><wx w="488"/><wx w="516"/><wx w="516"/><wx w="319"/><wx w="420"/><wx w="306"/><wx w="519"/><wx w="452"/><wx w="670"/><wx w="424"/><wx w="454"/><wx w="426"/><wx w="333"/><wx w="222"/><wx w="333"/><wx w="666"/><wx w="225"/><wx w="264"/><wx w="412"/><wx w="442"/><wx w="542"/><wx w="476"/><wx w="420"/><wx w="384"/><wx w="879"/><wx w="420"/><wx w="500"/><wx w="535"/><wx w="879"/><wx w="335"/><wx w="352"/><wx w="447"/><wx w="338"/><wx w="519"/><wx w="543"/><wx w="258"/><wx w="402"/><wx w="412"/><wx w="500"/><wx w="358"/><wx w="510"/><wx w="510"/><wx w="510"/><wx w="510"/><wx w="510"/><wx w="510"/><wx w="726"/><wx w="497"/><wx w="454"/><wx w="454"/><wx w="454"/><wx w="454"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="554"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="558"/><wx w="558"/><wx w="558"/><wx w="550"/><wx w="572"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="725"/><wx w="412"/><wx w="471"/><wx w="471"/><wx w="471"/><wx w="471"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="238"/><wx w="519"/><wx w="488"/><wx w="488"/><wx w="488"/><wx w="488"/><wx w="488"/><wx w="489"/><wx w="488"/><wx w="517"/><wx w="517"/><wx w="517"/><wx w="517"/><wx w="454"/><wx w="238"/><wx w="638"/><wx w="761"/><wx w="471"/><wx w="384"/><wx w="402"/><wx w="402"/><wx w="402"/><wx w="186"/><wx w="520"/><wx w="276"/><wx w="380"/><wx w="585"/><wx w="669"/><wx w="368"/><wx w="424"/><wx w="358"/><wx w="608"/><wx w="267"/><wx w="270"/><wx w="258"/><wx w="446"/><wx w="446"/><wx w="434"/><wx w="418"/><wx w="418"/><wx w="424"/><wx w="604"/><wx w="1005"/><wx w="300"/><wx w="300"/><wx w="339"/><wx w="802"/><wx w="12"/><wx w="424"/><wx w="474"/><wx w="225"/><wx w="619"/><wx w="330"/><wx w="669"/><wx w="480"/><wx w="225"/><wx w="225"/><wx w="476"/><wx w="522"/><wx w="522"/></cid-widths></multibyte-extras></font-metrics> \ No newline at end of file diff --git a/Documentation/fonts/fop-config.xml b/Documentation/fonts/fop-config.xml new file mode 100644 index 000000000..511849d9e --- /dev/null +++ b/Documentation/fonts/fop-config.xml @@ -0,0 +1,23 @@ +<fop version="1.0"> + <renderers> + <renderer mime="application/pdf"> + <fonts> + <font metrics-url="fonts/inconsolata.xml" kerning="yes" embed-url="fonts/inconsolata.ttf"> + <font-triplet name="Incosolata" style="normal" weight="normal"/> + </font> + <font metrics-url="fonts/oflgoudystm.xml" kerning="yes" embed-url="fonts/oflgoudystm.ttf"> + <font-triplet name="Sorts Mill Goudy" style="normal" weight="normal"/> + </font> + <font metrics-url="fonts/oflgoudystmitalic.xml" kerning="yes" embed-url="fonts/oflgoudystmitalic.ttf"> + <font-triplet name="Sorts Mill Goudy" style="italic" weight="normal"/> + </font> + <font metrics-url="fonts/deliciousroman.xml" kerning="yes" embed-url="fonts/deliciousroman.ttf"> + <font-triplet name="Delicious" style="normal" weight="normal"/> + </font> + <font metrics-url="fonts/deliciousitalic.xml" kerning="yes" embed-url="fonts/deliciousitalic.ttf"> + <font-triplet name="Delicious" style="italic" weight="normal"/> + </font> + </fonts> + </renderer> + </renderers> +</fop> diff --git a/Documentation/fonts/inconsolata.ttf b/Documentation/fonts/inconsolata.ttf new file mode 100644 index 000000000..5dc52a3d9 Binary files /dev/null and b/Documentation/fonts/inconsolata.ttf differ diff --git a/Documentation/fonts/inconsolata.xml b/Documentation/fonts/inconsolata.xml new file mode 100644 index 000000000..20eb2d898 --- /dev/null +++ b/Documentation/fonts/inconsolata.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>Inconsolata</font-name><full-name>Inconsolata</full-name><family-name>Inconsolata</family-name><embed/><cap-height>624</cap-height><x-height>458</x-height><ascender>820</ascender><descender>-180</descender><bbox><left>-1</left><bottom>-177</bottom><right>510</right><top>835</top></bbox><flags>33</flags><stemv>0</stemv><italicangle>0</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="98" ue="255" us="160"/><bf gi="194" ue="263" us="258"/><bf gi="200" ue="273" us="268"/><bf gi="206" ue="283" us="280"/><bf gi="210" ue="287" us="286"/><bf gi="212" ue="305" us="304"/><bf gi="214" ue="314" us="312"/><bf gi="217" ue="318" us="317"/><bf gi="219" ue="324" us="321"/><bf gi="223" ue="328" us="327"/><bf gi="225" ue="331" us="330"/><bf gi="227" ue="333" us="333"/><bf gi="228" ue="341" us="336"/><bf gi="234" ue="347" us="344"/><bf gi="238" ue="357" us="350"/><bf gi="246" ue="369" us="366"/><bf gi="250" ue="382" us="376"/><bf gi="257" ue="402" us="402"/><bf gi="258" ue="567" us="567"/><bf gi="259" ue="711" us="710"/><bf gi="261" ue="713" us="713"/><bf gi="262" ue="715" us="715"/><bf gi="263" ue="733" us="728"/><bf gi="269" ue="8218" us="8216"/><bf gi="272" ue="8222" us="8220"/><bf gi="275" ue="8226" us="8224"/><bf gi="278" ue="8230" us="8230"/><bf gi="279" ue="8250" us="8249"/><bf gi="281" ue="8260" us="8260"/><bf gi="282" ue="8308" us="8308"/><bf gi="283" ue="8364" us="8364"/><bf gi="284" ue="8482" us="8482"/><bf gi="285" ue="8593" us="8593"/><bf gi="286" ue="8595" us="8595"/><bf gi="287" ue="8722" us="8722"/><bf gi="288" ue="9251" us="9251"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="500"/><wx w="0"/><wx w="333"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="491"/><wx w="483"/><wx w="474"/><wx w="466"/><wx w="457"/><wx w="448"/><wx w="440"/><wx w="431"/><wx w="422"/><wx w="414"/><wx w="405"/><wx w="396"/><wx w="388"/><wx w="379"/><wx w="371"/><wx w="362"/><wx w="353"/><wx w="345"/><wx w="336"/><wx w="327"/><wx w="319"/><wx w="310"/><wx w="302"/><wx w="293"/><wx w="284"/><wx w="276"/><wx w="267"/><wx w="258"/><wx w="250"/><wx w="241"/><wx w="233"/><wx w="224"/><wx w="215"/><wx w="207"/><wx w="198"/><wx w="189"/><wx w="181"/><wx w="172"/><wx w="163"/><wx w="155"/><wx w="146"/><wx w="138"/><wx w="129"/><wx w="120"/><wx w="112"/><wx w="103"/><wx w="94"/><wx w="86"/><wx w="77"/><wx w="69"/><wx w="60"/><wx w="51"/><wx w="43"/><wx w="34"/><wx w="25"/><wx w="17"/><wx w="8"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="0"/><wx w="500"/><wx w="500"/><wx w="500"/></cid-widths></multibyte-extras></font-metrics> \ No newline at end of file diff --git a/Documentation/fonts/oflgoudystm.ttf b/Documentation/fonts/oflgoudystm.ttf new file mode 100644 index 000000000..644b84459 Binary files /dev/null and b/Documentation/fonts/oflgoudystm.ttf differ diff --git a/Documentation/fonts/oflgoudystm.xml b/Documentation/fonts/oflgoudystm.xml new file mode 100644 index 000000000..a346caee3 --- /dev/null +++ b/Documentation/fonts/oflgoudystm.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>OFLGoudyStM</font-name><full-name>OFL Sorts Mill Goudy</full-name><family-name>OFL Sorts Mill Goudy</family-name><embed/><cap-height>710</cap-height><x-height>425</x-height><ascender>777</ascender><descender>-223</descender><bbox><left>-367</left><bottom>-438</bottom><right>1106</right><top>960</top></bbox><flags>33</flags><stemv>0</stemv><italicangle>0</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="98" ue="311" us="160"/><bf gi="250" ue="329" us="313"/><bf gi="267" ue="383" us="332"/><bf gi="319" ue="402" us="402"/><bf gi="320" ue="539" us="536"/><bf gi="324" ue="567" us="567"/><bf gi="325" ue="700" us="699"/><bf gi="327" ue="704" us="704"/><bf gi="328" ue="712" us="710"/><bf gi="331" ue="730" us="728"/><bf gi="334" ue="733" us="732"/><bf gi="336" ue="772" us="768"/><bf gi="341" ue="776" us="774"/><bf gi="344" ue="780" us="778"/><bf gi="347" ue="786" us="786"/><bf gi="348" ue="789" us="789"/><bf gi="349" ue="807" us="806"/><bf gi="351" ue="8213" us="8192"/><bf gi="373" ue="8226" us="8216"/><bf gi="384" ue="8230" us="8230"/><bf gi="385" ue="8239" us="8239"/><bf gi="386" ue="8250" us="8249"/><bf gi="388" ue="8254" us="8254"/><bf gi="389" ue="8260" us="8260"/><bf gi="390" ue="8288" us="8287"/><bf gi="392" ue="8364" us="8364"/><bf gi="393" ue="8722" us="8722"/><bf gi="394" ue="65279" us="65279"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="396"/><wx w="0"/><wx w="333"/><wx w="213"/><wx w="276"/><wx w="459"/><wx w="533"/><wx w="533"/><wx w="771"/><wx w="947"/><wx w="264"/><wx w="326"/><wx w="326"/><wx w="431"/><wx w="527"/><wx w="250"/><wx w="340"/><wx w="252"/><wx w="416"/><wx w="529"/><wx w="340"/><wx w="468"/><wx w="404"/><wx w="504"/><wx w="342"/><wx w="497"/><wx w="501"/><wx w="500"/><wx w="486"/><wx w="260"/><wx w="262"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="350"/><wx w="821"/><wx w="812"/><wx w="630"/><wx w="807"/><wx w="792"/><wx w="604"/><wx w="554"/><wx w="818"/><wx w="791"/><wx w="328"/><wx w="290"/><wx w="724"/><wx w="603"/><wx w="919"/><wx w="798"/><wx w="853"/><wx w="564"/><wx w="839"/><wx w="718"/><wx w="596"/><wx w="703"/><wx w="815"/><wx w="807"/><wx w="1110"/><wx w="751"/><wx w="712"/><wx w="563"/><wx w="287"/><wx w="416"/><wx w="287"/><wx w="333"/><wx w="213"/><wx w="439"/><wx w="461"/><wx w="547"/><wx w="452"/><wx w="565"/><wx w="466"/><wx w="345"/><wx w="488"/><wx w="587"/><wx w="284"/><wx w="281"/><wx w="545"/><wx w="279"/><wx w="827"/><wx w="591"/><wx w="547"/><wx w="555"/><wx w="559"/><wx w="375"/><wx w="393"/><wx w="342"/><wx w="576"/><wx w="523"/><wx w="748"/><wx w="548"/><wx w="498"/><wx w="378"/><wx w="273"/><wx w="209"/><wx w="273"/><wx w="380"/><wx w="213"/><wx w="276"/><wx w="452"/><wx w="557"/><wx w="527"/><wx w="712"/><wx w="208"/><wx w="542"/><wx w="439"/><wx w="796"/><wx w="302"/><wx w="360"/><wx w="527"/><wx w="340"/><wx w="478"/><wx w="439"/><wx w="259"/><wx w="527"/><wx w="337"/><wx w="337"/><wx w="439"/><wx w="536"/><wx w="505"/><wx w="252"/><wx w="439"/><wx w="337"/><wx w="363"/><wx w="360"/><wx w="913"/><wx w="913"/><wx w="913"/><wx w="350"/><wx w="812"/><wx w="812"/><wx w="812"/><wx w="812"/><wx w="812"/><wx w="812"/><wx w="993"/><wx w="807"/><wx w="604"/><wx w="604"/><wx w="604"/><wx w="604"/><wx w="328"/><wx w="328"/><wx w="328"/><wx w="328"/><wx w="792"/><wx w="798"/><wx w="853"/><wx w="853"/><wx w="853"/><wx w="853"/><wx w="853"/><wx w="527"/><wx w="853"/><wx w="815"/><wx w="815"/><wx w="815"/><wx w="815"/><wx w="712"/><wx w="568"/><wx w="527"/><wx w="461"/><wx w="461"/><wx w="461"/><wx w="461"/><wx w="461"/><wx w="461"/><wx w="723"/><wx w="452"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="466"/><wx w="284"/><wx w="284"/><wx w="284"/><wx w="284"/><wx w="547"/><wx w="591"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="527"/><wx w="547"/><wx w="576"/><wx w="576"/><wx w="576"/><wx w="576"/><wx w="498"/><wx w="544"/><wx w="498"/><wx w="812"/><wx w="461"/><wx w="812"/><wx w="461"/><wx w="812"/><wx w="461"/><wx w="807"/><wx w="452"/><wx w="807"/><wx w="452"/><wx w="807"/><wx w="452"/><wx w="807"/><wx w="452"/><wx w="792"/><wx w="565"/><wx w="792"/><wx w="565"/><wx w="604"/><wx w="466"/><wx w="604"/><wx w="466"/><wx w="604"/><wx w="466"/><wx w="604"/><wx w="466"/><wx w="604"/><wx w="466"/><wx w="818"/><wx w="488"/><wx w="818"/><wx w="488"/><wx w="818"/><wx w="488"/><wx w="818"/><wx w="488"/><wx w="791"/><wx w="587"/><wx w="791"/><wx w="587"/><wx w="328"/><wx w="284"/><wx w="328"/><wx w="284"/><wx w="328"/><wx w="284"/><wx w="328"/><wx w="284"/><wx w="328"/><wx w="284"/><wx w="618"/><wx w="560"/><wx w="290"/><wx w="281"/><wx w="724"/><wx w="545"/><wx w="603"/><wx w="279"/><wx w="603"/><wx w="279"/><wx w="603"/><wx w="279"/><wx w="603"/><wx w="507"/><wx w="603"/><wx w="279"/><wx w="798"/><wx w="591"/><wx w="798"/><wx w="591"/><wx w="798"/><wx w="591"/><wx w="825"/><wx w="853"/><wx w="547"/><wx w="853"/><wx w="547"/><wx w="853"/><wx w="547"/><wx w="1042"/><wx w="859"/><wx w="718"/><wx w="375"/><wx w="718"/><wx w="375"/><wx w="718"/><wx w="375"/><wx w="596"/><wx w="393"/><wx w="596"/><wx w="393"/><wx w="596"/><wx w="393"/><wx w="596"/><wx w="393"/><wx w="703"/><wx w="342"/><wx w="703"/><wx w="342"/><wx w="703"/><wx w="342"/><wx w="815"/><wx w="576"/><wx w="815"/><wx w="576"/><wx w="815"/><wx w="576"/><wx w="815"/><wx w="576"/><wx w="815"/><wx w="576"/><wx w="815"/><wx w="576"/><wx w="1110"/><wx w="748"/><wx w="712"/><wx w="498"/><wx w="712"/><wx w="563"/><wx w="378"/><wx w="563"/><wx w="378"/><wx w="563"/><wx w="378"/><wx w="239"/><wx w="317"/><wx w="596"/><wx w="393"/><wx w="703"/><wx w="342"/><wx w="281"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="500"/><wx w="1000"/><wx w="500"/><wx w="1000"/><wx w="333"/><wx w="250"/><wx w="166"/><wx w="527"/><wx w="252"/><wx w="166"/><wx w="100"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="340"/><wx w="340"/><wx w="527"/><wx w="500"/><wx w="1000"/><wx w="1000"/><wx w="264"/><wx w="264"/><wx w="264"/><wx w="264"/><wx w="459"/><wx w="459"/><wx w="459"/><wx w="459"/><wx w="557"/><wx w="557"/><wx w="419"/><wx w="756"/><wx w="166"/><wx w="228"/><wx w="228"/><wx w="439"/><wx w="239"/><wx w="222"/><wx w="0"/><wx w="614"/><wx w="527"/><wx w="0"/><wx w="607"/><wx w="543"/><wx w="542"/><wx w="804"/><wx w="808"/><wx w="776"/><wx w="522"/><wx w="787"/><wx w="836"/><wx w="1095"/><wx w="864"/><wx w="1126"/><wx w="830"/><wx w="1090"/><wx w="800"/><wx w="580"/><wx w="479"/><wx w="521"/><wx w="591"/><wx w="460"/><wx w="412"/><wx w="528"/><wx w="597"/><wx w="295"/><wx w="264"/><wx w="582"/><wx w="439"/><wx w="692"/><wx w="591"/><wx w="586"/><wx w="461"/><wx w="585"/><wx w="515"/><wx w="397"/><wx w="519"/><wx w="596"/><wx w="576"/><wx w="885"/><wx w="587"/><wx w="499"/><wx w="407"/><wx w="643"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="527"/><wx w="284"/><wx w="582"/><wx w="439"/><wx w="591"/><wx w="515"/><wx w="528"/><wx w="397"/><wx w="519"/><wx w="521"/><wx w="397"/><wx w="519"/><wx w="580"/><wx w="460"/><wx w="295"/><wx w="586"/><wx w="596"/><wx w="580"/><wx w="521"/><wx w="460"/><wx w="295"/><wx w="439"/><wx w="591"/><wx w="586"/><wx w="515"/><wx w="397"/><wx w="596"/><wx w="499"/><wx w="407"/><wx w="580"/><wx w="295"/><wx w="591"/><wx w="586"/><wx w="596"/><wx w="580"/><wx w="460"/><wx w="295"/><wx w="586"/><wx w="596"/><wx w="499"/><wx w="580"/><wx w="596"/><wx w="580"/><wx w="521"/><wx w="460"/><wx w="528"/><wx w="597"/><wx w="295"/><wx w="264"/><wx w="586"/><wx w="397"/><wx w="596"/><wx w="885"/><wx w="499"/><wx w="580"/><wx w="460"/><wx w="528"/><wx w="295"/><wx w="586"/><wx w="596"/><wx w="521"/><wx w="460"/><wx w="528"/><wx w="407"/><wx w="295"/><wx w="521"/><wx w="591"/><wx w="460"/><wx w="591"/><wx w="515"/><wx w="397"/><wx w="519"/><wx w="407"/><wx w="439"/><wx w="580"/><wx w="460"/><wx w="295"/><wx w="586"/><wx w="596"/><wx w="586"/><wx w="596"/><wx w="459"/><wx w="591"/><wx w="591"/><wx w="597"/><wx w="519"/><wx w="734"/><wx w="750"/><wx w="439"/><wx w="580"/><wx w="460"/><wx w="295"/><wx w="596"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="155"/><wx w="167"/><wx w="155"/><wx w="167"/><wx w="162"/><wx w="162"/><wx w="125"/><wx w="125"/><wx w="162"/><wx w="162"/><wx w="125"/><wx w="125"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="155"/><wx w="167"/><wx w="155"/><wx w="167"/><wx w="340"/><wx w="340"/><wx w="340"/><wx w="340"/><wx w="527"/><wx w="500"/><wx w="1000"/><wx w="1000"/><wx w="326"/><wx w="326"/><wx w="287"/><wx w="287"/><wx w="273"/><wx w="273"/><wx w="174"/><wx w="471"/><wx w="360"/><wx w="360"/><wx w="228"/><wx w="228"/><wx w="586"/></cid-widths></multibyte-extras></font-metrics> \ No newline at end of file diff --git a/Documentation/fonts/oflgoudystmitalic.ttf b/Documentation/fonts/oflgoudystmitalic.ttf new file mode 100644 index 000000000..dd1b4c395 Binary files /dev/null and b/Documentation/fonts/oflgoudystmitalic.ttf differ diff --git a/Documentation/fonts/oflgoudystmitalic.xml b/Documentation/fonts/oflgoudystmitalic.xml new file mode 100644 index 000000000..d77ea2b0a --- /dev/null +++ b/Documentation/fonts/oflgoudystmitalic.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>OFLGoudyStM-Italic</font-name><full-name>OFL Sorts Mill Goudy Italic</full-name><family-name>OFL Sorts Mill Goudy</family-name><embed/><cap-height>704</cap-height><x-height>438</x-height><ascender>777</ascender><descender>-223</descender><bbox><left>-358</left><bottom>-478</bottom><right>1118</right><top>958</top></bbox><flags>97</flags><stemv>0</stemv><italicangle>-6</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="98" ue="311" us="160"/><bf gi="250" ue="329" us="313"/><bf gi="267" ue="383" us="332"/><bf gi="319" ue="402" us="402"/><bf gi="320" ue="539" us="536"/><bf gi="324" ue="567" us="567"/><bf gi="325" ue="700" us="699"/><bf gi="327" ue="704" us="704"/><bf gi="328" ue="712" us="710"/><bf gi="331" ue="733" us="728"/><bf gi="337" ue="772" us="768"/><bf gi="342" ue="776" us="774"/><bf gi="345" ue="780" us="778"/><bf gi="348" ue="786" us="786"/><bf gi="349" ue="789" us="789"/><bf gi="350" ue="807" us="806"/><bf gi="352" ue="8213" us="8192"/><bf gi="374" ue="8226" us="8216"/><bf gi="385" ue="8230" us="8230"/><bf gi="386" ue="8239" us="8239"/><bf gi="387" ue="8250" us="8249"/><bf gi="389" ue="8254" us="8254"/><bf gi="390" ue="8260" us="8260"/><bf gi="391" ue="8288" us="8287"/><bf gi="393" ue="8364" us="8364"/><bf gi="394" ue="8722" us="8722"/><bf gi="395" ue="65279" us="65279"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="494"/><wx w="0"/><wx w="333"/><wx w="213"/><wx w="249"/><wx w="410"/><wx w="533"/><wx w="488"/><wx w="771"/><wx w="834"/><wx w="239"/><wx w="288"/><wx w="288"/><wx w="431"/><wx w="508"/><wx w="226"/><wx w="282"/><wx w="222"/><wx w="416"/><wx w="518"/><wx w="309"/><wx w="450"/><wx w="390"/><wx w="496"/><wx w="373"/><wx w="490"/><wx w="473"/><wx w="526"/><wx w="502"/><wx w="298"/><wx w="298"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="413"/><wx w="821"/><wx w="771"/><wx w="612"/><wx w="762"/><wx w="767"/><wx w="631"/><wx w="585"/><wx w="773"/><wx w="786"/><wx w="325"/><wx w="405"/><wx w="774"/><wx w="589"/><wx w="911"/><wx w="804"/><wx w="815"/><wx w="576"/><wx w="807"/><wx w="637"/><wx w="481"/><wx w="692"/><wx w="827"/><wx w="780"/><wx w="1053"/><wx w="737"/><wx w="690"/><wx w="587"/><wx w="266"/><wx w="416"/><wx w="266"/><wx w="333"/><wx w="213"/><wx w="439"/><wx w="518"/><wx w="471"/><wx w="418"/><wx w="495"/><wx w="402"/><wx w="302"/><wx w="435"/><wx w="485"/><wx w="250"/><wx w="242"/><wx w="452"/><wx w="261"/><wx w="762"/><wx w="526"/><wx w="446"/><wx w="488"/><wx w="507"/><wx w="352"/><wx w="333"/><wx w="299"/><wx w="525"/><wx w="427"/><wx w="675"/><wx w="475"/><wx w="407"/><wx w="409"/><wx w="266"/><wx w="209"/><wx w="266"/><wx w="380"/><wx w="213"/><wx w="249"/><wx w="418"/><wx w="530"/><wx w="527"/><wx w="690"/><wx w="208"/><wx w="542"/><wx w="439"/><wx w="796"/><wx w="337"/><wx w="351"/><wx w="508"/><wx w="282"/><wx w="478"/><wx w="439"/><wx w="259"/><wx w="508"/><wx w="327"/><wx w="327"/><wx w="439"/><wx w="536"/><wx w="485"/><wx w="301"/><wx w="439"/><wx w="327"/><wx w="291"/><wx w="351"/><wx w="874"/><wx w="874"/><wx w="874"/><wx w="354"/><wx w="771"/><wx w="771"/><wx w="771"/><wx w="771"/><wx w="771"/><wx w="771"/><wx w="1078"/><wx w="762"/><wx w="631"/><wx w="631"/><wx w="631"/><wx w="631"/><wx w="325"/><wx w="325"/><wx w="325"/><wx w="325"/><wx w="767"/><wx w="804"/><wx w="815"/><wx w="815"/><wx w="815"/><wx w="815"/><wx w="815"/><wx w="508"/><wx w="815"/><wx w="827"/><wx w="827"/><wx w="827"/><wx w="827"/><wx w="690"/><wx w="553"/><wx w="509"/><wx w="518"/><wx w="518"/><wx w="518"/><wx w="518"/><wx w="518"/><wx w="518"/><wx w="704"/><wx w="418"/><wx w="402"/><wx w="402"/><wx w="402"/><wx w="402"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="453"/><wx w="526"/><wx w="446"/><wx w="446"/><wx w="446"/><wx w="446"/><wx w="446"/><wx w="508"/><wx w="446"/><wx w="525"/><wx w="525"/><wx w="525"/><wx w="525"/><wx w="407"/><wx w="488"/><wx w="407"/><wx w="771"/><wx w="518"/><wx w="771"/><wx w="518"/><wx w="771"/><wx w="518"/><wx w="762"/><wx w="418"/><wx w="762"/><wx w="418"/><wx w="762"/><wx w="418"/><wx w="762"/><wx w="418"/><wx w="767"/><wx w="495"/><wx w="767"/><wx w="495"/><wx w="631"/><wx w="402"/><wx w="631"/><wx w="402"/><wx w="631"/><wx w="402"/><wx w="631"/><wx w="402"/><wx w="631"/><wx w="402"/><wx w="773"/><wx w="435"/><wx w="773"/><wx w="435"/><wx w="773"/><wx w="435"/><wx w="773"/><wx w="435"/><wx w="786"/><wx w="485"/><wx w="786"/><wx w="485"/><wx w="325"/><wx w="250"/><wx w="325"/><wx w="250"/><wx w="325"/><wx w="250"/><wx w="325"/><wx w="250"/><wx w="325"/><wx w="250"/><wx w="681"/><wx w="492"/><wx w="405"/><wx w="242"/><wx w="774"/><wx w="452"/><wx w="589"/><wx w="261"/><wx w="589"/><wx w="261"/><wx w="589"/><wx w="261"/><wx w="596"/><wx w="532"/><wx w="584"/><wx w="261"/><wx w="804"/><wx w="526"/><wx w="804"/><wx w="526"/><wx w="804"/><wx w="526"/><wx w="736"/><wx w="815"/><wx w="446"/><wx w="815"/><wx w="446"/><wx w="815"/><wx w="446"/><wx w="1047"/><wx w="701"/><wx w="637"/><wx w="352"/><wx w="637"/><wx w="352"/><wx w="637"/><wx w="352"/><wx w="481"/><wx w="333"/><wx w="481"/><wx w="333"/><wx w="481"/><wx w="333"/><wx w="481"/><wx w="333"/><wx w="692"/><wx w="299"/><wx w="692"/><wx w="299"/><wx w="692"/><wx w="299"/><wx w="827"/><wx w="525"/><wx w="827"/><wx w="525"/><wx w="827"/><wx w="525"/><wx w="827"/><wx w="525"/><wx w="827"/><wx w="525"/><wx w="827"/><wx w="525"/><wx w="1053"/><wx w="675"/><wx w="690"/><wx w="407"/><wx w="690"/><wx w="587"/><wx w="409"/><wx w="587"/><wx w="409"/><wx w="587"/><wx w="409"/><wx w="199"/><wx w="302"/><wx w="481"/><wx w="333"/><wx w="692"/><wx w="299"/><wx w="242"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="439"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="500"/><wx w="1000"/><wx w="500"/><wx w="1000"/><wx w="333"/><wx w="250"/><wx w="166"/><wx w="508"/><wx w="222"/><wx w="166"/><wx w="100"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="282"/><wx w="282"/><wx w="508"/><wx w="500"/><wx w="1000"/><wx w="1000"/><wx w="239"/><wx w="239"/><wx w="239"/><wx w="239"/><wx w="410"/><wx w="410"/><wx w="410"/><wx w="410"/><wx w="535"/><wx w="580"/><wx w="419"/><wx w="666"/><wx w="166"/><wx w="228"/><wx w="228"/><wx w="439"/><wx w="220"/><wx w="222"/><wx w="0"/><wx w="614"/><wx w="508"/><wx w="0"/><wx w="530"/><wx w="490"/><wx w="514"/><wx w="721"/><wx w="741"/><wx w="683"/><wx w="1137"/><wx w="746"/><wx w="976"/><wx w="714"/><wx w="944"/><wx w="726"/><wx w="958"/><wx w="773"/><wx w="800"/><wx w="400"/><wx w="740"/><wx w="684"/><wx w="250"/><wx w="773"/><wx w="773"/><wx w="773"/><wx w="773"/><wx w="400"/><wx w="740"/><wx w="740"/><wx w="740"/><wx w="684"/><wx w="684"/><wx w="684"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="508"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="181"/><wx w="181"/><wx w="141"/><wx w="147"/><wx w="172"/><wx w="172"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="181"/><wx w="181"/><wx w="141"/><wx w="147"/><wx w="172"/><wx w="172"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="141"/><wx w="147"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="327"/><wx w="141"/><wx w="147"/><wx w="740"/><wx w="282"/><wx w="282"/><wx w="282"/><wx w="282"/><wx w="508"/><wx w="500"/><wx w="1000"/><wx w="1000"/><wx w="332"/><wx w="298"/><wx w="274"/><wx w="289"/><wx w="274"/><wx w="289"/><wx w="351"/><wx w="351"/><wx w="228"/><wx w="228"/></cid-widths></multibyte-extras></font-metrics> \ No newline at end of file diff --git a/Documentation/fonts/palatino.xml b/Documentation/fonts/palatino.xml new file mode 100644 index 000000000..77ca54b21 --- /dev/null +++ b/Documentation/fonts/palatino.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>Palatino</font-name><full-name>Palatino</full-name><family-name>Palatino</family-name><embed/><cap-height>692</cap-height><x-height>469</x-height><ascender>724</ascender><descender>-281</descender><bbox><left>-166</left><bottom>-283</bottom><right>1021</right><top>927</top></bbox><flags>97</flags><stemv>0</stemv><italicangle>23853</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="126" us="32"/><bf gi="3" ue="160" us="160"/><bf gi="163" ue="161" us="161"/><bf gi="132" ue="163" us="162"/><bf gi="188" ue="164" us="164"/><bf gi="150" ue="165" us="165"/><bf gi="231" ue="166" us="166"/><bf gi="134" ue="167" us="167"/><bf gi="142" ue="168" us="168"/><bf gi="139" ue="169" us="169"/><bf gi="157" ue="170" us="170"/><bf gi="169" ue="171" us="171"/><bf gi="164" ue="172" us="172"/><bf gi="260" ue="173" us="173"/><bf gi="138" ue="174" us="174"/><bf gi="263" ue="176" us="175"/><bf gi="147" ue="177" us="177"/><bf gi="241" ue="179" us="178"/><bf gi="141" ue="180" us="180"/><bf gi="151" ue="181" us="181"/><bf gi="136" ue="182" us="182"/><bf gi="265" ue="183" us="183"/><bf gi="221" ue="184" us="184"/><bf gi="240" ue="185" us="185"/><bf gi="158" ue="186" us="186"/><bf gi="170" ue="187" us="187"/><bf gi="244" ue="188" us="188"/><bf gi="243" ue="189" us="189"/><bf gi="245" ue="190" us="190"/><bf gi="162" ue="191" us="191"/><bf gi="172" ue="192" us="192"/><bf gi="200" ue="193" us="193"/><bf gi="198" ue="194" us="194"/><bf gi="173" ue="195" us="195"/><bf gi="98" ue="197" us="196"/><bf gi="144" ue="198" us="198"/><bf gi="100" ue="199" us="199"/><bf gi="202" ue="200" us="200"/><bf gi="101" ue="201" us="201"/><bf gi="199" ue="202" us="202"/><bf gi="201" ue="203" us="203"/><bf gi="206" ue="204" us="204"/><bf gi="203" ue="207" us="205"/><bf gi="232" ue="208" us="208"/><bf gi="102" ue="209" us="209"/><bf gi="210" ue="210" us="210"/><bf gi="207" ue="212" us="211"/><bf gi="174" ue="213" us="213"/><bf gi="103" ue="214" us="214"/><bf gi="239" ue="215" us="215"/><bf gi="145" ue="216" us="216"/><bf gi="213" ue="217" us="217"/><bf gi="211" ue="219" us="218"/><bf gi="104" ue="220" us="220"/><bf gi="234" ue="221" us="221"/><bf gi="236" ue="222" us="222"/><bf gi="137" ue="223" us="223"/><bf gi="106" ue="224" us="224"/><bf gi="105" ue="225" us="225"/><bf gi="107" ue="226" us="226"/><bf gi="109" ue="227" us="227"/><bf gi="108" ue="228" us="228"/><bf gi="110" ue="229" us="229"/><bf gi="160" ue="230" us="230"/><bf gi="111" ue="231" us="231"/><bf gi="113" ue="232" us="232"/><bf gi="112" ue="233" us="233"/><bf gi="114" ue="235" us="234"/><bf gi="117" ue="236" us="236"/><bf gi="116" ue="237" us="237"/><bf gi="118" ue="239" us="238"/><bf gi="233" ue="240" us="240"/><bf gi="120" ue="241" us="241"/><bf gi="122" ue="242" us="242"/><bf gi="121" ue="243" us="243"/><bf gi="123" ue="244" us="244"/><bf gi="125" ue="245" us="245"/><bf gi="124" ue="246" us="246"/><bf gi="183" ue="247" us="247"/><bf gi="161" ue="248" us="248"/><bf gi="127" ue="249" us="249"/><bf gi="126" ue="250" us="250"/><bf gi="128" ue="252" us="251"/><bf gi="235" ue="253" us="253"/><bf gi="237" ue="254" us="254"/><bf gi="185" ue="255" us="255"/><bf gi="319" ue="261" us="258"/><bf gi="252" ue="263" us="262"/><bf gi="254" ue="269" us="268"/><bf gi="323" ue="272" us="270"/><bf gi="256" ue="273" us="273"/><bf gi="326" ue="283" us="280"/><bf gi="247" ue="287" us="286"/><bf gi="249" ue="304" us="304"/><bf gi="214" ue="305" us="305"/><bf gi="330" ue="314" us="313"/><bf gi="332" ue="318" us="317"/><bf gi="357" ue="320" us="319"/><bf gi="225" ue="322" us="321"/><bf gi="334" ue="324" us="323"/><bf gi="336" ue="328" us="327"/><bf gi="338" ue="337" us="336"/><bf gi="175" ue="339" us="338"/><bf gi="340" ue="341" us="340"/><bf gi="299" ue="344" us="344"/><bf gi="342" ue="347" us="345"/><bf gi="250" ue="351" us="350"/><bf gi="227" ue="353" us="352"/><bf gi="345" ue="357" us="354"/><bf gi="349" ue="367" us="366"/><bf gi="352" ue="368" us="368"/><bf gi="351" ue="369" us="369"/><bf gi="186" ue="376" us="376"/><bf gi="353" ue="380" us="377"/><bf gi="229" ue="382" us="381"/><bf gi="166" ue="402" us="402"/><bf gi="222" ue="698" us="698"/><bf gi="216" ue="710" us="710"/><bf gi="224" ue="711" us="711"/><bf gi="217" ue="713" us="713"/><bf gi="218" ue="730" us="728"/><bf gi="223" ue="731" us="731"/><bf gi="215" ue="732" us="732"/><bf gi="270" ue="915" us="915"/><bf gi="271" ue="920" us="920"/><bf gi="153" ue="931" us="931"/><bf gi="272" ue="934" us="934"/><bf gi="159" ue="937" us="937"/><bf gi="273" ue="945" us="945"/><bf gi="274" ue="949" us="948"/><bf gi="155" ue="960" us="960"/><bf gi="276" ue="964" us="963"/><bf gi="278" ue="966" us="966"/><bf gi="259" ue="8211" us="8211"/><bf gi="178" ue="8212" us="8212"/><bf gi="266" ue="8215" us="8215"/><bf gi="181" ue="8217" us="8216"/><bf gi="195" ue="8218" us="8218"/><bf gi="179" ue="8221" us="8220"/><bf gi="196" ue="8222" us="8222"/><bf gi="130" ue="8224" us="8224"/><bf gi="193" ue="8225" us="8225"/><bf gi="262" ue="8226" us="8226"/><bf gi="171" ue="8230" us="8230"/><bf gi="197" ue="8240" us="8240"/><bf gi="189" ue="8250" us="8249"/><bf gi="267" ue="8252" us="8252"/><bf gi="268" ue="8319" us="8319"/><bf gi="246" ue="8355" us="8355"/><bf gi="269" ue="8359" us="8359"/><bf gi="140" ue="8482" us="8482"/><bf gi="279" ue="8593" us="8592"/><bf gi="257" ue="8594" us="8594"/><bf gi="281" ue="8597" us="8595"/><bf gi="284" ue="8616" us="8616"/><bf gi="152" ue="8706" us="8706"/><bf gi="168" ue="8710" us="8710"/><bf gi="154" ue="8719" us="8719"/><bf gi="238" ue="8722" us="8722"/><bf gi="187" ue="8725" us="8725"/><bf gi="194" ue="8729" us="8729"/><bf gi="165" ue="8730" us="8730"/><bf gi="146" ue="8734" us="8734"/><bf gi="285" ue="8735" us="8735"/><bf gi="286" ue="8745" us="8745"/><bf gi="156" ue="8747" us="8747"/><bf gi="167" ue="8776" us="8776"/><bf gi="143" ue="8800" us="8800"/><bf gi="287" ue="8801" us="8801"/><bf gi="148" ue="8805" us="8804"/><bf gi="258" ue="8962" us="8962"/><bf gi="288" ue="8976" us="8976"/><bf gi="289" ue="8993" us="8992"/><bf gi="359" ue="9472" us="9472"/><bf gi="360" ue="9474" us="9474"/><bf gi="361" ue="9484" us="9484"/><bf gi="362" ue="9488" us="9488"/><bf gi="363" ue="9492" us="9492"/><bf gi="364" ue="9496" us="9496"/><bf gi="365" ue="9500" us="9500"/><bf gi="366" ue="9508" us="9508"/><bf gi="367" ue="9516" us="9516"/><bf gi="368" ue="9524" us="9524"/><bf gi="369" ue="9532" us="9532"/><bf gi="370" ue="9580" us="9552"/><bf gi="300" ue="9600" us="9600"/><bf gi="301" ue="9604" us="9604"/><bf gi="302" ue="9608" us="9608"/><bf gi="303" ue="9612" us="9612"/><bf gi="304" ue="9619" us="9616"/><bf gi="261" ue="9632" us="9632"/><bf gi="291" ue="9644" us="9644"/><bf gi="293" ue="9650" us="9650"/><bf gi="294" ue="9658" us="9658"/><bf gi="295" ue="9660" us="9660"/><bf gi="296" ue="9668" us="9668"/><bf gi="184" ue="9674" us="9674"/><bf gi="292" ue="9675" us="9675"/><bf gi="297" ue="9689" us="9688"/><bf gi="308" ue="9788" us="9786"/><bf gi="311" ue="9792" us="9792"/><bf gi="312" ue="9794" us="9794"/><bf gi="313" ue="9824" us="9824"/><bf gi="314" ue="9827" us="9827"/><bf gi="315" ue="9830" us="9829"/><bf gi="317" ue="9835" us="9834"/><bf gi="209" ue="61440" us="61440"/><bf gi="191" ue="61442" us="61441"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="250"/><wx w="0"/><wx w="250"/><wx w="250"/><wx w="278"/><wx w="371"/><wx w="500"/><wx w="500"/><wx w="840"/><wx w="778"/><wx w="208"/><wx w="333"/><wx w="333"/><wx w="389"/><wx w="606"/><wx w="250"/><wx w="333"/><wx w="250"/><wx w="606"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="250"/><wx w="250"/><wx w="606"/><wx w="606"/><wx w="606"/><wx w="444"/><wx w="747"/><wx w="778"/><wx w="611"/><wx w="709"/><wx w="774"/><wx w="611"/><wx w="556"/><wx w="763"/><wx w="832"/><wx w="337"/><wx w="333"/><wx w="726"/><wx w="611"/><wx w="946"/><wx w="831"/><wx w="786"/><wx w="604"/><wx w="786"/><wx w="668"/><wx w="525"/><wx w="613"/><wx w="778"/><wx w="722"/><wx w="1000"/><wx w="667"/><wx w="667"/><wx w="667"/><wx w="333"/><wx w="606"/><wx w="333"/><wx w="606"/><wx w="500"/><wx w="333"/><wx w="500"/><wx w="553"/><wx w="444"/><wx w="611"/><wx w="479"/><wx w="333"/><wx w="556"/><wx w="582"/><wx w="291"/><wx w="234"/><wx w="556"/><wx w="291"/><wx w="883"/><wx w="582"/><wx w="546"/><wx w="601"/><wx w="560"/><wx w="395"/><wx w="424"/><wx w="326"/><wx w="603"/><wx w="565"/><wx w="834"/><wx w="516"/><wx w="556"/><wx w="500"/><wx w="333"/><wx w="606"/><wx w="333"/><wx w="606"/><wx w="778"/><wx w="778"/><wx w="709"/><wx w="611"/><wx w="831"/><wx w="786"/><wx w="778"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="444"/><wx w="479"/><wx w="479"/><wx w="479"/><wx w="479"/><wx w="287"/><wx w="287"/><wx w="287"/><wx w="287"/><wx w="582"/><wx w="546"/><wx w="546"/><wx w="546"/><wx w="546"/><wx w="546"/><wx w="603"/><wx w="603"/><wx w="603"/><wx w="603"/><wx w="500"/><wx w="333"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="606"/><wx w="628"/><wx w="556"/><wx w="747"/><wx w="747"/><wx w="979"/><wx w="333"/><wx w="333"/><wx w="250"/><wx w="944"/><wx w="833"/><wx w="250"/><wx w="606"/><wx w="250"/><wx w="250"/><wx w="500"/><wx w="603"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="333"/><wx w="333"/><wx w="250"/><wx w="758"/><wx w="556"/><wx w="444"/><wx w="278"/><wx w="250"/><wx w="250"/><wx w="500"/><wx w="250"/><wx w="250"/><wx w="500"/><wx w="500"/><wx w="1000"/><wx w="778"/><wx w="778"/><wx w="786"/><wx w="998"/><wx w="827"/><wx w="500"/><wx w="1000"/><wx w="500"/><wx w="500"/><wx w="278"/><wx w="278"/><wx w="250"/><wx w="250"/><wx w="556"/><wx w="667"/><wx w="167"/><wx w="500"/><wx w="331"/><wx w="331"/><wx w="605"/><wx w="608"/><wx w="500"/><wx w="250"/><wx w="250"/><wx w="500"/><wx w="1144"/><wx w="778"/><wx w="611"/><wx w="778"/><wx w="611"/><wx w="611"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="337"/><wx w="786"/><wx w="786"/><wx w="250"/><wx w="250"/><wx w="778"/><wx w="778"/><wx w="778"/><wx w="287"/><wx w="333"/><wx w="333"/><wx w="333"/><wx w="333"/><wx w="250"/><wx w="333"/><wx w="333"/><wx w="380"/><wx w="313"/><wx w="333"/><wx w="611"/><wx w="291"/><wx w="525"/><wx w="424"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="774"/><wx w="546"/><wx w="250"/><wx w="250"/><wx w="604"/><wx w="601"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="750"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="500"/><wx w="250"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="606"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/><wx w="250"/></cid-widths></multibyte-extras><kerning kpx1="119"><pair kern="-92" kpx2="46"/><pair kern="-92" kpx2="44"/></kerning><kerning kpx1="82"><pair kern="-37" kpx2="87"/><pair kern="-37" kpx2="89"/><pair kern="-37" kpx2="121"/><pair kern="-37" kpx2="84"/><pair kern="-55" kpx2="86"/></kerning><kerning kpx1="114"><pair kern="-18" kpx2="111"/><pair kern="-18" kpx2="100"/><pair kern="-18" kpx2="45"/><pair kern="-18" kpx2="104"/><pair kern="-18" kpx2="99"/><pair kern="-8" kpx2="117"/><pair kern="-74" kpx2="46"/><pair kern="-18" kpx2="103"/><pair kern="-18" kpx2="113"/><pair kern="74" kpx2="8217"/><pair kern="-18" kpx2="101"/><pair kern="-74" kpx2="44"/></kerning><kerning kpx1="87"><pair kern="-92" kpx2="111"/><pair kern="-18" kpx2="58"/><pair kern="-74" kpx2="114"/><pair kern="-92" kpx2="44"/><pair kern="-18" kpx2="59"/><pair kern="-55" kpx2="45"/><pair kern="-55" kpx2="105"/><pair kern="-92" kpx2="65"/><pair kern="-92" kpx2="97"/><pair kern="-50" kpx2="117"/><pair kern="-50" kpx2="121"/><pair kern="-92" kpx2="46"/><pair kern="-92" kpx2="101"/></kerning><kerning kpx1="8216"><pair kern="-37" kpx2="8216"/></kerning><kerning kpx1="80"><pair kern="-92" kpx2="65"/><pair kern="-18" kpx2="160"/><pair kern="-129" kpx2="46"/><pair kern="-129" kpx2="44"/></kerning><kerning kpx1="76"><pair kern="-74" kpx2="87"/><pair kern="-37" kpx2="160"/><pair kern="-92" kpx2="89"/><pair kern="-55" kpx2="121"/><pair kern="-74" kpx2="84"/><pair kern="-92" kpx2="86"/><pair kern="-74" kpx2="8217"/></kerning><kerning kpx1="49"><pair kern="-55" kpx2="49"/></kerning><kerning kpx1="86"><pair kern="-111" kpx2="111"/><pair kern="-55" kpx2="58"/><pair kern="-92" kpx2="114"/><pair kern="-129" kpx2="44"/><pair kern="-55" kpx2="59"/><pair kern="-74" kpx2="45"/><pair kern="-55" kpx2="105"/><pair kern="-111" kpx2="65"/><pair kern="-92" kpx2="97"/><pair kern="-92" kpx2="117"/><pair kern="-92" kpx2="121"/><pair kern="-129" kpx2="46"/><pair kern="-111" kpx2="101"/></kerning><kerning kpx1="8217"><pair kern="-37" kpx2="8217"/></kerning><kerning kpx1="118"><pair kern="-111" kpx2="46"/><pair kern="-111" kpx2="44"/></kerning><kerning kpx1="65"><pair kern="-74" kpx2="119"/><pair kern="-74" kpx2="87"/><pair kern="-55" kpx2="160"/><pair kern="-111" kpx2="89"/><pair kern="-74" kpx2="121"/><pair kern="-74" kpx2="84"/><pair kern="-111" kpx2="86"/><pair kern="-74" kpx2="8217"/><pair kern="-92" kpx2="118"/></kerning><kerning kpx1="160"><pair kern="-37" kpx2="65"/><pair kern="-18" kpx2="89"/></kerning><kerning kpx1="70"><pair kern="-74" kpx2="65"/><pair kern="-92" kpx2="46"/><pair kern="-92" kpx2="44"/></kerning><kerning kpx1="102"><pair kern="-18" kpx2="102"/><pair kern="55" kpx2="8217"/></kerning><kerning kpx1="89"><pair kern="-92" kpx2="111"/><pair kern="-74" kpx2="58"/><pair kern="-111" kpx2="112"/><pair kern="-90" kpx2="113"/><pair kern="-90" kpx2="118"/><pair kern="-111" kpx2="44"/><pair kern="-74" kpx2="59"/><pair kern="-92" kpx2="45"/><pair kern="-55" kpx2="105"/><pair kern="-92" kpx2="65"/><pair kern="-92" kpx2="97"/><pair kern="-18" kpx2="160"/><pair kern="-90" kpx2="117"/><pair kern="-111" kpx2="46"/><pair kern="-92" kpx2="101"/></kerning><kerning kpx1="121"><pair kern="-111" kpx2="46"/><pair kern="-111" kpx2="44"/></kerning><kerning kpx1="84"><pair kern="-92" kpx2="111"/><pair kern="-18" kpx2="79"/><pair kern="-90" kpx2="119"/><pair kern="-55" kpx2="58"/><pair kern="-90" kpx2="114"/><pair kern="-111" kpx2="99"/><pair kern="-74" kpx2="44"/><pair kern="-55" kpx2="59"/><pair kern="-55" kpx2="45"/><pair kern="-55" kpx2="105"/><pair kern="-74" kpx2="65"/><pair kern="-92" kpx2="97"/><pair kern="-90" kpx2="117"/><pair kern="-90" kpx2="121"/><pair kern="-74" kpx2="46"/><pair kern="-90" kpx2="115"/><pair kern="-92" kpx2="101"/></kerning></font-metrics> \ No newline at end of file diff --git a/Documentation/architecture.png b/Documentation/images/architecture.png similarity index 100% rename from Documentation/architecture.png rename to Documentation/images/architecture.png diff --git a/Documentation/inverse.jpg b/Documentation/images/inverse-logo.jpg similarity index 100% rename from Documentation/inverse.jpg rename to Documentation/images/inverse-logo.jpg diff --git a/Documentation/openchange.png b/Documentation/images/openchange.png similarity index 100% rename from Documentation/openchange.png rename to Documentation/images/openchange.png diff --git a/Documentation/preferences.png b/Documentation/images/preferences-hierarchy.png similarity index 100% rename from Documentation/preferences.png rename to Documentation/images/preferences-hierarchy.png diff --git a/Documentation/sogo.png b/Documentation/images/sogo-logo.png similarity index 100% rename from Documentation/sogo.png rename to Documentation/images/sogo-logo.png diff --git a/Documentation/includes/additional-info.asciidoc b/Documentation/includes/additional-info.asciidoc new file mode 100644 index 000000000..6e35f1079 --- /dev/null +++ b/Documentation/includes/additional-info.asciidoc @@ -0,0 +1,27 @@ +//// + + Additional information section + + This file is part of the SOGo project. + Authors: + - Inverse inc. <info@inverse.ca> + + Copyright (C) 2008-2014 Inverse inc. + License: GFDL 1.2 or later. http://www.gnu.org/licenses/fdl.html + +//// + +Additional Information +---------------------- + +For more information, please consult the online FAQs (Frequently Asked +Questions) : + +http://www.sogo.nu/english/support/faq.html + +You can also read the mailing archives or post your questions to it. For +details, see : + +https://lists.inverse.ca/sogo + +// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab: diff --git a/Documentation/includes/commercial-support.asciidoc b/Documentation/includes/commercial-support.asciidoc new file mode 100644 index 000000000..a36bad295 --- /dev/null +++ b/Documentation/includes/commercial-support.asciidoc @@ -0,0 +1,26 @@ +//// + + Commercial support section + + This file is part of the SOGo project. + Authors: + - Inverse inc. <info@inverse.ca> + + Copyright (C) 2008-2014 Inverse inc. + License: GFDL 1.2 or later. http://www.gnu.org/licenses/fdl.html + +//// + +Commercial Support and Contact Information +------------------------------------------ + +For any questions or comments, do not hesitate to contact us by writing +an email to : + +mailto:support@inverse.ca + +Inverse (http://inverse.ca/[http://inverse.ca]) offers professional +services around SOGo to help organizations deploy the solution and +migrate from their legacy systems. + +// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab: diff --git a/Documentation/includes/global-attributes.asciidoc b/Documentation/includes/global-attributes.asciidoc new file mode 100644 index 000000000..70fff6586 --- /dev/null +++ b/Documentation/includes/global-attributes.asciidoc @@ -0,0 +1,18 @@ +//// + + Global Attributes for our documentation + + This file is part of the SOGo project. + Authors: + - Inverse inc. <info@inverse.ca> + + Copyright (C) 2008-2014 Inverse inc. + License: GFDL 1.2 or later. http://www.gnu.org/licenses/fdl.html + +//// + +// TODO have the build system take care of this + +:release_version: 2.2.8 + +// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab: diff --git a/Documentation/includes/license.asciidoc b/Documentation/includes/license.asciidoc new file mode 100644 index 000000000..9d79e171c --- /dev/null +++ b/Documentation/includes/license.asciidoc @@ -0,0 +1,19 @@ +//// + + License section + + This file is part of the SOGo project. + Authors: + - Inverse inc. <info@inverse.ca> + + Copyright (C) 2008-2014 Inverse inc. + License: GFDL 1.2 or later. http://www.gnu.org/licenses/fdl.html + +//// + +GNU Free Documentation License +------------------------------ + +Please refer to http://www.gnu.org/licenses/fdl-1.2.txt for the full license. + +// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab: diff --git a/Documentation/sogo-2.png b/Documentation/sogo-2.png deleted file mode 100644 index 0c73b13b9..000000000 Binary files a/Documentation/sogo-2.png and /dev/null differ