Přehled o velikosti mailových schránek

Pro nové webové rozhraní webhostingu jsme řešili jak efektivně získávat informace o velikosti obsazeného místa poštovními schránkami.

Maily jsou na serveru uloženy ve formátu Maildir++, stará se o ně dovecot. Doručování do schránek samozřejmě také zajišťuje dovecot. Pro jednotlivé schránky využíváme quotu.

 

Standardně máme zkompilovaný dovecot s podporou LDAPu ze kterého se tahají informace o uživatelích, ale protože umožňuje ukládat informace o zabraném prostoru i do MySQL, překompiloval jsem dovecot s podporou této databáze.

V MySQL databázi jsem vytvořil tabulku kam bude dovecot cpát informace o zabraném místě:

CREATE TABLE IF NOT EXISTS `mail_usrquota` (
  `username` varchar(100) NOT NULL,
  `bytes` bigint(20) NOT NULL DEFAULT '0',
  `messages` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

Následovala lehká změna v konfiguraci z Maildir++ quoty na ukládání do MySQL:

Změny v konfiguračním souboru dovecot.conf:

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

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

 

Obsah souboru dovecot-dict-sql.conf:

connect = host=DBSERVER dbname=DBNAME user=USERNAME password=PASSWORD
map {
  pattern = priv/quota/storage
  table = mail_usrquota
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = mail_usrquota
  username_field = username
  value_field = messages
}

 

Po restartu dovecotu automaticky vše fungovalo. Informace o obsazeném místě se při použití pěkně vyplňují do databáze, vidíme tam online aktuální velikost mailboxu a počet zpráv v něm.

Uživatelům tyto informace zpřístupňujeme přímo ve webové administraci:

Funkčnost quoty přes IMAP zůstává stále zachována, takže informaci o zabraném prostoru vidí uživatel i ve svém mailovém klientovi (u nás je webmailem roundcube, který to pěkně zobrazuje v zápatí stránky).

No related posts.

Jedna reakce do “Přehled o velikosti mailových schránek”

  1. [...] Níže popisovaná instalace neimplementuje kvóty na schránky uživatelů – na serveru kde jsem instalaci prováděl jsou pouze uživatelé, kteří jsou rozumní :-) Pokud máte někdo zájem o konfiguraci Dovecotu tak aby se využívaly kvóty, tak je možné se inspirovat například na domácí stránce Dovecotu. Pokud budete mít zapnuté kvóty, tak je možné informace o obsazeném místě dostat do MySQL jak popisuji v jiném článku. [...]

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>