| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <document> |
| |
| <properties> |
| <title>Using LDAP</title> |
| <author email="charles@benett1.demon.co.uk">Charles Benett</author> |
| </properties> |
| |
| <body> |
| |
| <section name="James 1.2 - Using an LDAP Directory as a Users Repository"> |
| |
| <p> |
| This document explains how to enable JAMES to use an LDAP directory as a |
| Users Repository. |
| </p> |
| </section> |
| |
| <section name="Summary"> |
| |
| <p> |
| We have tried to make the LDAP implementation of UsersRepository as |
| flexible a possible, recognising that each installation will have a unique |
| directory schema. |
| <br>We assume that all users that a James Mailserver will handle fall |
| within one single-rooted tree. The root of this tree, ie the lowest node |
| in the directory which is an ancestor for all users served by this |
| mailserver and the mailserver, is called the LDAPRoot. (See diagram) |
| </br> |
| <br>It is entirely possible that an organization may have more than one |
| mail server. Consequently, the fact that a user is in the Directory does |
| not imply that this mailserver should handle mail for them. |
| </br> |
| <br>This implementation of UsersRepository creates one node (object) for |
| each set of mail users. The set called 'LocalUsers' is the set of users |
| whose mail is handled by this server. Other sets include any mail-lists |
| handled by the server. Each member of a set is recorded as an attribute |
| of these objects. These nodes are child nodes of the mailserver. |
| </br> |
| <br>The mailserver will accept mail for local delivery if the user part of |
| the email address matches a member of LocalUsers and if the domain/host |
| part of the email address matches the first servername . |
| (Set servernames autodetect to false and enter the domain served as the |
| first servername, e.g. apache.org). |
| </br> |
| <br>For POP3 authentication, the mailserver first finds the user entry in |
| the directory, underLDAPRoot, whose attribute, specified as |
| MailAttribute in conf, matches user@domain. The mailserver authenticates |
| the POP3 user if it can bind to the directory as that user entry with |
| the offered password. |
| </br> |
| <br> |
| This implementation does not set passwords in the directory. Use a dummy |
| password when invoking adduser in RemoteManger. |
| </br> |
| <br> |
| If ManageGroupAttribute is set to TRUE (as it is by default), then the |
| RemoteManger will add/remove the full DN of the email group to/from the |
| user entry. This facilty allows users to ask the directory what is my |
| mailserver and what email lists am I subscribed to? |
| </br> |
| |
| </p> |
| |
| <table cellspacing="0"> |
| <tr> |
| <td> </td> |
| <td align="center">Root of Directory |
| <br>Example: dc=org</br> |
| <br>May not be referenced in conf.xml</br> |
| <br>|</br> |
| <br>|</br> |
| </td> |
| <td> </td> |
| </tr> |
| <tr> |
| <td colspan="3" align="center">-------------------------------------------------------------------------------------------------</td> |
| |
| </tr> |
| <tr> |
| <td align="center" valign="top">| |
| <br>Subtree not served by James</br> |
| <br> e.g.: dc=w3c, dc=org</br> |
| </td> |
| <td align="center" valign="top">| |
| <br>Subtree served by James</br> |
| <br> e.g.: dc=apache, dc=org </br> |
| <br>"LDAPRoot"</br> |
| <br>|</br> |
| </td> |
| <td align="center" valign="top">| |
| <br>Subtree not served by James</br> |
| <br> e.g.: dc=xml, dc=org</br> |
| </td> |
| </tr> |
| <tr> |
| <td> </td> |
| <td> |
| <table cellspace="0"> |
| <tr> |
| <td colspan="4" align="center">----------------------------------------------------</td> |
| </tr> |
| <tr> |
| <td align="center" valign="top">| |
| <br>This mailserver </br> |
| <br>cn=mailserver.apache.org</br> |
| <br>|</br> |
| <br>---------------</br> |
| </td> |
| <td align="center" valign="top">| |
| <br>A user </br> |
| <br>cn=King Arthur</br> |
| <br> memberOfGroup=</br> |
| <br>cn=LocalUsers etc</br> |
| </td> |
| <td align="center" valign="top">| |
| <br>A user </br> |
| <br>cn=Morgan LeFay </br> |
| </td> |
| <td align="center" valign="top">| |
| <br>Another mailserver </br> |
| <br>cn=oldmail.apache.org</br> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <table cellspace="0"> |
| <tr> |
| <td align="center" valign="top"> | |
| <br>LocalUsers</br> |
| <br>member=Arthur</br> |
| </td> |
| <td align="center" valign="top"> | |
| <br>list-james</br> |
| <br>member=Arthur</br> |
| </td> |
| </tr> |
| </table> |
| </td> |
| <td> </td> |
| <td> </td> |
| <td> </td> |
| </tr> |
| </table> |
| </td> |
| <td> </td> |
| </tr> |
| </table> |
| </section> |
| |
| <section name="Installation"> |
| |
| <p> |
| Six entries in JAMES.conf.xml must be set for this to work: |
| <ul> |
| <li>change usersManager - type to ldap.</li> |
| <li>Set the ldapServer element to point to the correct host and port</li> |
| <li>Set LDAPRoot and ThsServerRDN.</li> |
| <li>Set the direcory FDN and password that should be used to write to the directory.</li> |
| <li>Unless all your users have email addresses of the form, name@the-machine-running-James, set servernames-autodetect to false and apecify the your email domain as the first servername.</li> |
| </ul> |
| </p> |
| |
| </section> |
| |
| </body> |
| </document> |