Uncategorized

Postfix + LDAP + ldapbrowser + IMAP + webmail ArchLinux-on

Ez a blog ahhoz ad segítséget, hogyan lehet egy minimális adminisztrációs igényű levelezőkiszolgálót építeni, amelyik LDAP címtárban tárolja a felhasználó adatait. A megoldáshoz az ArchLinux disztribúciót választottam.

Telepítsük először az openldap csomagot!

pacman -S openldap
groupadd ldap
useradd -g ldap -d /none -s /bin/false ldap

/etc/rc.d/slapd:

SLAPD_OPTIONS="-u ldap -g ldap -4"
SLURPD_START="auto"
SLURPD_OPTIONS=""

chgrp ldap /etc/openldap/slapd.conf
chmod 640 /etc/openldap/slapd.conf

Generáljunk egy erős jelszót az LDAP menedzser számára:

slappasswd

Szerkesszük a slapd.conf-ot (Szükségünk lesz még a qmail.schema nevű sémára. Tőlem egy módosított verziót tölthetsz le)!

/etc/openldap/slapd.conf:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/qmail.schema

pidfile   /var/lib/openldap/slapd.pid
argsfile  /var/lib/openldap/slapd.args

database      bdb
suffix           "dc=aaaa,dc=fu"
rootdn          "cn=Manager,dc=aaaa,dc=fu"

rootpw          {SSHA}KzyLGC4ynKtqy9ppuV7R9eZjvM96E8S5
directory       /var/lib/openldap/openldap-data

index   objectClass     eq

Az alapértelmezett DB_CONFIG fájlt bemásoltam az openldap adatkönyvtárába:
cd /var/lib/openldap/openldap-data
mv DB_CONFIG.example DB_CONFIG

chown -R ldap:ldap /var/lib/openldap

Végül indítsuk el a slapd-t!

/etc/rc.d/slapd start

Ha minden jól ment, akkor a 389/tcp porton elérhető az openldap szerverünk:

tcp     0    0 0.0.0.0:389     0.0.0.0:*     LISTEN

Már csak arra van szükség, hogy a /etc/hosts.allow fájlban megmondjuk, hogy ki csatlakozhat az LDAP kiszolgálónkoz. Vegyük fel a localhost-ot, ill. annak az IP-címét, aki a felhasználókat fogja majd kezelni:

/etc/hosts.allow:

slapd: 127.0.0.1 1.2.3.4 : ALLOW

Telepítsük a postfix csomagot!

pacman -S postfix

Mivel virtuális felhasználókat veszünk majd fel, hozzunk létre nekik egy könyvtárat:

groupadd vmail
useradd -g vmail -d /var/vmail -s /bin/false vmail
mkdir ~vmail
chown vmail:vmail ~vmail/

Szerkesszük a main.cf fájlt:

/etc/postfix/main.cf:

alias_database = $alias_maps
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
html_directory = no
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/man
myhostname = mail.bbbb.fu
mynetworks = 1.2.3.0/24, 127.0.0.0/8
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix/sample
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
virtual_gid_maps = static:102
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = mail.aaaa.fu
virtual_mailbox_maps = ldap:/etc/postfix/ldap-virtual.cf
virtual_uid_maps = static:1002

Indítsuk el a postfix-et is:

/etc/rc.d/postfix start

Telepítsük a dovecot IMAP szervert!

Mivel az archlinux-ban elérhető dovecot csomag nem tartalmaz ldap támogatást, ezért fordítsuk le mi magunk a dovecot-ot.

wget http://www.dovecot.org/releases/1.0/dovecot-1.0.13.tar.gz
tar zxvf dovecot-1.0.13.tar.gz
cd dovecot-1.0.13
./configure --disable-ipv6 --with-ldap

Szükségünk lesz még az alábbi csomagokra is a fordításhoz:

pacman -S make gcc bison flex

Majd folytassuk a telepítést:

make
su -c "make install"

Szerkesszük ezután a dovecot.conf-ot:

/usr/local/etc/dovecot.conf:

base_dir = /var/run/dovecot/
protocols = imap
ssl_disable = yes
verbose_proctitle = yes
first_valid_uid = 1002
last_valid_uid = 1002
first_valid_gid = 102
last_valid_gid = 102
valid_chroot_dirs = /var/vmail
maildir_copy_with_hardlinks = yes
disable_plaintext_auth = yes

protocol imap {
     listen = 127.0.0.1:143
     ssl_listen = 127.0.0.1:943
}

auth_verbose = yes

auth default {
  mechanisms = plain
  #user = dovecot-auth
  passdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }
  userdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }
}

Hozzunk létre egy felhasználót a dovecot számára, majd indítsuk el:

groupadd dovecot
useradd -g dovecot -d /none -s /bin/false dovecot
/usr/local/sbin/dovecot

Telepítsünk apache-ot és php-t!

pacman -S apache php

Kapcsoljuk be az ldap és imap támogatást, amihez csak annyi kell, hogy töröljük a komment jelet a két modul hivatkozásáról:

/etc/php/php.ini:

extension=imap.so
extension=ldap.so

Az apache alapértelmezett konfigja is rögtön használható, ha kikommentezzük a unique_id_module-t és engedélyezzük a mod_php5-t:

/etc/httpd/conf/httpd.conf:

#LoadModule unique_id_module        modules/mod_unique_id.so
LoadModule php5_module             modules/libphp5.so

Ezután már indítható is az apache:

/etc/rc.d/httpd start

Telepítsünk a squirrelmail nevű webmail programot!

Az archlinux default apache konfigjában a DocumentRoot a /home/httpd/html alatt van (- lehet, hogy ezt egy ügyesebb helyre akarjuk majd tenni), ezért lépjünk abba a könyvtárba:

cd /home/httpd/html

Töltsük le a squirrelmail legfrissebb verzióját. Ezután csomagoljuk ki, és konfiguráljuk:

tar zxvf squirrelmail-1.4.13.tar.gz
cd squirrelmail-1.4.13
config/conf.pl

Állítsuk be
– az “Organization Preferences” (1) menüben a “Provider name” és “Provider link” változókat (7) és (8)
– a “Server Settings” (2) menüben az IMAP szerver típusát (A): dovecot
– a “General Options” (4) menüben a “Data Directory” (1) és az “Attachment Directory” (2) paramétereket: /home/httpd/sm/data ill. /home/httpd/sm/attach

Végül mentsük el a beállításokat, ill. hozzuk létre a beállított adat és melléklet könyvtárakat:

mkdir -p /home/httpd/sm/data
mkdir /home/httpd/sm/attach
chown -R nobody:nobody /home/httpd/sm

Telepítsük az ldapbrowser nevű LDAP menedzselő programot!

Most, hogy a nehezén túl vagyunk, és működik a csillogó LDAP címtár alapú levelező rendszerünk, már csak egy lépés választ el minket attól, hogy hátra dőlhessünk: a (virtuális) felhasználók kezelését rá kell bízzuk egy lelkes, de nem feltétlen túlképzett személyre. Vagy gyorsra.

Ehhez csak annyi kell, hogy telepítsünk a gépére egy (lehetőleg) grafikus felületű, kattintgatós programot, amivel felhasználókat tud felvenni a rendszerbe. A választásom azért esett az ldapbrowser-re, mert Java alapú, így bármilyen gépen (még vindózén is) elfut, ahol van Java futtató környezet, azaz JRE (vagy JDK). További előnye, hogy támogatja az SSL alapú LDAP kapcsolatokat is.

A program a http://www-unix.mcs.anl.gov/~gawor/ldap/download.html címről tölthető le. Csak ki kell csomagolni a letöltött fájlt, és máris használható a program. Töltsük le a templates.config ill. a qmailUser.template fájlokat, és másoljuk be a templates könyvtárba.

A programot elindítva hozzunk létre egy kapcsolatot, amint az az alábbi ábrán látható:

uj kapcsolat letrehozasa

Készítettem egy o=szamlazas
nevű szervezeti egységet. Nem kötelező, de jobbnak tartom, ha nem ömlesztjük a felhasználókat a dc=aaaa,dc=fu alá közvetlenül. Ezt megtehetjük a users.ldif importálásával, amely tartalmaz egy joska@mail.aaaa.fu című felhasználót is (csak a példa kedvéért).

Ha sikerült az importálás, akkor az alábbihoz hasonló eredményt kapunk:

importalas utan

Ha új felhasználót akarunk felvenni, akkor jelöljük ki az “o=szamlazas” konténert, majd kattintsunk az Edit, Add Entry, qmailUser menüpontokra. Töltsük ki a megjelenő ablakot az alábbihoz hasonlóan. A userPassword mezőnél csak gépeljük be az ún. “clear-text” jelszót, majd a “Set” gombra kattintva írjuk be mégegyszer, és a program előállítja az ábrán is látható kódolt verziót.

uj felhasznalo

Ha mindent jól csináltunk, akkor megjelenik gerzson felhasználónk:

gerzson, az uj felhasznalo

Ha pedig küldünk Gerzsonnak egy levelet, akkor azt meg is fogja kapni, ha gerzson néven bejelentkezik a squirrelmail-be.

Záró gondolatok

Ez a leírás az elinduláshoz ad segítséget, hogy kialakítsunk egy használható és működő rendszert. Azonban több mindent optimalizálni lehet a hatékonyabb működés érdekében, amelyek különösen nagyobb rendszernél lehetnek érdekesek:

– indexelni lehet pl. a maildrop attribútumot, és finomhangolni lehet az openldap adatbázisát, ill. replikációt is beállíthatunk. Érdemes még időnkét snapshot-okat készíteni az LDAP adatbázisról. Jól szokott jönni, ha nagyon kell.
– a postfix-hez vírus- és spamszűrés is adható
– az apache, a php és a squirrelmail számtalan beállítási lehetőséggel rendelkezik, amelyeket érdemes alaposabban megnézni
– stb.