LOOKUP_INCLUDE LOOKUP_LIBS

Một phần của tài liệu Đồ án tin học nghiên cứu về giao thức LDAP (Trang 104)

2. Tác nhân chuyển thư Mail Transfer Agents (MTAs)

LOOKUP_INCLUDE LOOKUP_LIBS

LOOKUP_LIBS

Các biến này cung cấp một phương tiện bổ sung CFLAGS hiện có và biến

LDFLAGS khi xây dựng Exim. Để hỗ trợ tra cứu LDAP, phải xác định vị trí các tập tin và thư viện LDAP. Ví dụ:

LOOKUP_INCLUDE=-I/opt/ldap/include LOOKUP_LIBS=-L/opt/ldap/lib -llldap -llber

LDAP_LIB_TYPE Biến này định nghĩa thư viện khách hàng LDAP nào được dùng. Giá trị có thể là

UMICHIGAN, OPENLDAP1, OPENLDAP2, NETSCAPE, and SOLARIS. Xây dựng server mail với các phần cài đặt LDAP sau: (trong Local/Makefile của Exim)

## Included in Exim's Local/Makefile to enable LDAP lookup support LOOKUP_LDAP=yes

LOOKUP_INCLUDE=-I /usr/local/include LOOKUP_LIBS=-L/usr/local/lib -lldap -llber LDAP_LIB_TYPE=OPENLDAP2

Xác thực rằng thư viện OpenLDAP có liên kết tới nhị phân exim bằng cách dùng các công cụ, chẳng hạn

ldd(1), để xem các liên kết phụ thuộc:

$ ldd /usr/exim/bin/exim libresolv.so.2 => /lib/libresolv.so.2 (0x40026000) libnsl.so.1 => /lib/libnsl.so.1 (0x40037000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004b000) libdb-4.0.so => /lib/libdb-4.0.so (0x40078000) libldap.so.2 => /usr/local/lib/libldap.so.2 (0x4010f000) liblber.so.2 => /usr/local/lib/liblber.so.2 (0x40146000) libc.so.6 => /lib/libc.so.6 (0x40153000) libdl.so.2 => /lib/libdl.so.2 (0x4027b000)

libssl.so.2 => /lib/libssl.so.2 (0x40290000) libcrypto.so.2 => /lib/libcrypto.so.2 (0x402bd000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Khi các mã nhị phân Exim được xây dựng và cài đặt (ta giả sử rằng vị trí mặc định thư mục cài đặt là

/usr/exim/), bước tiếp theo là quyết định dữ liệu nào cần lấy từ thư mục. Lược đồ sẽ dùng loạt thuộc tính

uid (posixAccount) như là khóa và loại thuộc tính mail (inetOrgPerson) như là giá trị kết quả.

as the resulting value. Tương tự như Postfix, tất cả mail tới người dùng địa phương tên là guest1 sẽ được chuyển tiếp tới địa chỉ jerry@plainjoe.org.

## User account including a mail alias dn: uid=guest1,ou=People,dc=plainjoe,dc=org uid: guest1 cn: Guest Account objectClass: posixAccount objectClass: inetOrgPerson userPassword: {CRYPT}Fd8nE1RtCh5G6 loginShell: /bin/bash uidNumber: 783 gidNumber: 1000 homeDirectory: /home/guest1 gecos: Guest Account sn: Account

mail: jerry@plainjoe.org

Tìm kiếm Exim được định nghĩa bằng cách sử dụng từ khóa data. Cú pháp chung của bảng tra cứu là:

data = ${lookup db_type {db_search_parameters}}

Truy vấn LDAP có thể dùng db_type: ldap

Chỉ định rằng tìm kiếm chỉ trả về một giá trị duy nhất và Exim xem là lỗi nếu như trả về nhiều giá trị.

ldapdn

Xác định rằng việc tìm kiếm sẽ chỉ khớp với một mục trong thư mục và trả về giá trị của DN của mục đó.

ldapm

Có thể trả về nhiều giá trị.

Để thông tin cho Exim rằng dữ liệu địa phương alias nên được lấy từ thư mục LDAP, bạn phải cấu hình một bộ định tuyến chuyển hướng (redirect) thích hợp. Để làm vậy, bạn tạo ra mục ldap_aliases trong

/usr/exim/configure:

## Alias Director, which retrieves data from an LDAP director. The name ## "ldap_aliases" has been arbitrarily chosen.

ldap_aliases: driver = redirect data = ${lookup ldap \ { ldap://ldap.plainjoe.org/\ ou=people,dc=plainjoe,dc=org\ ?mail?sub?(uid=${local_part})} }

Từ khóa driver được dùng để định nghĩa loại định tuyến được thực hiện. Ngược lại so với cả Sendmail và Postfix, Exim dùng LDAP URL để định nghĩa host, port, search base, giá trị thuộc tính được lấy (retrieved attribute values), scope, và filter. Dòng tiếp theo, ký tự (\) được dùng để làm dòng dễ đọc hơn.

{local_part} của jdoe@garion.plainjoe.org là jdoe). Do đó bạn có thể đọc các đặc tả truy vấn như sau:

“Dùng server LDAP tại ldap.plainjoe.org (port mặc định của tcp/389), thực hiện tìm kiếm chuỗi con của thuộc tính uid, tìm kiếm phần địa phương của địa chỉ email, và trả về giá trị của thuộc tính mail. Thực hiện tìm kiếm với cơ sở ou=people,dc=plainjoe,dc=org.”

Với việc dùng mode kiểm tra địa chỉ của Exim, bạn có thể xác minh rằng mail gởi tới địa chỉ

guest1@garion sẽ thực sự được chuyển tiếp tới jerry@plainjoe.org:

root# exim -v -bt guest1@garion jerry@plainjoe.org

<-- guest1@garion.plainjoe.org deliver to jerry@plainjoe.org

router = dnslookup, transport = remote_smtp host plainjoe.org [xxx.xxx.xxx.xxx]

Các tập tin đăng nhập cho slapd (loglevel256) cho thấy việc tra cứu (uid=guest1) được thực hiện như mong đợi:

Aug 16 17:05:09 ldap slapd[3574]: conn=36 op=1 SRCH

base="ou=people,dc=plainjoe,dc=org" scope=2 filter="(uid=guest1)"

Định dạng LDAP URL không cho phép định nghĩa các thông tin được dùng khi kết nối tới server. Hành vi mặc định là thực hiện một liên kết vô danh và không yêu cầu bất kỳ giới hạn của kết quả tìm kiếm. Exim có thể yêu cầu một kết nối đơn giản bằng cách dùng các thông tin quy định bởi tùy chọn user và

pass

Bảng 7-9 liệt kê một vài thông số có thể có trong truy vấn LDAP như là option=value để chỉ định thông tin chứng thực như là giới hạn tìm kiếm:

Table 7-9. Additional Exim LDAP query parameters

Parameter Description

user DN được dùng khi kết nối tới server thư mục.

pass Mật khẩu trắng được sử dụng khi kết nối tới server thư mục với user không rỗng size Giới hạn trên của số các mục được trả về từ việc tra cứu.

time Giới hạn trên, tín bằng giây của việc tra cứu.

To use these additional parameters when performing an LDAP lookup, they must preceed the URL in the

data string. For example, to bind to the LDAP server as the user cn=MailAdmin,dc=plainjoe,dc=org using the password secret, you would define the following query:

data = ${lookup ldap \

{ user="cn=Mail Admin,dc=plainjoe,dc=org"\ pass=secret \

ldaps://ldap.plainjoe.org/\ ou=people,dc=plainjoe,dc=org\ ?mail?sub?(uid=${local_part})} }

Vì Exim dùng kết nối LDAPv2, nên nó không thể tận dụng các điểm mạnh của chứng thực SASL hoặc mở rộng StartTLS LDAv3. Tuy nhiên, nó có thể hiểu URL dùng ldaps://. Điều này quan trọng khi gởi

một DN và password tới server thư mục trong dạng trắng.

Một phần của tài liệu Đồ án tin học nghiên cứu về giao thức LDAP (Trang 104)

Tải bản đầy đủ (DOCX)

(188 trang)
w