A kvótarendszer beállítása

  • Beküldve: 2015. október 21, 22:48
  • Szerző: Bolemányi Attila

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
}