Частина 8. Налаштування аутентифікації поштового сервера через OpenLDAP

 До переліку статей циклу

 

OpenLDAP це відкрита реалізація LDAP, розроблена проектом OpenLDAP, поширюється під власною вільною ліцензією OpenLDAP Public License.

OpenLDAP складається з трьох головних компонентів:

  • slapd -— незалежний демон LDAP і відповідні оверлеї і інструменти;

  • бібліотеки, що реалізують протокол LDAP;

  • утиліти, інструменти та допоміжні клієнти

Встановлення сервера OpenLDAP

Для встановлення виконаємо команду:

 

# apt install slapd ldap-utils

 

 

Та на запит введемо адміністративний пароль.

Для роботи нам будуть потрібні два модуля. Перший для бази даних mdb, а другий модуль — monitor, який потрібен для створення та динамічної підтримки гілки про поточний статус демона slapd.

Для цього створимо файл add-mod.ldif та запишемо в нього:

 

dn: cn=module,cn=config

objectClass: olcModuleList

cn: module

olcModulePath: /usr/lib/ldap

olcModuleLoad: back_mdb.la

olcModuleLoad: back_monitor.la

 

Далі виконаємо команду:

ldapadd -QY EXTERNAL -H ldapi:/// -f add-mod.ldif

 

 

Додавання схем даних

Для подальшої роботи нам в OpenLDAP будуть потрібні наступні схеми:

  • core.ldif
  • cosine.ldif
  • nis.ldif
  • inetorgperson.ldif
  • openldap.ldif
  • misc.ldif

 

Якщо якоїсь схеми не вистачає, її можна підключити командою на зразок:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif

 

Файли за необхідними схемами знаходяться в теці /etc/ldap/schema/

Подивитись, які схеми вже підключені можна в теці /etc/ldap/slapd.d/cn=config/cn=schema

 

Ініціалізація бази даних

Створимо власну базу даних для домену. Для цього робимо файл db.ldif та записуємо в нього:

 

dn: olcDatabase=mdb,cn=config

objectClass: olcMdbConfig

olcDatabase: mdb

olcSuffix: dc=study,dc=local

olcDbDirectory: /var/lib/ldap

olcDbMaxsize: 1073741824

olcRootDN: cn=admin,dc=study,dc=local

olcRootPW: password

olcDbIndex: cn,sn,mail pres,eq,approx,sub

olcAccess: {0}to *

  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

  by * break

olcAccess: {1}to attrs=userPassword

  by self write

  by anonymous auth

  by * none

olcAccess: {2}to *

  by self write

  by * read

 

dn: olcDatabase=monitor,cn=config

objectClass: olcDatabaseConfig

olcDatabase: monitor

 

Далі заносимо дані з нього до LDAP командою:

ldapadd -QY EXTERNAL -H ldapi:/// -f db.ldif

 

 

 

Для зміни прав доступу створюємо файл acl-mod.ldif та заповнюємо його:

 

dn: olcDatabase={-1}frontend,cn=config

changetype: modify

add: olcAccess

olcAccess: {0}to *

 by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage

  by * break

olcAccess: {1}to dn.base=""

  by * read

olcAccess: {2}to dn.base="cn=subschema"

  by * read

 

olcAccess: {1}to attrs=userPassword

  by self write

  by anonymous auth

olcAccess: {2}to *

  by * read

 

 

Далі командою

ldapadd -QY EXTERNAL -H ldapi:/// -f acl-mod.ldif

Вносимо ці дані до LDAP

 

Пересвідчимось, що обліковий запис адміністратора має доступ до служби каталогів:

ldapwhoami -WD cn=admin,dc=study,dc=local

Enter LDAP Password:

 

 

Тепер створимо дерево нашого домену створимо файл tree.ldif та занесемо в нього:

 

dn: dc=study,dc=local

dc: study

objectClass: top

objectClass: domain

 

dn: ou=users,dc=study,dc=local

ou: Users

objectClass: top

objectClass: organizationalUnit

description: Central location for UNIX users

 

dn: ou=groups,dc=study,dc=local

ou: Groups

objectClass: top

objectClass: organizationalUnit

description: Central location for UNIX groups

 

І додамо ці дані командою:

ldapmodify -a -xWD cn=admin,dc=study,dc=local -f tree.ldif

 

 

PhpLDAPAdmin

PhpLDAPadmin — це веб-додаток для адміністрування серверів Lightweight Directory Access Protocol (LDAP). Він написаний на мові програмування PHP, і розповсюджується під ліцензією GNU General Public License. Додаток доступний на 14 мовах і підтримує кодування UTF-8 для вмісту каталогу.

Встановимо веб-консоль керування LDAP командою:

# apt install phpldapadmin

 

Для первинного налаштування в файлі конфігурації /etc/phpldapadmin/config.php змінимо рядки

$servers→setValue('server','base',array('dc=example,dc=com'));

на

$servers→setValue('server','base',array('dc=study,dc=local'));

та

$servers→setValue('login','bind_id','cn=admin,dc=example,dc=com');

на

$servers→setValue('login','bind_id','cn=admin,dc=study,dc=local');

 

Створення користувачів та псевдонімів

Підготовка

Перед тим, як створити будь якого користувача потрібно в контейнері groups створити групу з довільною назвою. Це пов'язано з тим, що будь який користувач має належати хоча б до однієї групи.

За посиланням http://server-ip/phpldapadmin заходимо в інтерфейс phpldapadmin. Далі переміщуємось у гілку users, та натиснувши на «Create new entry here» створюємо новий об'єкт типу “Generic: Posix Group”

 

 

 

Далі даємо назву нашій групі, наприклад All

 

Наступним кроком підтверджуємо внесення даних до LDAP.

Створення користувачів

Тепер створимо нашого першого користувача — це буде користувач з іменем mailadmin, з правами якого наша поштова система буде вичитувати дані з LDAP

Для цього в розділі users тиснемо на «Create new entry here» створюємо новий об'єкт типу

«Generic: User Account»

 

 

В наступному вікні заповнюємо всі обов'язкові поля та вводимо пароль. З усіх полів для нас важливими будуть Common Name та Password. Інші поля, навіть обов'язкові, можна заповнювати довільною інформацією.

 

Створимо першого користувача поштового сервера з іменем user. Він створюється так само, як і користувач mailadmin, але по закінченню потрібно вписати ще його email-адресу. Для цього згори вікна тиснемо на “Add new attribute” та у випадаючому списку додаємо атрибут email.

 

 

В новому полі вводимо поштову адресу користувача.

 

Аналогічним чином створюються і інші користувачі.

Створення псевдонімів.

Поштові псевдоніми зручніше за все створювати як групи користувачів. В інтерфейсі phpLDAPAdmin є шаблон об'єкту типу Generic: Posix Group, але нас цей шаблон не влаштовує. В ньому члени груп визначаються за uid, а Postfix останніх версій не вміє з uid отримати dn користувача. Тому ми будемо використовувати групи типу groupofnames.

Для цього можна створити файл gr.ldif і записати в нього:

 

dn: cn=mygroup,ou=groups,dc=study,dc=local

objectClass: groupofnames

objectClass: inetLocalMailRecipient

cn: mygroup

description: All users

member: cn=user,ou=users,dc=study,dc=local

 

Далі дані з цього файлу можна занести до LDAP і через веб-інтерфейс додати поле mailRoutingAddress і внести в нього поштову адресу псевдоніму командою.

ldapadd -x -D cn=admin,dc=study,dc=local -W -f gr.ldif

 

Але, на мою думку, набагато зручніше створити власний шаблон для phpLDAPAdmin і надалі користуватися саме ним. Для цього в теці /etc/phpldapadmin/templates/creation створимо файл groupOfNames.xml з вмістом:

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE template SYSTEM "template.dtd">

<template>

<title>Mail Aliase Group</title>

<!-- <regexp>^ou=.*,</regexp> -->

<icon>images/ou.png</icon>

<description>New groupOfNames</description>

<askcontainer>1</askcontainer>

<rdn>cn</rdn>

<visible>1</visible>

 

<objectClasses>

<objectClass id="groupOfNames"></objectClass>

<objectClass id="inetLocalMailRecipient"></objectClass>

</objectClasses>

 

<attributes>

<attribute id="cn">

<display>Group</display>

<order>1</order>

<page>1</page>

</attribute>

<attribute id="member">

<display>member</display>

<hint></hint>

<order>2</order>

<page>1</page>

<spacer>1</spacer>

</attribute>

<attribute id="mailRoutingAddress">

<display>mailRoutingAddress</display>

<hint></hint>

<order>3</order>

<page>1</page>

<spacer>1</spacer>

</attribute>

</attributes>

</template>

 

Після перелогіну в інтерфейсі з'явиться шаблон об'єкту з назвою “Mail Aliase Group

При створенні групи за допомогою цього шаблону ми зразу можемо вказати email-адресу групи та внести до неї необхідних користувачів у потрібному нам форматі.

 

 

Налаштування Postfix

У файлі /etc/postfix/ldap_virtual_mailbox_maps.cf записуємо:

server_host = 127.0.0.1

bind = yes

bind_dn = cn=mailadmin,ou=users,dc=study,dc=local

bind_pw = mailadmin

search_base = ou=users,dc=study,dc=local

query_filter = (&(mail=%s))

result_attribute = mail

result_format = %d/%u/

 

А в файл /etc/postfix/ldapalias

server_host = 127.0.0.1

bind = no

bind_dn = cn=mailadmin,ou=users,dc=study,dc=local

bind_pw = mailadmin

search_base = dc=study,dc=local

query_filter = (&(objectclass=inetLocalMailRecipient)(mailRoutingAddress=%s))

special_result_attribute = member

leaf_result_attribute = mail

 

Перевірка коректності налаштувань Postfix

Після того, як ми зробили налаштування з'єднання з LDAP потрібно перевірити дані, які повернуться до Postfix.

Для перевірки роботи з поштовими скриньками виконаємо команду:

postmap -q Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її. ldap:/etc/postfix/ldap_virtual_mailbox_maps.cf

В результаті ми маємо отримати вивід:

study.local/user/

 

Для того, щоб пересвідчитися в коректності роботи з псевдонімами виконаємо:

postmap -q Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її. ldap:/etc/postfix/ldapalias

На виході має бути:

Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її.

 

Якщо дані повернулися правильні, то на цьому налаштування Postfix завершено.

 

Налаштування Dovecot

У файл /etc/dovecot/dovecot-ldap.conf.ext записуємо

hosts = 127.0.0.1

auth_bind = yes

ldap_version = 3

base = dc=study,dc=local

dn = cn=mailadmin,ou=users,dc=study,dc=local

dnpass = mailadmin

deref = never

scope = subtree

user_attrs = uidNumber=5000,gidNumber=5000,mail=mail=maildir:/var/mail/%d/%n

user_filter = (&(objectClass=inetOrgPerson)(mail=%u))

pass_attrs = uidNumber=5000,gidNumber=5000,mail=mail=maildir:/var/mail/%d/%n

pass_filter = (&(objectClass=inetOrgPerson)(mail=%u))

 

Для перевірки налаштування Dovecot потрібно зв'язатися з сервером по протоколу IMAP за допомогою поштового клієнта, або утиліти telnet.

 

До переліку статей циклу 

 

Підтримайте, будь ласка автора

та придбайте книгу

"Налаштування поштового

сервера на базі Postfix, Dovecot

та RoundCube"

В електронному вигляді

Придбати

 

Додати коментар

Захисний код
Оновити