Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
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é.
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.
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=%$
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í.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
chmod u+s 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)