Author: drfugazi

Schema conversion – LDAP to LDIF

The power of directory service is possibility to define your own object classes, attributes, rules and so on. It also allows grouping it in schemas, which you can add to LDAP configuration.

As for now most of schemas, which you can find in Internet is organized into blocks, which contains definitions of attributes and object classes. This looks like:

attribute type definition:


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 )

Automatyczne usuwanie i tworzenie nowych snapshotów

Oto kolejny jednowierszowiec do usuwania starych i tworzenia nowych snapshotów. Już bez rozwodzenia się po co, jak i dlaczego tak. Można dopisać do crona.


# for a in `zfs list -t snapshot -H -o name`; do
    zfs destroy $a && zfs snapshot `echo $a|sed "s/@.*//"`@`date +%Y%m%d`;
done

Uwaga: Tworzony jest tylko jeden snapshot i tylko dla tych filesystemów, dla których były już utworzone wcześniej snapshoty, które zostaną najpierw usunięte.

Usuwanie starych i tworzenie nowych snapshotów ZFS

Niedawno pisałem o masowym tworzeniu snapshotów ZFS. Tam robiłem to rekursywnie dla całej puli używając zpool list -H i przekierowując wyjście do zfs snapshot -r. Tym razem zrobimy to inaczej.

Jeśli mamy stare snapshoty to możemy je wyświetlić poleceniem:


# zfs list -t snapshot
NAME                                   USED  AVAIL  REFER  MOUNTPOINT
dappserv@20101130                         0      -  28.0K  -
dappserv@20110107                         0      -  28.0K  -
dappserv/etc@20101130                 61.3K      -   382K  -
dappserv/etc@20110107                     0      -   382K  -
dappserv/var@20101130                  170M      -  2.03G  -
dappserv/var@20110107                 1.07M      -  2.15G  -
...

Installation of mail system on Ubuntu

I assume that you have installed system with basic configuration and SSH running. After login to system we can install dovecot-postfix package, which is described as fully functional mail server:

drfugazi@charr:~% sudo aptitude install dovecot-postfix
[sudo] password for drfugazi:
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
...
Configuring 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

Now we should check if Dovecot is running and we can connect to IMAP server on localhost:

Masowe snapshoty ZFS

ZFS to taki fajny filesystem, w którym szybko można zrobić migawkę (snapshot).

Na przykład mając ZFS o nazwie tank, robimy snapshot o nazwie snap1:


# zfs snapshot tank@snap1

Załatwione, operacja szybka i bezbolesna. Ale jak w systemie jest kilka zpool i na każdej kilka filesystemów ZFS to już trzeba by się trochę naklepać. Ja to załatwiam takim jednowierszowcem:


# for a in `zpool list -H -o name`; do zfs snapshot -r $a@20110109; done

Ta instrukcja spowoduje rekursywne utworzenie snapshotów dla wszystkich zpool w systemie, oczywiście ciąg 20110109 jest przykładowy i reprezentuje aktualną datę.

Instalacja skanera AV/AS do poczty

Instalacja skanowania Antywirusowego (AV) i Antyspamowego (AS) do systemu poczty

Przełączamy się na roota i insalujemy potrzebne oprogramowanie:


sudo -i
aptitude update
aptitude install amavisd-new
aptitude install clamav-daemon
aptitude install spamassassin

SpamAssassin jest domyślnie wyłączony, o czym nas informuje przy instalacji, aby go włączyć należy wyedytować plik /etc/default/spamassassin i ustawić:


vi /etc/default/spamassassin
ENABLED=1
CRON=1

Usuwanie poczty z kolejki

Czasem trzeba wyrzucić kilka maili z kolejki albo wykonać jakąś inną operację wymagającą złożenia kilku poleceń do kupy.

Dla starych wyjadaczy to żaden problem i pewnie zrobiliby to bardziej optymalnie, ale ja właśnie postanowiłem rozpocząć cykl pod tytułem “Jednowierszowce“, gdzie będę wrzucał jednowierszowe skrypty shellowe (i inne), które mam nadzieję będą przydatne i zrozumiałe dla szerszego grona użytkowników.

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