Налаштування поштового сервера на базі Postfix, Dovecot та RoundCube. Зміст
OpenLDAP — це відкрита реалізація LDAP, розроблена проектом OpenLDAP, поширюється під власною вільною ліцензією OpenLDAP Public License.
OpenLDAP складається з трьох головних компонентів:
slapd -— незалежний демон LDAP і відповідні оверлеї і інструменти;
бібліотеки, що реалізують протокол LDAP;
утиліти, інструменти та допоміжні клієнти
Для встановлення виконаємо команду:
# 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 будуть потрібні наступні схеми:
Якщо якоїсь схеми не вистачає, її можна підключити командою на зразок:
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 — це веб-додаток для адміністрування серверів 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 user@study.local ldap:/etc/postfix/ldap_virtual_mailbox_maps.cf
В результаті ми маємо отримати вивід:
study.local/user/
Для того, щоб пересвідчитися в коректності роботи з псевдонімами виконаємо:
postmap -q postmaster@study.local ldap:/etc/postfix/ldapalias
На виході має бути:
Якщо дані повернулися правильні, то на цьому налаштування 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. Зміст
Copyright © 2010-2017 IT Stream
Работает на «1С-Битрикс: Управление сайтом»