7.2 Using LDAP for Mail-Merge
Because of its complex, machine-friendly syntax, LDAP is primarily suited for scripting. While it is relatively easy for a programmer to write a script that sends a weekly notice to every member of a particular department, it is not realistic to expect ordinary list owners or end-users to understand the intricacies of LDAP and devise working search filters. For instance, to select all users in an Exchange database, one would have to use the following filter:
(&(!(Alias=$null))(|(&(ObjectCategory=person)(ObjectClass=user)(Database=$null)(ServerLegacyDN=$null))(&(ObjectCategory=person)(ObjectClass=user)(!(Database=$null))(!(ServerLegacyDN=$null)))))))
L-Soft expects that LDAP-based distributions will be created by customer-developed scripts – either intranet web scripts or traditional ‘cron’ jobs or scheduled tasks. At this point, there are no plans to provide a web interface page into which raw LDAP search filters could be entered.
To create an LDAP-based distribution, a script uses the DISTRIBUTE command and specifies an LDAP keyword as follows:
DISTRIBUTE … LDAP=YES(SERVER=nickname,E-MAIL=attribute,PARTS=attribute)
The syntax of this keyword is essentially the same as for SQL-based distributions (“DBMS=”):
- SERVER=nickname
Identifies the LDAP server to be queried. If omitted, the default (unnamed) LDAP server is used.
- E-MAIL=attribute
Identifies the name of the directory attribute containing the recipient’s e-mail address. If omitted, the value of LDAP_DEFAULT_EMAIL_nickname is used.
- PARTS=attribute
The name of an optional directory attribute containing a list of message parts that the recipient subscribes to. Although this mail-merge feature is unlikely to be used with LDAP, it is available if desired.
Note: The E-MAIL and (if enabled) PARTS attributes must be specified or the distribution will fail. |
Similarly to SQL-based distributions, the ‘TO’ DD contains a list of LDAP search statements, rather than a list of actual recipients. Each line in the ‘TO’ DD can be one of the following statements:
- BASE DN
The ‘distinguished name’ of the ‘base’ of the LDAP search. Mandatory.
- FILTER search_filter
The LDAP search filter for the search. Mandatory.
- ATTRS attr1 [attr2 […]]
A list of directory attributes of interest (used in the mail-merge). If omitted, all directory attributes are made available. Attribute names are not case-sensitive. The main purpose of this statement is to improve search performance if there are many irrelevant attributes in the directory.
- SCOPE BASE|ONELEVEL|SUBTREE
Optionally changes the scope of the search from the default (SUBTREE).
- SEARCH
Starts the search. This command allows multiple LDAP searches to be performed in the same distribution. If there is only one search, this command is optional – LISTSERV automatically starts the search when it reaches the end of the ‘TO’ DD.
For instance, this search will select all Windows users in the EXAMPLE.COM domain with a valid e-mail address:
BASE CN=Users,DC=EXAMPLE,DC=COM
FILTER (&(objectcategory=person)(objectclass=user))
ATTRS Name Mail Phone
SEARCH