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
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)!
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:
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:
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ó:
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:
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.
Ha mindent jól csináltunk, akkor megjelenik gerzson felhasználónk:
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.
Leave a Reply