abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:22 | Nová verze

    Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.

    Ladislav Hagara | Komentářů: 2
    včera 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 1
    včera 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    28.4. 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    28.4. 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

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

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 7
    27.4. 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

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

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 12
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 883 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Doručovací agent a Plugin quota

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

    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.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    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.