• email
  • facebook
  • linkedin
  • google+
  • pinteres

Teljes levelező környezet létrehozása Ubuntu Dapperen

Ez a leírás elavult, újabb változata megtalálható ezen a linken, amely Ubuntu 12.04-es telepítést mutat be.

A következő, több részből álló leírássorozat egy teljes körű levelező környezet kialakítását mutatja be Ubuntu 6.06 Dapper Drake szerveren. A cél, hogy egy komplett, virtuális felhasználókat kiszolgáló környezetet alakítsunk ki, amely munka során olyan alkalmazásokat használjunk, amelyek egymással jól kommunikálni képesek, és egyetlen közös adatbázist használnak a felhasználók azonosítására és beléptetésére. Így minden felhasználónak egyetlen azonosítója és jelszava lesz a különböző szolgáltatások eléréséhez.

A környezetet alapos megfontolások után a következő komponensekre építettem:

Adatbázis beállítások

Első lépés az adatbázis séma kialakítása, és a környezet konfigurálása. PostgreSQL adatbázis kezelőt választottam, mivel:

  • azt ismerem legjobban
  • mindegyik alkalmazás képes vele kommunikálni
  • az a legfejlettebb szabad adatbázis kezelő szerver

A szerverre a következő csomagok kerültek fel apt-get-tel:

  • postgresql-8.1 postgresql-client-8.1
    • vele jött: libpq4 postgresql-client-common postgresql-common

Illetve, hogy legyen pg_config parancs:

  • postgresql-server-dev-8.1
    • vele: libpq-dev libssl-dev zlib1g-dev

A telepítés után első lépésként az adatbázis elérésére vonatkozó jogosultságok beállítását ejtettem meg. Az adatbázist a következő felhasználók fogják használni (az elnevezések változók, mindenki helyettesítse be azt a karaktersorozatot, ami neki kedves), mindegyiknek engedélyeznünk kell az elérést a mail adatbázisra:

  • *ADMINUSER* -- webes admin felület az adatok manipulálásához
  • *POSTFIXUSER* -- Postfix levelező szerver
  • *SASLUSER* -- adatbázis felhasználó a SASL autentikációhoz
  • *DOVECOTUSER* -- Dovecot POP3 és IMAP szerver

Tehát a /etc/postgresql/8.1/main/pg_hba.conf fájlhoz a következő bejegyzéseket adjuk hozzá:

host   mail        *ADMINUSER*          127.0.0.1/32           md5
host   mail        *POSTFIXUSER*        127.0.0.1/32           md5
host   mail        *SASLUSER*           127.0.0.1/32           md5
host   mail        *DOVECOTUSER*        127.0.0.1/32           md5

Most következhet az adatbázis felhasználók és táblák létrehozása, illetve a jogosultságok definiálása.

$ psql -d template1 -U postgres

CREATE USER *ADMINUSER* PASSWORD '*ADMINPASS*';
CREATE USER *POSTFIXUSER* PASSWORD '*POSTFIXASS*';
CREATE USER *SASLUSER* PASSWORD '*SASLPASS*';
CREATE USER *DOVECOTUSER* PASSWORD '*DOVECOTPASS*';

CREATE DATABASE mail OWNER *ADMINUSER*;

\c mail

CREATE SEQUENCE uid_seq;

CREATE TABLE domains (
  id SERIAL PRIMARY KEY,
  domain TEXT NOT NULL UNIQUE,
  description TEXT,
  transport TEXT NOT NULL DEFAULT 'virtual:',
  backupmx BOOLEAN NOT NULL DEFAULT FALSE,
  created TIMESTAMPTZ NOT NULL DEFAULT now(),
  modified TIMESTAMPTZ NOT NULL DEFAULT now(),
  active BOOLEAN NOT NULL DEFAULT TRUE
);

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email TEXT NOT NULL UNIQUE,
  password TEXT NOT NULL,
  fullname TEXT,
  maildir TEXT NOT NULL,
  uid INT NOT NULL DEFAULT nextval('uid_seq') UNIQUE,
  gid INT NOT NULL DEFAULT 10000,
  created TIMESTAMPTZ NOT NULL DEFAULT now(),
  modified TIMESTAMPTZ NOT NULL DEFAULT now(),
  imap_allowed BOOLEAN NOT NULL DEFAULT FALSE,
  -- smtp_disabled CHAR NULL NULL DEFAULT '1',
  active BOOLEAN NOT NULL DEFAULT TRUE,
  homedir TEXT NOT NULL DEFAULT 'virtual'
);

CREATE TABLE aliases (
  id SERIAL PRIMARY KEY,
  email TEXT NOT NULL UNIQUE,
  destination TEXT NOT NULL,
  created TIMESTAMPTZ NOT NULL DEFAULT now(),
  modified TIMESTAMPTZ NOT NULL DEFAULT now(),
  active BOOLEAN NOT NULL DEFAULT TRUE
);

ALTER TABLE domains OWNER TO *ADMINUSER*;
ALTER TABLE users OWNER TO *ADMINUSER*;
ALTER TABLE aliases OWNER TO *ADMINUSER*;
ALTER TABLE uid_seq OWNER TO *ADMINUSER*;

GRANT SELECT ON users TO *SASLUSER*, *DOVECOTUSER*;
GRANT SELECT ON domains, aliases, users TO *POSTFIXUSER*;

Néhány megjegyzés a fentiekről:

  1. A felhasználók és az adatbázis létrehozása után egy SEQUENCE-et definiáltunk a felhasználói UID-eknek, hogy ne kelljen majd kézzel állítgatni.
  2. Utána következik a domains, a users és az aliases tábla létrehozása. A users táblában szereplő UID lesz az, amit majd az imént definiált sorozatból nyerünk. Ugyanezen táblában látható egy kikommentezett sor. Ez azt adta volna meg, hogy az adott felhasználónak van-e SMTP jogosultsága. Sajnos az ezt érteni képes autentikáicós modul a SASL-ban elszáll, így ezt nem tudjuk majd használni, ezért vettem ki végül.
  3. Legvégül jön a jogosultságok beállítása.

A második részben a Postfix beállításaival foglalkozunk.


Pár hasznos link, források (félek, közel sem az összes, amiből merítettem):