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).

1 komentář u „Přehled o velikosti mailových schránek