abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 16:11 | Komunita

Vývojáři relačního databázového systému PostgreSQL oznámili, že schválili svůj Code of Conduct (CoC) aneb kodex chování vývojářů PostgreSQL.

Ladislav Hagara | Komentářů: 4
dnes 14:44 | Nová verze

Byla vydána verze 1.0 poštovního serveru Courier (Wikipedie). Aktualizovány byly také související balíčky jako Courier authentication library, Courier-IMAP, SqWebMail, maildrop nebo Cone.

Ladislav Hagara | Komentářů: 0
dnes 02:22 | Zajímavý software

Společnost ​Versity Software otevřela svůj archivační souborový systém ScoutFS. Zdrojové kódy jsou k dispozici na GitHubu (kernel space, user space) pod licencí GPLv2.

Ladislav Hagara | Komentářů: 18
dnes 00:44 | Nová verze

Byla vydána verze 4.2 programovacího jazyka Swift (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu. Ke stažení jsou oficiální binární balíčky pro Ubuntu 18.04, Ubuntu 16.04 a Ubuntu 14.04. Přehled novinek ve videozáznamu přednášky z WWDC 2018.

Ladislav Hagara | Komentářů: 1
včera 17:55 | Nová verze

Po třech a půl letech od vydání verze 3.4.1 byla vydána nová verze 3.4.2 programu pro filtrování spamu Apache SpamAssassin (Wikipedie). Z novinek lze zmínit 4 nové pluginy. Pravidla budou ověřována pomocí SHA-256 a SHA-512 místo SHA-1. Řešeny jsou také 4 bezpečnostní chyby. Například chyba CVE-2018-11780 v pluginu PDFInfo zneužitelná ke vzdálenému spuštění kódů (RCE).

Ladislav Hagara | Komentářů: 0
včera 16:22 | Pozvánky

Díky openSUSE Video Teamu lze sledovat živý přenos většiny prezentací z letošní SUSE Labs Conference. Záznamy proběhlých prezentací budou postupně přidávány na kanál SUSE Labs na YouTube.

Michal Kubeček | Komentářů: 0
včera 10:22 | Pozvánky

Na webových stránkách konference LinuxDays byl zveřejněn program přednášek a workshopů. Současně byla spuštěna registrace. Konference proběhne o víkendu 6. a 7. října 2018 v Praze v areálu ČVUT v Dejvicích na Fakultě informačních technologií.

Ladislav Hagara | Komentářů: 0
včera 02:22 | Komunita

Linus Torvalds se v oznámení o vydání 4. rc verze Linuxu 4.19 omlouvá za své chování. Posledním commitem před zvýšením rc3 na rc4 bylo odstranění souboru s Code of Conflict a přidání souboru s Contributor Covenant Code of Conduct vycházejícího z Contributor Covenant. Vývoj Linuxu 4.19 dokončí Greg Kroah-Hartman. Linus Torvalds si bere volno a bude pracovat na svém chování. Pravděpodobně vylepší svého poštovního klienta, aby mu nedovolil odesílat emaily obsahující nadávky.

Ladislav Hagara | Komentářů: 46
16.9. 11:33 | Nová verze

Byla vydána verze 1.23 open source nástroje pro on-the-fly šifrování (OTFE) dat VeraCrypt. Přehled novinek v nejnovější verzi tohoto nástupce TrueCryptu v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
15.9. 11:11 | Nová verze

Byly vydány verze 3.0.3 a 3.16 softwaru Wine (Wikipedie), tj. softwaru vytvářejícího aplikační rozhraní umožňující chod aplikací pro Microsoft Windows také pod GNU/Linuxem. Stabilní verze 3.0.3 je třetí opravnou verzí verze 3.0 vydané v lednu. Opravuje 52 chyb. Z novinek vývojové verze 3.16 lze zmínit například počáteční implementaci OPC Services (Open Packaging Conventions).

Ladislav Hagara | Komentářů: 1
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (15%)
 (20%)
 (23%)
 (24%)
 (3%)
 (1%)
Celkem 353 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Doručovací agent a Plugin quota

4. 2. 2010 | Lukáš Jelínek | Sítě | 12417×

Plugin quota

link

Někdo se v tento okamžik může zcela oprávněně zeptat: „A k čemu je to vlastně dobré? Vždyť úplně stejně to fungovalo i dříve, tak proč tam vřazovat ještě další program a zvyšovat tak zátěž serveru?“ Odpověď na tuto otázku je jednoduchá – spočívá ve využití zásuvných modulů (pluginů), které teprve dávají nově vytvořené konstrukci pořádnou sílu.

Pluginy nejsou výsadou doručovacího agenta, používají je i další služby v programu Dovecot. Ovšem pokud se nepoužívá doručovací agent, je jejich smysl výrazně omezený, protože nelze pokrýt doručování zpráv, které je v řadě ohledů klíčové.

Základní konfigurace

link

Jedním ze základních a často používaných pluginů je quota. Jak název napovídá, slouží k nastavení uživatelských kvót, tedy limitů na uživatelské schránky. Samotný Postfix totiž umožňuje pouze globální nastavení limitu, a to ještě jen pro doručované zprávy (přesněji jen pro ty, které poštovní klient dosud nestáhl). Neumí však rozlišovat jednotlivé uživatele, hlídat limity u celé schránky (tedy například nepostihne odeslanou poštu, koncepty apod.) ani dávat určitým složkám zvláštní vlastnosti (například prostor navíc pro zprávy v koši).

Plugin quota pro Dovecot LDA však podporuje širokou škálu funkcí, umožňujících velmi podrobně definovat, jak smí jednotliví uživatelé se svou schránkou nakládat. Tento plugin však není omezen jen na LDA, mohou ho využívat i služby IMAP a POP3, což je důležité pro správné uplatňování kvót.

Každý plugin (musí být samozřejmě nainstalován, o to se ale u základních pluginů postará příslušný balíček) musí být pro své fungování vždy aktivován. To se provádí v jednotlivých sekcích souboru dovecot.conf (v každé sekci je uveden vždy jen řádek, který se mění – zbývající část zůstává beze změny):

protocol imap {
  mail_plugins = quota imap_quota
}

protocol pop3 {
  mail_plugins = quota
}

protocol lda {
  mail_plugins = quota
}

Jak si můžete všimnout, plugin je aktivován v sekcích všech služeb, které se používají. U protokolu IMAP se zapíná ještě jeden další plugin: imap_quota. Ten slouží k zapnutí informativní funkce, díky které server poskytuje klientům informace o velikosti kvóty a aktuálním využití – je to velmi užitečné, protože uživatelé (například v programech Mozilla Thunderbird, RoundCube apod. – zkrátka ve všech, které tuto nepovinnou funkcionalitu IMAP podporují) vidí, jak jsou na tom s prostorem ve schránce či složce.

Další krok spočívá v konfiguraci pluginu jako takového. Plugin quota podporuje řadu různých způsobů, jak pracovat s kvótami. Může využít kvóty souborového systému, sčítat velikosti souborů v adresářích, ukládat údaje do databází nebo využít metodu Maildir++.

Právě poslední z uvedených způsobů jen nejflexibilnější, předpokládá ale samozřejmě ukládání zpráv příslušným způsobem (Maildir, s tím, že si server vytváří metadata Maildir++, v tomto případě konkrétně v souboru maildirsize). Pokud stačí nadefinovat jednu společnou kvótu, je to pak velmi jednoduché:

plugin {
  quota = maildir:Mailbox quota
  quota_rule = *:storage=1GB
}

Pluginy se konfigurují v sekci plugin. V tomto případě se prvním řádkem nastaví metoda Maildir++ a kvóta se pojmenuje „Mailbox quota“ (tento text se zobrazuje v klientech; může být v zásadě libovolný). Druhý řádek říká, že se jedná o obecně platnou definici (hvězdička) a že úložiště každého uživatele má velikost 1 GB.

Drobná poznámka pro puristy a rýpaly: Dovecot používá jednotky MB, GB apod. ve smyslu 1020, 1030 atd., čili namísto MiB, GiB apod., jak by to mělo být správně. Je tedy potřeba s tím počítat.

Toto je příklad toho asi nejjednoduššího, co plugin dokáže. Kvóty si lze definovat i podrobněji:

plugin {
  quota_rule = *:storage=1GB
  quota_rule2 = *:messages=10000
  quota_rule3 = Trash:storage=10%%
}

Toto zajišťuje dvě nové věci navíc. Jednak omezuje počet zpráv ve schránce na 10000 (běžně to není potřeba, leda jako ochrana proti vyčerpání i-nodů na některých souborových systémech). Další nové pravidlo přidává dodatečný prostor 10 % pro zprávy v koši – to má za účel umožnit uživateli, který vyčerpal běžnou kvótu, aby přesunul některé zprávy do koše k následnému smazání (přesun se standardně provádí kopírováním, které by při vyčerpání kvóty jinak nebylo možné).

Zde pozor na tři věci – jednak se „koš“ na zprávy nemusí jmenovat Trash (standardně ano, ale třeba Microsoft Outlook si ve výchozím nastavení vytvoří vlastní složky s jinými názvy). Dále je potřeba nezapomenout na zdvojení symbolu procent, protože jednoduchý symbol je určen pro uvození proměnných (například %u, %n, %r apod.). A konečně poslední úskalí spočívá v tom, že zprávy v koši se stále počítají do obecné kvóty, jen je pro koš tato kvóta vyšší o oněch 10 %. Proto pokud bude v koši např. 1,05 GB, půjde tam přemísťovat zprávy, ale do ostatních složek nikdo nic nevloží.

Přestože si uživatelé mnohdy mohou snadno zjišťovat aktuální zaplnění schránky, ne vždy to dělají a jsou později překvapeni, že jim přestanou chodit zprávy. Proto není špatné zařídit, aby byli včas varováni – pak už je jen jejich problém, že si včas nesmažou zbytečné zprávy nebo si nezajistí zvýšení kvóty. Konfigurace vypadá takto:

plugin {
  quota_warning = storage=95%% /usr/local/bin/quota-warn-95.sh
  quota_warning2 = storage=80%% /usr/local/bin/quota-warn-80.sh
}

Jak je z příkladu zřejmé, varování je nutno zajistit externě, tedy například skriptem nebo programem. Lze definovat libovolný počet úrovní (zde jsou použity dvě), ale je třeba mít na paměti, že pokud se v jediný okamžik překročí více prahů současně (např. přijde extrémně velká zpráva), uplatní se jen ten nejvyšší. Konstrukce názvů (quota_warning, quota_warning2 atd.) je obdobná jako u quota_rule.

Jak konkrétně bude mechanismus varování vypadat, je čistě na správci serveru. Může mít formu shellového nebo třeba PHP skriptu, který pošle uživateli e-mailovou zprávu (parametry se předávají přes proměnné prostředí, případně přes příkazovou řádku). Příklad takového řešení najdete v dokumentaci k programu Dovecot. Varování však lze řešit i jinak, třeba zprávou poslanou přes Jabber nebo SMS, to už záleží na vhodnosti toho kterého řešení pro konkrétní podmínky.

Kvóty pro jednotlivé uživatele

link

To nejzajímavější ale zatím zůstávalo stranou. Často je totiž potřeba rozlišovat kvóty podle uživatelů (nebo jejich skupin) – i toto je pro plugin quota vysloveně hračkou. Řešení se pochopitelně mírně liší podle toho, jak jsou uživatelé uloženi – zda v souborech, v SQL databázi, v adresáři LDAP apod. Například při řešení pomocí MySQL by stačilo tabulku schránek ze 7. dílu seriálu upravit takto (toto by se použilo při vytváření; pokud již tabulka existuje, musí se samozřejmě změnit pomocí příkazu ALTER TABLE):

CREATE TABLE Mailboxes
(
mb_id INTEGER AUTO_INCREMENT,
dom_id INTEGER NOT NULL,
mb_user VARCHAR(100) NOT NULL,
mb_password VARCHAR(100) NOT NULL,
mb_enabled BOOL NOT NULL DEFAULT 1,
mb_quota INTEGER NOT NULL DEFAULT 104857600,
PRIMARY KEY (mb_id),
FOREIGN KEY (dom_id) REFERENCES Domains (dom_id) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX (dom_id, mb_user)
)
ENGINE=InnoDB;

Přibyl jeden atribut (mb_quota) s velikostí kvóty vyjádřenou v bajtech a s výchozí hodnotou 100 MB. Ten se využije jako kvóta pro daného uživatele (schránku). Je samozřejmě potřeba patřičně upravit také přístupová práva:

GRANT SELECT (mb_id, dom_id, mb_user, mb_password, mb_enabled, mb_quota) ON Mailboxes TO 'dovecot'@'localhost';

Dalším krokem je úprava databázového dotazu v souboru mysql.conf. Přibude v něm kvóta vyjádřená ve formátu používaném pluginem quota. Upravený dotaz by mohl vypadat například takto:

user_query = SELECT 100 AS uid, 100 AS gid, '/var/mail/virtual/%d/%n' AS home, \
  CONCAT('*:storage=', mb_quota, 'B') AS quota_rule
  FROM Mailboxes NATURAL JOIN Domains \
  WHERE mb_enabled=1 AND dom_enabled=1 AND mb_user='%n' AND dom_name='%d'

Pokud by mělo být pravidel více, jednoduše se přidají další aliasy quota_rule2, quota_rule3 atd. podle potřeby. Pochopitelně není potřeba mít velikost definovánu zrovna v bajtech, lze použít libovolné větší jednotky a upravit podle toho textový řetězec pro plugin.

Řešení pro uživatele v souboru nebo pro LDAP by bylo velmi podobné. U uživatelů v souboru by se na konec přidal volitelný parametr (následující podoba vychází z 6. dílu seriálu):

franta@moje.domena:{plain}nejakeheslo:100:100:::userdb_quota_rule=*:storage=100MB
…

Podobně by to vypadalo i pro LDAP. Tam je ale potřeba nejdřív vyřešit přiřazení vhodného atributu. Pokud se pro uložení uživatelů používá třída inetOrgPerson (viz 8. díl seriálu), nezbývá než sáhnout po některém z nevyužitých atributů, protože atribut určený přímo pro toto použití zde není. Nevyužívá-li se třeba atribut s číslem řidičského průkazu (carLicense), lze ho použít pro uložení kvóty, a to i včetně jednotky (pozor ale na syntaxi!). Konfigurační soubor ldap.conf z 8. dílu se tak změní v tomto:

user_attrs = =home=/var/mail/virtual/%d/%n,carLicense=quota_rule=*:storage=%$

Plugin pro Sieve

link

Další velmi zajímavý a užitečný plugin je ten, který se stará o zpracování pošty podle RFC 5228 – tedy podle pravidel napsaných v jazyce Sieve. Toto je možná ten úplně největší důvod, proč vůbec používat doručovacího agenta. Protože jde o velmi komplexní technologii, zaslouží si samostatný díl seriálu – a to bude ten příští.

       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

4.2.2010 05:52 vasek125
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 13 (doručovací agent)
Hodilo by se ještě říct, že "postmaster_address" je povinná volba, bez které dovecot nebude doručovat. Docela jsem se divil, když mi bez toho házel fatal error.
Luk avatar 4.2.2010 13:39 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 13 (doručovací agent)
Tohle je detail, který mi jaksi unikl. Nějak jsem to bral tak, že pokud se to nenastaví, Dovecot si adresu nastaví automaticky. Ale jak je vidět, není tomu tak. Protože obecně raději nastavuji více než méně (nemám rád, když je hodnota některého významného parametru ponechána na uvážení vývojáře - v příští verzi se může default změnit), ani mě nenapadlo zkoušet postmaster_address vynechat.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
12.5.2010 20:13 Majk
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 13 (doručovací agent)
Ještě doplním, že pokud neprovozujete postfix pod rootem ( a to opravdu nedělejte :( ), je buď potřeba zkonfigurovat auth-master nebo nastavit setuid pro program deliver. Jinak nebude doručování fungovat.

chmod u+s deliver
18.6.2010 18:59 Kevin
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 13 (doručovací agent)
Přesně na tento problém jsem narazil a dál jsem s tim nehnul, příkaz chmod U+s deliver nepomohl, ví někdo jak s tim hnout?
18.7.2011 10:56 Jaroslav
Rozbalit Rozbalit vše Ubuntu SERVER 10.04 LTS
Zdravím, podle tohoto seriálu se mi podařilo rozjet v podstatě úplně všechno a jsem za něj moc vděčný, ale u LDA jsem se zasekl. Po delším zkoumání jsem zjistil toto (pro virtualní uživatele na výše uvedené distribuci):

1. v postfix/master.cf je jiná cesta k programu deliver

dovecot unix - n n - - pipe

flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

nastavení dovecot/dovecot.conf:

2. dovecot neví, co je mailbox_location, místo toho akceptuje

mail_location = maildir:/var/mail/virtual/%d/%n/Maildir

3. pluginy jsou jinde:

mail_plugin_dir = /usr/lib/dovecot/modules/lda

4. práva pro doručovacího agenta je třeba nastavit pořádně v sekci auth default { socket listen {:
master {
	path = /var/run/dovecot/auth-master
	mode = 0600
	user = vmail
	group = vmail
	}
5. procesu dovecot/deliver je třeba zajistit práva k otevření konfiguračního souboru, jinak do logu dostanete chybu

...postfix/pipe ... Fatal: open(/etc/dovecot/dovecot.conf) failed: Permission denied

Takže: chown root:vmail /etc/dovecot/dovecot.conf

---

Ostatní v návodu platí.

Když se všechno podaří, měli by se vám v mail.log objevovat hlášky:

dovecot: deliver(...@....cz): msgid=<...>: saved mail to INBOX

postfix/pipe: ...: to=<...@....cz>, relay=dovecot, delay=0.27, delays=0.1/0/0/0.17, dsn=2.0.0, status=sent (delivered via dovecot service)
18.7.2011 12:12 Jaroslav
Rozbalit Rozbalit vše Re: Ubuntu SERVER 10.04 LTS
Ještě doplnění: mail_location musí být bez Maildir na konci. Jinak nefunguje IMAP - schránky se nenajdou.

stačí jen:

mail_location = maildir:/var/mail/virtual/%d/%n

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.