If you don't find the address you're looking for in "mail", then prefix "smtp:"
(lowercase) to the value of $email. (The SMTP: address IS the address in "mail".)
i.e.
(proxyaddresses=smtp:$email)
And usually there isn't any need to try twice... just "OR" the filter:
(|(mail=$email)(proxyaddresses=smtp:$email))
since both attributes are probably indexed. (This looks like it applies to Active
Directory or Exchange 5.5... the X400 address in proxyaddresses is the hint)
---
Rick Tatem
SAS Institute Inc.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 01, 2004 9:15 AM
To: [EMAIL PROTECTED]
Subject: Net::LDAP filter question
Greetings,
I am having a bit of a problem understanding the filtering stuff for
Net::LDAP. Here is my situation...
Presently we do:
# Search for user
$mesg = $ldap->search(base => $base_dn,
scope => 'sub',
filter => "(mail=$email)");
$email => the email address the incoming message is sent to (IE
[EMAIL PROTECTED]) and the filter looks for an LDAP field called "mail"
which contains the value in $email.
If that fails, we need instead to look for the email address in the LDAP field
"proxyAddresses", which is not a SINGLE field but instead has contents which look like
this:
proxyAddresses: SMTP:[EMAIL PROTECTED]; smtp:[EMAIL PROTECTED]; smtp:[EMAIL
PROTECTED]; X400:c=US;a= ;p=FLA;o=DOH;s=scancardrequest;; RFAX:MQA Scancard Requests@;
The trick is how to construct the query so it will look for the value of the $email
string within the "proxyAddresses" LDAP field.
Any advise?
--
Stewart Larsen
Florida Department of Health, Information Technology Security HIRM, Mail Bin B05, Room
230B
4052 Bald Cypress Way,
Tallahassee, FL 32399-1733
(850) 245-4444 x 3358
Please note: Florida has a very broad public records law. Most written communications
to or from state officials regarding state business are public records available to
the public and media upon request. Your e-mail communications may therefore be
subject to public disclosure.