Levelezőszerver telepítése - a Dovecot beállítása

A levelezőszerver következő fontos összetevője a Dovecot szerver, amely lehetővé teszi a felhasználók számára postafiókjaik és az abban található leveleik elérését. A Dovecot emellett biztosítja a postafiókok méretének kordában tartását, valamint a szerver oldali levélszűrés képességét is. Ráadásként pedig a Postfix számára biztosítja a felhasználók hitelesítését, valamint a Postfix által átvett levelek helyi kézbesítését is.

Nem egyszerű és magától értetődő egy ilyen sok képességgel rendelkező szerver beállítása, így a sorozat ezen részében ezeket a beállításokat fogjuk részletesen megismerni.

A Dovecot minden egyes beállítási lehetősége rendkívül gazdagon dokumentált a projekt weboldalán, így azokon a beállításokon kívül, amit a következő oldalakon áttekintünk, érdemes rendszeresen a weboldalon is tájékozódni a folyamatosan bővülő lehetőségek leírásai között.

Vagyis a dokumentáció elmélyült tanulmányozását most sem fogod tudni kikerülni. :-)

A Dovecot konfigurációs fájljai a /etc/dovecot mappában találhatóak, egy nagyon jól szétválogatott mappa- és fájlrendszerben. Az egyes beállítások helyei a legtöbb esetben a fájlok nevéből már logikusan következnek, így minden beállítást a neki megfelelő helyen tudsz elhelyezni.

Alapvető beállítások

A fő beállító fájl a dovecot.conf, a többi fájl – kettő kivételével - a conf.d mappában található. Első lépésként nézzük meg a dovecot.conf tartalmát, amely a Dovecot alapvető beállításait tartalmazza.

1. !include_try /usr/share/dovecot/protocols.d/*.protocol
2. base_dir = /var/run/dovecot/
3. instance_name = dovecot
4. login_greeting = Dovecot ready.
5. shutdown_clients = yes
6. dict {
7.	quota_dict = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
8. }
9. !include conf.d/*.conf
10. !include_try local.conf

 

1. !include_try /usr/share/dovecot/protocols.d/*.protocol

Az első sor a támogatott protokollok közé felveszi azokat is, amelyeket menet közben adunk hozzá a Dovecot szerverünkhöz. Amikor egy újabb protokoll kezelésével egészítjük ki a telepítést, a /usr/share/dovecot/protocols.d mappában elhelyezésre kerül egy új fájl, amely gondoskodik ennek az új protokollnak az automatikus használatba vételéről. Ugyanekkor a /etc/dovecot/conf.d mappában is megjelenik egy vagy több új konfigurációs fájl is, amely erre az újonnan hozzáadott protokollra vonatkozik. Általánosságban elmondható, hogy az egyes konfigurációs fájlok alapértelmezett értékei a legtöbb esetben megfelelőek lesznek számunkra, de természetesen bármikor módosíthatunk is ezeken a beállításokon.

2. base_dir = /var/run/dovecot/

A base_dir a Dovecot futásidejű adatait tartalmazza.

3. instance_name = dovecot

A futó Dovecot példány alapértelmezett nevét határozza meg. Mivel mi nem futtatunk több Dovecot példányt ezen a szerveren, ezért ennek részleteibe most nem megyünk bele.

4. login_greeting = Dovecot ready.

A kliensek felé megjelenített üdvözlő üzenet.

5. shutdown_clients = yes

Ha a Dovecot fő folyamatát leállítjuk, valamennyi hozzá tartozó folyamat is kerüljön leállításra.

6. dict {
7.	quota_dict = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
8. }

Egy quota_dict elnevezésű szótárat határoz meg, amelynek segítségével az egyes postafiókokhoz tartozó kvóta adatokat tudjuk kikeresni. A hivatkozott fájl tartalmazza a MySQL adatbázishoz való kapcsolódás szükséges paramétereit, és azokat a tábla- és mezőneveket, amelyekben a kvótaadatok megtalálhatóak. A szótárak – dictionary - kulcs=érték felépítésű listák tárolására szolgálnak, amelyeket a Dovecot pluginek előszeretettel használnak fel feladataik végrehajtásához.

9. !include conf.d/*.conf

A conf.d mappában található azon konfigurációs fájlok betöltése, amelyek .conf kiterjesztéssel rendelkeznek.

10. !include_try local.conf

Próbálja meg betölteni a local.conf fájlt, de ne essen kétségbe (ne küldjön hibaüzenetet), ha mégsem talál ilyet. A dovecot.conf fájl önmagában is nagyon részletesen dokumentált, de a könnyebb érthetőség és az átláthatóság kedvéért kiemeltem belőle a lényeget, a többi részét pedig kitöröltem. Ha később mégis szükséged lenne az eredeti változatra, megtalálod azt a /usr/share/dovecot mappában.

LDA - helyi levélkézbesítő ügynök

A Postfix a jelenlegi telepítésben csak átveszi a leveleket a 25-ös porton, de a felhasználók postafiókjába már nem továbbítja azokat. Erre a célra a Dovecot LDA-t használjuk, mivel így:

  1. a kvótaadatok naprakészen tartása könnyedén megoldható,
  2. valamint a szerver oldali levélszűrést is meg tudjuk valósítani.

Ennek érdekében a Postfixnek szorosan együtt kell működnie a Dovecot LDA-val, amelyet az alábbi módon érhetünk el:

A Postfix main.cf fájljában szükség lesz két sorra:

dovecot_destination_recipient_limit = 1
virtual_transport = dovecot

Illetve, szintén a Postfix master.cf fájljában rögzítenünk kell a Dovecot LDA szolgáltatását:

dovecot unix	-	n	n	-	-	pipe
	flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

Ettől a pillanattól kezdve a Postfix a Dovecot LDA részére ad át minden helyben kézbesítendő levelet.

Az LDA beállításait a /etc/dovecot/conf.d/15-lda.conf tartalmazza:

protocol lda {
	mail_plugins = $mail_plugins quota sieve
}

Az egyetlen, amit muszáj kommentek nélkül szerepeltetni, az a fenti szekció, amelynek segítségével tudatjuk az LDA-val, hogy itt bizony a kvóta és sieve pluginek működésére is oda kell figyelnie. A fájl többi beállításának alapértelmezett értékei megfelelőek a számunkra.

A felhasználók hitelesítése

A hitelesítés két részből áll. A Dovecot egyrészt önmaga számára hitelesíti a kapcsolódó felhasználókat, másrészt pedig a Postfix számára is elvégzi ugyanezt a feladatot, amikor a felhasználók leveleket küldenek a Postfixen keresztül. A felhasználói hitelesítés beállításainak egy része a 10-master.conf fájlban található, ahol meghatározunk egy auth nevű szolgáltatást:

...
service auth {
	unix_listener auth-userdb {
		mode = 0660
		user = vmail
		group = vmail
	}
	# Postfix SMTP-auth:
	unix_listener /var/spool/postfix/private/auth {
		mode = 0660
		user = postfix
		group = postfix
	}
	user =
	group =
}
...

Két unix_listener sort találunk: az első meghatároz egy auth-userdb socket fájlt a /var/run/dovecot mappában, amelyet például az imap-login szolgáltatás használ a kapcsolódó IMAP kliensek hitelesítéséhez (lásd a következő oldalon).

A másik unix_listener sor a Postfix számára teszi lehetővé a kapcsolódó felhasználók Dovecot által történő hitelesítését a /var/spool/postfix/private/auth socket fájlon keresztül. A sockethez a postfix nevű felhasználó és csoport fér hozzá, más nem.

Ugyanebben a fájlban meg kell határozunk egy auth-worker nevű szolgáltatást is:

...
service auth-worker {
	user = $default_internal_user
}
...

Az auth szolgáltatás több auth-worker szolgáltatáshoz kapcsolódik a hitelesítési folyamat elvégézése során. Jelen esetben a felhasználók kikeresését a MySQL adatbázisból (a lekérdezések futtatását) az auth-worker szolgáltatás végzi el. Mivel most nem az alapértelmezett PAM hitelesítési módot használjuk (amelynek gyakran bele kell olvasnia például a /etc/shadow fájlba is), így nincs szükség arra, hogy a szolgáltatást a root felhasználó nevében futtassuk. Ebben az esetben a $default_internal_user az ajánlott beállítás.

A felhasználói hitelesítés további beállításai a 10-auth.conf fájlban találhatóak:

disable_plaintext_auth = yes
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_username_format = %Lu
auth_worker_max_count = 30
auth_failure_delay = 2 secs
auth_ssl_require_client_cert = no
auth_mechanisms = plain login

!include auth-sql.conf.ext

A fontosabb beállítások az alábbiak:

disable_plaintext_auth = yes

Azaz nem támogatjuk a titkosítatlan jelszóküldést a hitelesítési folyamat során, csak akkor, ha a kapcsolat maga titkosított csatornán épül fel (SSL/TLS).

auth_username_chars

A hitelesítés során a felhasználói névben csak az itt megadott karaktereket fogadjuk el.

auth_username_format

Mielőtt kikeresnénk a felhasználói nevet (jelen esetben a MySQL adatbázisból), végezze el azon az itt megadott formázást. A %Lu jelentése: konvertálás kisbetűs formátumba.

auth_worker_max_count

Az egyszerre futó auth-worker folyamatok maximális száma.

auth_mechanisms

A felhasznált hitelesítési mechanizmusok listája. A plain mechanizmus szerint a kliens titkosítatlan formában küldi el a jelszót a szervernek. A login mechanizmus szintén titkosítatlan módon küldi el a felhasználói nevet és a jelszót a hálózaton keresztül, és azért van rá szükség, hogy az Outlook klienseket rávegyük arra, hogy az SMTP párbeszéd során el tudják küldeni a felhasználói nevet és jelszót is (ne felejtsd el, hogy a levelek küldésénél nem a Postfix, hanem a Dovecot hitelesíti a levelet küldeni próbáló felhasználókat). A login mechanizmus nélkül tehát a Microsoft levelezőkliensei nem lesznek képesek felhasználói hitelesítés mellett levelet küldeni a szerverünk segítségével!

!include auth-sql.conf.ext

A hitelesítési beállítások teljessé tételéhez vegyük be a csapatba az auth-sql.conf.ext fájlt is. Nézzük meg, itt mit találunk:

passdb {
	driver = sql
	args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
	driver = sql
	args = /etc/dovecot/dovecot-sql.conf.ext
}

Vagyis, meghatározzuk azokat az adatbázisokat (passdb és userdb), amelyből a felhasználói nevet és jelszót vissza lehet keresni. Mindkettő egy SQL adatbázisban található (driver = sql), a paraméterként átadott fájl pedig azt a konkrét lekérdezést tartalmazza, amelyet végre kell hajtanunk annak érdekében, hogy a MySQL adatbázisból kikeressük a kérdéses felhasználót és a hozzá tartozó jelszót is.

A dovecot-sql.conf.ext fájl tartalma ennek alapján:

driver = mysql
connect = dbname=postfix user=postfix host=127.0.0.1 password=Pa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active ='1'
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active ='1'

A kapcsolódási adatok és az SQL lekérdezések tartalma önmagáért beszél. Az is látható, hogy a levelező kliensek nem a jelszót küldik el a hitelesítés során, hanem annak az MD5 algoritmus szerinti hash értékét (default_pass_scheme = MD5-CRYPT). Természetesen ehhez arra van szükség, hogy a MySQL adatbázisban se a jelszavak legyenek eltárolva, hanem szintén az MD5 algoritmus szerinti hash értékeik. Így a hitelesítés során valójában nem két jelszó, hanem két hash érték kerül összehasonlításra egymással.

A user_query sorban pedig megfigyelhető a kvóta adatok lekérdezése is.

IMAP szolgáltatás

A szolgáltatás bekapcsolásához telepítenünk kell a dovecot-imapd csomagot, majd a megfelelő fájlokban el kell végezni a szükséges módosításokat. Nézzük csak szépen sorjában.

A 10-master.conf fájlban az alábbi blokkok szükségesek:

service imap-login {
	inet_listener imap {
		port = 143
	}
	inet_listener imaps {
		port = 993
		ssl = yes
	}
	service_count = 1
	process_min_avail = 0
}
...
service imap { process_limit = 1024 }

A service imap-login blokk, amint azt a neve is mutatja, az IMAP szolgáltatás bejelentkezés részéért felelős. Ehhez meghatározunk két listenert is. Az első a 143-as porton várja a bejövő kapcsolatokat, és a titkosítatlan – cleartext - IMAP kapcsolatokat fogja kezelni. A második a titkosított – IMAPS – kapcsolatok kezeléséért felelős, és a 993-as porton várja a kapcsolódó felhasználókat. Az ssl=yes gondoskodik arról, hogy a kapcsolódás után megtörténjen az SSL/TLS handshake, azaz a titkosított kapcsolat felépítéséhez szükséges párbeszéd, „kézfogás”.

A service_count = 1 gondoskodik arról, hogy mindegyik bejövő kapcsolathoz külön-külön imap-login folyamat induljon el. Ez ugyan nagyon biztonságos megoldás, azonban nagy forgalmú szervereknél lehet, hogy célszerűbb ezt az értéket nullára állítani, amely beállítás a sebesség oltárán áldoz fel valamennyit a biztonságból (ilyenkor egy imap-login folyamat több kapcsolódó felhasználót is kiszolgál).

Másrészt figyelj arra is, hogy az imap-login szolgáltatás process_limit értéke a default_process_limit értékére, 100-ra van állítva, és ha service_count=1, akkor egyszerre csak 100 felhasználó tud kapcsolódni az imap-login szolgáltatáshoz. Ha ezen változtatni szeretnél, akkor az imap-login blokkhoz add hozzá a process_limit = érték sort, ahol az érték helyére az egyszerre maximálisan kiszolgálni kívánt felhasználók számát írd. Nekünk az alapértelmezett 100 egyelőre tökéletesen megfelelő.

A process_min_avail segítségével megadhatjuk, hogy hány tartalék imap-login folyamatunk álljon készenlétben, új felhasználók bejelentkezésére várva. Ezzel pedig a felhasználóid számára tudod a kapcsolódáshoz szükséges időt rövidebbre állítani (és mint tudjuk, a felhasználóknak soha semmi sem elég gyors).

service imap {
	process_limit = 1024
}

Míg az imap-login szolgáltatás a felhasználók bejelentkezéséért felel, az itt definiált „sima” imap nevű service, szolgáltatás pedig a bejelentkezés során a felhasználókkal felépülő IMAP kapcsolat fenntartásáért felelős. A process_limit = 1024 beállítás a párhozamos IMAP kapcsolatok számát maximalizálja a beállított értékre. A 20-imap.conf fájl tartalma a következő:

imap_max_line_length = 64k
imap_logout_format = in=%i out=%o
imap_capability =
imap_idle_notify_interval = 2 mins
imap_id_send =
imap_id_log =
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags
imap_urlauth_host =

protocol imap {
	mail_plugins = $mail_plugins imap_quota
	mail_max_userip_connections = 10
}

A legfontosabb beállítások az alábbiak:

imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags

Az IMAP kliensek, azaz levelezőprogramok ismert hibáira megoldást kínáló szerver oldali beállítások. Talán furcsának tűnik, hogy egy levelezőkliens ismert hibáját szerver oldalon próbáljuk meg orvosolni, de ez még mindig jobb, mintha a felhasználóid a levelezőprogramjaik hibás működése miatt állandóan Neked panaszkodnának, nem igaz? A protocol imap blokkban található mail_plugins sorban tudatjuk az IMAP szolgáltatással, hogy ügyeljen a kvóta beállításokra. A mail_max_userip_connections sor azt mondja meg, hogy egy felhasználó ugyanarról az IP címről hány párhuzamos kapcsolatot nyithat az IMAP szolgáltatáshoz.

POP3 szolgáltatás

A szolgáltatás bekapcsolásához telepítenünk kell a dovecot-pop3d csomagot, majd a megfelelő fájlokban most is el kell végezni a szükséges módosításokat. A 10-master.conf fájlban az alábbi blokkok szükségesek:

service pop3-login {
	inet_listener pop3 {
		port = 110
	}
	inet_listener pop3s {
		port = 995
		ssl = yes
	}
}
...
service pop3 {
	process_limit = 1024
}

A beállítások nagyon hasonlóak az IMAP szolgáltatásnál már megtanultakkal, így ezeket nem ismétlem meg még egyszer. A 20-pop3.conf fájl tartalma:

pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
protocol pop3 {
	mail_plugins = $mail_plugins quota
}

Az első sor hasonló, a levelező kliensek különc viselkedését toleráló beállításokat tartalmaz, mint az IMAP szolgáltatás hasonló része. A protocol pop3 blokkban pedig itt is jelezzük a kvóta adatok felhasználásának fontosságát.

Postafiókok és névterek

A postaládákra vonatkozó általános beállításokat a 10-mail.conf fájl tartalmazza:

mail_location = maildir:/srv/mail/vmail/%d/%n
mail_home = /srv/mail/sieve/%d/%n

namespace inbox {
	type = private
	separator =
	prefix =
	location =
	inbox = yes
	hidden = no
	list = yes
	subscriptions = yes
}

mail_shared_explicit_inbox = no
mail_uid = vmail
mail_gid = vmail
mail_full_filesystem_access = no

first_valid_uid = 5000
last_valid_uid = 5000

first_valid_gid = 5000
last_valid_gid = 5000

auth_socket_path = /var/run/dovecot/auth-userdb
mail_plugin_dir = /usr/lib/dovecot/modules
mail_plugins = $mail_plugins quota

A mail_location paraméter meghatározza a bejövő levelek helyét a szerver fájlrendszerében. A %d paraméter a levelezési tartományt reprezentálja, a %n pedig a postafiók nevét. Azaz a bolemanyi.attila@comega7.local e-mail cím esetén a %d=comega7.local és a %n=bolemanyi.attila lesz. A nekem szóló levelek így a /srv/mail/vmail/comega7.local/bolemanyi.attila mappában lesznek eltárolva, maildir formátumban.

A mail_home paraméter a sieve szkriptek helyét határozza meg a szerver fájlrendszerében. A %d és %n paraméterek jelentése ugyanaz, mint amit a mail_location beállításánál láttunk.

A namespace blokkban a postaládáink névtereinek tulajdonságait tudjuk beállítani. Egyetlen névteret határozunk meg, amely az inbox nevet viseli, a típusa private (az ebben a névtérben létrehozott postafiókok a felhasználók személyes leveleit fogják tartalmazni), és ez a névtér rendelkezik a felhasználók INBOX mappájával (mivel most ezt az egyetlen névteret hozzuk létre, ez nem is kérdés), illetve a névtér kezelheti a saját előfizetéseit (subscriptions) is.

A névterek a fent létrehozott private típus mellett lehetnek shared (megosztott) és public (nyilvános) típusúak is, de ebbe itt most nem megyünk bele részletesen. A fenti beállítás egy alaprendszer esetében tökéletesen megfelelő, ha ennél többre lesz szükséged, akkor irány a Dovecot dokumentáció!

A mail_uid és a mail_gid azt a linux rendszerben létező felhasználót és csoportot jelenti (jelen esetben vmail), aki hozzáférhet fájlrendszer szinten a levelezési mappákhoz és a benne tárolt fájlokhoz, azaz levelekhez.

A first/last valid uid/gid paraméterek azoknak a linux rendszerben létező felhasználóknak és csoportoknak az azonosítószám-határait adják meg, akik hozzáférhetnek a levelekhez. Mivel jelen esetben minden levél a vmail felhasználó és a vmail csoport tulajdonában van, így ezeket az értékeket egységesen a vmail felhasználó és csoport azonosítószámára állítottuk be (5000).

Az auth_socket_path paraméter megadja azt a unix socket fájlt, amelynek segítségével hozzáférhetünk a felhasználók adatbázisához. Ezt a fájlt az IMAP (megosztott felhasználók esetén) és az LDA szolgáltatások használják.

A mail_plugin_dir mappa a Dovecot pluginek fájlrendszerbeli lakóhelyét adja meg, a mail_plugins paraméter pedig a valamennyi szolgáltatás számára betöltendő plugineket sorolja fel. Az egyes szolgáltatások számára specifikusan szükséges plugineket a szolgáltatások saját konfigurációs fájljában kell engedélyezni.

A postafiókok beállításai

A postafiókok beállításai a 15-mailboxes.conf fájlban találhatóak:

namespace inbox {
	mailbox Drafts {
		special_use = \Drafts
		auto = subscribe
	}
	mailbox Junk {
		special_use = \Junk
		auto = subscribe
	}
	mailbox Trash {
		special_use = \Trash
		auto = subscribe
	}
	mailbox Sent {
		special_use = \Sent
		auto = subscribe
	}
	mailbox "Sent Messages" {
		special_use = \Sent
		auto = no
	}
}

Az előzőekben már meghatározott inbox névtérben elhelyezkedő postaládák tulajdonságait határozzuk meg. Beállítunk négy alapértelmezett levelezési mappát Drafts (Piszkozatok), Junk (Levélszemét), Trash (Törölt elemek) és Sent valamint Sent Messages néven (Elküldött elemek), és automatikusan fel is iratkoztatjuk ezekre a mappákra a postafiókok tulajdonosait.

Ennek pedig az az eredménye, hogy amint egy felhasználó megkapja első levelét, a postafiókja is elkészül az inbox névtérben a fenti levelezési mappákkal együtt. Így ennek a munkának a terhét levehetjük a Roundcube levelezőprogramról (is). Az első levél pedig garantáltan elkészül akkor, amikor a PostfixAdmin alkalmazással létrehozzuk a postafiókot egy adott felhasználó részére.

A Roundcube pedig duplán fog örülni a fenti levelezési mappáknak, ugyanis pontosan ugyanilyen néven várja azt a négy alapértelmezett mappát, amelyeknek neveit a felhasználó részére már az ő anyanyelvén fogja tudni megjeleníteni. Így jelenik meg automatikusan számunkra is ez a négy mappa Piszkozatok, Kéretlen, Kuka és Küldöttek néven.

A kvótarendszer beállítása

A kvóta egy Dovecot háttér(szolgáltatás), amely többféle módon is képes nyilvántartani a felhasználók postafiókjának méretét. Ha ez a méret meghalad egy előre beállított értéket, akkor a Dovecot LDA szolgáltatása nem kézbesíti a levelet, hanem értesíti feladóját arról, hogy a címzettnek nem tudja továbbítani a levelet, mivel a postafiók mérete meghaladja a megengedett értéket.

A kvótaadatok több helyről is származhatnak, például egy fájlrendszerből, de elhelyezhetjük ezeket egy megfelelően kialakított MySQL adatbázisban is. Esetünkben pedig pontosan erről van szó.

Első lépésként meg kell határozni egy szótár alapú szolgáltatást (jelen esetben dict néven), amelyet a 10-master.conf fájlban végzünk el:

service dict {
	unix_listener dict {
		mode = 0660
		user = vmail
		group = vmail
		}
}

Második lépésként a dovecot.conf fájlban meghatározunk egy quota_dict nevű szótárat, amelyet az előbb létrehozott dict nevű szolgáltatás fog felhasználni a kvóta adatok megfelelő kikereséséhez.

dict {
	quota_dict = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}

A szótár hivatkozik a dovecot-dict-sql.conf.ext fájlra, amelynek tartalma a következő:

connect = host=localhost dbname=postfix user=postfix password=Pa$$w0rd
map {
	pattern = priv/quota/storage
	table = quota2
	username_field = username
	value_field = bytes
}
map {
	pattern = priv/quota/messages
	table = quota2
	username_field = username
	value_field = messages
}

A szótár alapú kvóta háttérszolgáltatás alkalmas mind az üzenetek száma, mind pedig azok mérete szerinti kvóta beállítására is. Az adatok a quota2 táblában találhatóak, ahol a username mező tartalmazza az adott felhasználó bejelentkezési nevét, a bytes mező a kvóta méretét bájtokban, a messages mező pedig az üzenetek maximális számát.

Harmadik lépésként a 90-quota.conf fájlban élesítjük a kvótarendszert:

plugin {
	quota = dict:user::proxy::quota_dict
}

Azaz: a kvóta dictionary alapú háttérszolgáltatást használ (dict:), felhasználó alapú (user:), az aktuálisan bejelentkezett felhasználó neve alapján keres (:), egy szótár proxy folyamatot használ az SQL kapcsolódáshoz (proxy::), és a quota_dict nevű szótárat használja fel mindehhez, amelyet a dovecot.conf fájlban már korábban meghatároztunk.

A 10-mail.conf fájlban hozzáadjuk a használt pluginekhez a quota plugint

mail_plugins = $mail_plugins quota

A 20-imap.conf fájlban az imap-specifikus quota plugint szintén:

protocol imap {
	mail_plugins = $mail_plugins imap_quota
	mail_max_userip_connections = 10
}

A 20-pop3.conf fájlban is engedélyezzük:

protocol pop3 {
	mail_plugins = $mail_plugins quota
}

Végül a 15-lda.conf fájlban is:

protocol lda {
	mail_plugins = $mail_plugins quota
}

Szerver oldali üzenetszűrés

Ennek beüzemeléséhez először is szükség van a dovecot-sieve és a dovecot-managesieved csomagok telepítésére. A 15-lda.conf fájlt módosítanunk kell:

protocol lda {
	mail_plugins = $mail_plugins quota sieve
}

Látható, hogy a pluginek kiegészültek a sieve plugin bejegyzéssel. A 90-sieve.conf fájl tartalma pedig a következő:

plugin {
	sieve = /srv/mail/sieve/%d/%n/.dovecot.sieve
	sieve_dir = /srv/mail/sieve/%d/%n/sieve
}

A sieve sor a felhasználó sieve szkriptjeit tartalmazó fájl elérési útvonalát adja meg. Ez jelen esetben egy szimbolikus link a sieve_dir sor megadott mappájában található managesieve.sieve fájlra. És végül a 20-managesieve.conf fájl tartalma:

protocols = $protocols sieve
service managesieve-login {
	inet_listener sieve {
	port = 4190
	}
	service_count = 1
	process_min_avail = 0
	vsz_limit = 64M
}
service managesieve {
	process_limit = 1024
}
protocol sieve {
	managesieve_max_line_length = 65536
	mail_max_userip_connections = 10
	managesieve_logout_format = bytes=%i/%o
	managesieve_implementation_string = Dovecot Pigeonhole
	managesieve_max_compile_errors = 5
	log_path = /var/log/sieve.log
	info_log_path = /var/log/sieve.log
}

A protocols sorban felvesszük a sieve protokollt a Dovecot által futtatott szolgáltatások sorába. Definiálunk egy managesieve-login szolgáltatást is, amely a 4190-es porton várja a felhasználók bejelentkezését. Így azok a levelezőprogramok, amelyek támogatják a felhasználók sieve szkriptjeinek menedzselését, itt tudnak csatlakozni a managesieve szerver szolgáltatáshoz. A managesieve szolgáltatás a managesieve-login által hitelesített felhasználók kapcsolatának fenntartásáért felelős. A managesieve-login és managesieve szolgáltatások ugyanolyan paraméterekkel konfigurálhatóak, mint az imap-login és imap szolgáltatások. Lapozz vissza néhány oldalt! Utolsó lépséként pedig meghatározzuk a sieve protokoll tulajdonságait is, amelyek nagy részének értelmezése az eddigiek alapján már valószínűleg könnyedén mennek a számodra. :-)