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:


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.


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:

FILTER (&(objectcategory=person)(objectclass=user))
ATTRS Name Mail Phone