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 15:11 | Zajímavý projekt

    Deník TO spustil vlastní zpravodajský webový portál ToHledej.CZ s internetovým vyhledávačem a bezplatnou e-mailovou schránkou. Dle svého tvrzení nabízí 'Zprávy, komentáře, analýzy bez cenzury' a 'Mail bez šmírování a Velkého bratra'. Rozložením a vizuálním stylem se stránky nápadně podobají portálu Seznam.cz a nejspíše je cílem být jeho alternativou. Z podmínek platformy vyplývá, že portál využívá nespecifikovaný internetový vyhledávač třetí strany.

    NUKE GAZA! 🎆 | Komentářů: 5
    dnes 14:11 | Zajímavý projekt

    Computer History Museum (Muzeum historie počítačů) zpřístupnilo své sbírky veřejnosti formou online katalogu. Virtuálně si tak můžeme prohlédnout 'rozsáhlou sbírku archivních materiálů, předmětů a historek a seznámit se s vizionáři, inovacemi a neznámými příběhy, které revolučním způsobem změnily náš digitální svět'.

    NUKE GAZA! 🎆 | Komentářů: 1
    dnes 14:00 | Zajímavý projekt

    Ruský hacker VIK-on si sestavil vlastní 32GB DDR5 RAM modul z čipů získaných z notebookových 16GB SO-DIMM RAM pamětí. Modul běží na 6400 MT/s a celkové náklady byly přibližně 218 dolarů, což je zhruba třetina současné tržní ceny modulů srovnatelných parametrů.

    NUKE GAZA! 🎆 | Komentářů: 3
    dnes 11:00 | Upozornění

    Národní identitní autorita (NIA), která ovlivňuje přihlašování prostřednictvím NIA ID, MEP, eOP a externích identit (např. BankID), je částečně nedostupná.

    Ladislav Hagara | Komentářů: 7
    dnes 02:44 | Nová verze

    Byla vydána nová verze 1.16.0 klienta a serveru VNC (Virtual Network Computing) s názvem TigerVNC (Wikipedie). Z novinek lze vypíchnout nový server w0vncserver pro sdílení Wayland desktopu. Zdrojové kódy jsou k dispozici na GitHubu. Binárky na SourceForge. TigerVNC je fork TightVNC.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Nová verze

    Byla vydána nová verze 4.6 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 2
    včera 13:33 | Humor

    Rozsáhlá modernizace hardwarové infrastruktury Základních registrů měla zabránit výpadkům digitálních služeb státu. Dnešnímu výpadku nezabránila.

    Ladislav Hagara | Komentářů: 11
    včera 13:11 | Nová verze

    Čínský startup Kimi představil open-source model umělé inteligence Kimi K2.5. Nová verze pracuje s textem i obrázky a poskytuje 'paradigma samosměřovaného roje agentů' pro rychlejší vykonávání úkolů. Kimi zdůrazňuje vylepšenou schopnost modelu vytvářet zdrojové kódy přímo z přirozeného jazyka. Natrénovaný model je dostupný na Hugging Face, trénovací skripty však ne. Model má 1 T (bilion) parametrů, 32 B (miliard) aktivních.

    NUKE GAZA! 🎆 | Komentářů: 11
    včera 09:00 | IT novinky

    V Raspberry Pi OS lze nově snadno povolit USB Gadget Mode a díky balíčku rpi-usb-gadget (CDC-ECM/RNDIS) mít možnost se k Raspberry Pi připojovat přes USB kabel bez nutnosti konfigurování Wi-Fi nebo Ethernetu. K podporovaným Raspberry Pi připojeným do USB portu podporujícího OTG.

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | Komunita

    Konference Installfest 2026 proběhne o víkendu 28. a 29. března v budově FELu na Karlově náměstí v Praze. Přihlásit přednášku nebo workshop týkající se Linuxu, otevřených technologií, sítí, bezpečnosti, vývoje, programování a podobně lze do 18. února 0:15.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (10%)
     (23%)
     (3%)
     (5%)
     (2%)
     (12%)
     (33%)
    Celkem 651 hlasů
     Komentářů: 19, poslední dnes 13:03
    Rozcestník

    Doručovací agent a Plugin quota

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

    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.