Autor: drfugazi

Konfiguracja dostarczania poczty w oparciu o LDAP

Ostatnio pisałem o konfiguracji uwierzytelniania użytkowników w katalogu LDAP aby mogli odbierać i wysyłać pocztę. Teraz czas na konfigurację Postfixa aby tę pocztę dostarczał do właściwych domen i skrzynek.

Jeśli kompilujecie/instalujecie Postfixa samodzielnie, to należy pamiętać o wkompilowaniu wsparcia dla LDAP oraz wskazaniu ścieżki do bibliotek LDAP. Ja pójdę na łatwiznę i zrobię to na Ubuntu:


$ sudo -i
# apt-get install postfix-ldap

To dołoży nam do postfixa wsparcie dla map typu ldap:

Teraz możemy zabrać się za konfigurację serwera Postfix:


# cd /etc/postfix
# vi main.cf

Konfiguracja uwierzytelniania poczty w LDAP

Zakładam, że Dovecot i Postfix już działają i można odebrać i wysłać pocztę logując się na użytkownika systemowego (patrz poprzednie wpisy). Nadszedł zatem czas na uruchomienie uwierzytelniania w naszym katalogu LDAP (patrz konfiguracja LDAP).

Wykorzystanie LDAPa do uwierzytelniania użytkowników pozwala na elastyczne zarządzanie hostingiem poczty i nie tylko. LDAP jest już przyjętym standardem w zakresie uwierzytelniania i autoryzacji, praktycznie każde szanujące się oprogramowanie wymagające uwierzytelnienia ma wsparcie dla tego protokołu.

Zaczniemy od serwera POP3/IMAP, który również dostarcza mechanizmu uwierzytelniania dla Postfixa czyli od Dovecota:


/usr/bin/sudo -i
cd /etc/dovecot
vi dovecot-ldap.conf

W tym pliku musimy zdefiniować parametry serwera lub serwerów LDAP, metodę uwierzytelnienia oraz filtry i atrybuty, wymienię te, które trzeba ustawić:


hosts = localhost
auth_bind = yes
base = o=hosting,dc=example,dc=com
scope = subtree
user_attrs = homeDirectory=home
user_filter = (&(objectClass=mailUser)(mail=%u))
pass_attrs = mail=user,userPassword=password
pass_filter = (&(objectClass=mailUser)(mail=%u))

Installation and configuration of OpenLDAP

Installation and basic configuration of LDAP directory service (OpenLDAP) on Ubuntu:

sudo aptitude install slapd ldap-utils

This description is based on HowtoForge document for Karmic Koala. I used to be to configure of OpenLDAP in slapd.conf file, but this is old method. Here we have possibility to modify LDAP configuration without restart of LDAP server.

cd /etc/ldap

At first I suggest you to add some schemas, which contains objectclasses and attributes useful later:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif

If you have problem with addition of above because of insufficient permissions then switch to root with sudo su - or sudo -i

Kowersja schematu LDAP do LDIF

Potęgą usługi katalogowej LDAP jest możliwość definiowania własnych atrybutów, klas obiektów, reguł itp. i grupowania ich w tzw. schematy, które można dodawać do konfiguracji.

Na dzień dzisiejszy jednak większość schematów, które znajdziecie w sieci jest zorganizowana w bloki zawierające definicje atrybutów i klas obiektów, wygląda to mniej więcej tak:

definicja typu atrybutu:


attributetype ( 1.3.6.1.4.1.32349.1.2.2.9 NAME 'accountStatus'
    DESC 'The status of a user account: active, disabled'
    EQUALITY caseIgnoreIA5Match
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
    SINGLE-VALUE )

Instalacja i konfiguracja OpenLDAP

Instalacja i podstawowa konfiguracja usługi katalogowej LDAP (OpenLDAP) na Ubuntu:

drfugazi@charr:~% sudo aptitude install slapd ldap-utils

Opis wzorowany jest na angielskim opisie dla Karmic Koala na HowtoForge. Ja jestem przyzwyczajony do konfigurowania LDAPa w pliku slapd.conf, ale to stara szkoła. Tutaj dostajemy możliwość dynamicznej konfiguracji bez konieczności restartu serwera LDAP.

cd /etc/ldap

Na początek proponuję dodać kilka schematów, zwierających klasy obiektów, które będą przydatne później:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif

Jeśli Wam się nie uda dodanie z powodu niewystarczających uprawnień, to przełączcie się na roota poleceniem sudo su -

php-5.2.14

Get the sources:

root@hydra:~# su - soft
soft@hydra:~% cd php 
soft@hydra:~/php% wget "http://pl.php.net/get/php-5.2.14.tar.gz/from/this/mirror"
...
soft@hydra:~/php% gtar -zxf php-5.2.14.tar.gz

Correct version numbers in script (use sed):

soft@hydra:~/php% gsed "s/5.2.12/5.2.14/g" drf_php-5.2.12_conf > drf_php-5.2.14_conf
soft@hydra:~/php% chmod 754 !$
chmod 754 drf_php-5.2.14_conf

Check and correct path to apxs if needed:

soft@hydra:~/php% vi drf_php-5.2.14_conf

Instalacja systemu pocztowego na Ubuntu

Zakładam, że system jest zainstalowany i posiada podstawową konfigurację z uruchomioną usługą SSH. Po zalogowaniu przystępujemy do instalacji pakietu dovecot-postfix, który opisany jest jako w pełni funkcjonalny serwer pocztowy:

drfugazi@charr:~% sudo aptitude install dovecot-postfix
[sudo] password for drfugazi:
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Odczyt informacji o stanie... Gotowe
Reading extended state information
Initializing package states... Gotowe
The following NEW packages will be installed:
  dovecot-common{a} dovecot-imapd{a} dovecot-pop3d{a} dovecot-postfix
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 7957kB of archives. After unpacking 15,1MB will be used.
Do you want to continue? [Y/n/?] y
...
Konfigurowanie dovecot-common (1:1.2.9-1ubuntu6.1) ...
Creating config file /etc/dovecot/dovecot.conf with new version
Creating config file /etc/dovecot/dovecot-ldap.conf with new version
Creating config file /etc/dovecot/dovecot-sql.conf with new version

Sprawdzamy czy działa serwer Dovecot i czy da się połączyć do serwera IMAP z localhosta:

apache-2.2.17

The Apache HTTP Server Project is an effort to develop and maintain
an open-source HTTP server for modern operating systems including UNIX
and Windows NT. The goal of this project is to provide a secure,
efficient and extensible server that provides HTTP services in sync
with the current HTTP standards.

Apache httpd has been the most popular web server on the Internet since
April 1996, and celebrated its 15th birthday as a project this February.

The Apache HTTP Server („httpd”) is a project of The Apache Software Foundation.

php-5.2.14

root@hydra:~# su - soft
soft@hydra:~% cd php 
soft@hydra:~/php% wget "http://pl.php.net/get/php-5.2.14.tar.gz/from/this/mirror"
...
soft@hydra:~/php% gtar -zxf php-5.2.14.tar.gz
soft@hydra:~/php% gsed "s/5.2.12/5.2.14/g" drf_php-5.2.12_conf > drf_php-5.2.14_conf
soft@hydra:~/php% chmod 754 !$
chmod 754 drf_php-5.2.14_conf

Trzeba sprawdzić i ewentualnie poprawić ścieżkę do apxs

soft@hydra:~/php% vi drf_php-5.2.14_conf

Kompilacja przy użyciu skryptu (w załączniku)

apache-2.2.17

Projekt Apache HTTP Server, to przedsięwzięcie mające na celu rozwój i utrzymywanie serwera HTTP o otwartym kodzie, dla nowoczesnych systemów operacyjnych, takich jak UNIX czy Windows NT. Celem tego projektu jest dostarczenie bezpiecznego, wydajnego i skalowalnego serwera, który dostarcza usług zgodnych z aktualnymi standardami HTTP.

Apache httpd jest najbardziej popularnym serwerem stron www w Internecie od kwietnia 1996 roku i w lutym tego roku obchodził swoje 15-te urodziny jako projekt.