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).
Zbývá vyřešit ještě poslední část celého systému Sieve. Uživatel si chce nastavovat pravidla z klienta. Aby tak mohl činit, musí na serveru běžet již zmíněná služba ManageSieve. Následující popis je určen pro řešení pomocí pysieved
, nicméně úprava pro nativní Dovecot ManageSieve (samozřejmě po vlastní instalaci) není těžká a potřebné informace jsou k dispozici v dokumentaci programu Dovecot.
Zprovoznění opět začíná instalací, ať už z distribučního balíčku nebo od autora. Pak je potřeba pysieved
nakonfigurovat. Ještě dříve je ovšem nutno si ujasnit, zda má běžet jako standardní démon (tedy naslouchat na portu a přímo obsluhovat připojené klienty), anebo zda se bude spouštět pomocí superserveru, typicky inetd
nebo xinetd
. Toto rozhodnutí bude vycházet z toho, jak často budou uživatelé měnit svá pravidla. Většinou bude k takovým změnám docházet zřídka, proto je obvykle lepší šetřit paměť a využít superserver.
Následující konfigurační soubor je určen pro xinetd
a může být uložen například jako /etc/xinetd.d/sieve
(za předpokladu, že se soubory jednotlivých služeb načítají z adresáře /etc/xinetd.d
). Zde je pysieved
nainstalován pod /opt
, jde o balík získaný z webu autora.
service sieve { id = sieve type = UNLISTED port = 2000 flags = KEEPALIVE socket_type = stream wait = no server = /usr/bin/python server_args = /opt/pysieved/pysieved.py --inetd --config=/etc/pysieved.ini user = root }
Typ služby je UNLISTED
(nejedná se o žádnou ze specifických služeb), služba ManageSieve běží na portu 2000. KEEPALIVE
říká, že se mají periodicky posílat pakety pro udržování spojení (vhodné hlavně proto, aby nezůstávaly zbytečně viset spuštěné instance pro klienty, se kterými už nelze komunikovat). Komunikace je streamová (tj. TCP), wait = no
zakáže čekání na ukončení spuštěného programu (takže lze obsluhovat další klienty). Jako „server“ je zde uveden interpret jazyka Python, argumenty udávají cestu k implementaci démona a ke konfiguračnímu souboru; nezbytný je také parametr zapínající spolupráci se superserverem. Uživatel bude root
, protože konkrétního uživatele pro práci si nastaví až pysieved
.
Pro starší superserver inetd
bude konfigurace vypadat podobně, jen bude mít jiný formát. Do konfiguračního souboru inetd
(typicky /etc/inetd.conf
) se přidá takovýto řádek:
sieve stream tcp nowait root /usr/bin/python python /opt/pysieved/pysieved.py --inetd --config=/etc/pysieved.ini
Nyní to tedy bude fungovat tak, že pokud se klient připojí na port 2000, superserver spustí instanci pysieved
a předá jí komunikační kanál s klientem. Tím se to dostává do podobné situace, jako kdyby se klient připojil k trvale běžícímu démonu pysieved
. Dále tedy už záleží na jeho konfiguraci. Ve výše uvedené konfiguraci xinetd
je definováno, že se konfigurace pysieved
bude načítat ze souboru /etc/pysieved.ini
– ten může vypadat například takto:
[main] auth = Dovecot userdb = Dovecot storage = Dovecot pidfile = /var/run/pysieved.pid [Dovecot] mux = /var/spool/postfix/private/auth master = /var/run/dovecot/auth-master sievec = /usr/libexec/dovecot/sievec scripts = .pysieved active = script.sieve uid = 100 gid = 100
Konfigurační soubor má různé sekce. Zde jsou použity dvě – hlavní sekce main
a sekce Dovecot
pro konfiguraci programu Dovecot, jakožto služby využívané pro zajišťování různých činností. pysieved
podporuje celou řadu jiných služeb (backendů), např. dokáže přímo pracovat s PAM nebo s databází MySQL, není závislý na jediném programu.
V tomto případě se pro autentizaci (auth
, databázi uživatelů (userdb
) a úložiště (storage
) využívá Dovecot, proto je u všech služeb uveden. pidfile
je obvyklý soubor s PID sloužící ke zjištění, zda je již program spuštěn a jaký má identifikátor.
Sekce Dovecot obsahuje cesty ke speciálním souborům pro autentizaci (mux
) a přístup k databázi uživatelů (master
). Nastaví se samozřejmě podle toho, jak je to nastaveno v konfiguračním souboru /etc/dovecot.conf
. Parametr sievec
je cesta ke kompilátoru pravidel Sieve – pravidla se totiž nepoužívají v původní textové podobě, nýbrž se kompilují do mezijazyka (bytecode). Plugin Sieve do Dovecot LDA si kompilaci po změně zdrojového souboru zavolá sám, nicméně využití kompilátoru v ManageSieve je výhodné pro dálkové ověření, zda jsou pravidla syntakticky správná (viz dále).
Další parametr je scripts
. To je adresář (v rámci domovského adresáře uživatele pošty), do kterého se ukládají jednotlivé soubory s pravidly. Aktivní je však vždy nejvýše jeden soubor – na něj se v domovském adresáři vytvoří symbolický odkaz s názvem podle parametru active
(je to přesně ta cesta, která vzniká zpracováním šablony uvedené v parametru sieve
sekce plugin
v konfiguračním souboru dovecot.conf
). Parametry uid
a gid
jsou identifikátor uživatele, resp. skupiny, pro běh démona (bude stejný jako uživatel pro úložiště pošty).
Takto nakonfigurovaný pysieved
bude dělat přesně to, co se od něj čeká. Podle požadavků připojeného klienta bude spravovat soubory s pravidly a aktivovat/deaktivovat je. Klient se samozřejmě musí autentizovat, a to úplně stejně jako pro práci s poštou. Jak bylo řečeno výše, o toto se postará Dovecot.
K využití správy pravidel Sieve je potřeba mít klienta, který podporuje protokol ManageSieve. Takovými klienty jsou například Mulberry, Mozilla Thunderbird (s doplňkem Sieve) nebo webmail RoundCube. Mulberry nabízí relativně jednoduchou správu (bohužel však jeho vývoj skomírá), Thunderbird má podporu pouze pro přímou editaci kódu pravidel (ovšem s možností okamžité kontroly pomocí již zmíněného kompilátoru sievec
a se zabudovanou referenční příručkou), RoundCube obsahuje snadno ovladatelnou „klikací“ správu pravidel (která však využívá jen malou část možností Sieve). Lze očekávat, že se v blízké budoucnosti dočkáme většího počtu klientských implementací (ovšem již dnes jich není zase až tak málo).
Kdo využije Thunderbird s doplňkem Sieve, bude normálně psát pravidla v té podobě, jak se objevila v příkladech v tomto článku. Která všechna rozšíření Sieve jsou k dispozici, lze najít například v tabulce na webu programu Dovecot.
Zmínku si zaslouží také globální soubor s pravidly. Ten je typicky normální soubor, který upravuje správce serveru. Nic však nebrání tomu, aby si správce vytvořil speciální poštovní účet, v uživatelsky přívětivém klientském programu si běžným způsobem připravoval pravidla pro globální použití a pak příslušný soubor použil jako globální (buď nastavením přímé cesty nebo přes symbolický odkaz, což je asi vhodnější).
Příští díl seriálu se bude zabývat dalším zajímavým zásuvným modulem do Dovecot LDA. Bude to modul implementující přístupové seznamy. K čemu je to dobré? Uživatelé mohou různě sdílet některé své složky a nastavovat k nim přístupová práva jiným uživatelům. Zejména ve firmách je to možnost, jak si při týmové práci udržet pořádek v poště a jak zajistit, aby měli všichni k dispozici ty funkce, které potřebují.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
sieve_before
a sieve_after
, které umožňují definovat další Sieve skripty (nebo celé adresáře se skripty). Pravidla v sieve_before
se zpracují před uživatelskými pravidly, sieve_after
po nich (ale jen v případě, že zpráva zůstává ve zpracování). Takže pokud už se má nějaké zpracování vynucovat všem uživatelům (i když to obecně nevidím jako přínosné), lze to využít. Všechny tyto skripty (stejně jako skript s globálními pravidly) se musí předem kompilovat pomocí sievec
.
Vy sieve_before a sieve_after pouzivate uspesne?Nepoužívám vůbec. Zatím jsem neměl takovou potřebu a obecně mě nenapadá příliš případů, kdy to má smysl (proto jsem to ani neuvedl v článku). Nicméně to mohu příležitostně vyzkoušet.
sieve_before
a funguje bez problémů.
... xfilter "/usr/sbin/spamc" ... if (/^X-Spam-Status: *Yes/) { exception { to ... } } ...
require ["fileinfo", "copy"]; if header :contains "X-Spam-Status" "Yes" { setflag "$Junk"; fileinto ".Spam"; stop; } else { "fileinto" :copy folder: "/home/backup/%d/%n";Nicmene mi to nefunguje. Domnival jsem se, ze misto %d se doplni domena.tld a misto %n username. Existuje nejaky elegantni a funkcni zpusob, jak dostat z hlavicky uzivatele a domenu (treba i nejak parsovat To:)...?
if
, to else
už je zbytečné. Mimochodem zbytečný je i příkaz stop
, protože akce fileinto
ruší implicitní keep
(viz RFC 5228, bod 2.10.2) a žádný jiný důvod k uvedení zde není.
Není to myšleno jako zálohování (když tam vidím to backup)? Pokud ano, tak mi to nepřijde jako příliš smysluplné řešení, spíš jako takové "velkobratrské" (ukládá se všechno, nezálohuje se stav ke konkrétnímu okamžiku).
editheader
podle RFC 5293, bylo by to velmi jednoduché - stačilo by podle obálkového příjemce vytvořit novou hlavičku (např. X-Original-Recipient
), pak to přeposlat na speciálního uživatele (třeba velkybratr@moje.domena
), u něj pak tuto hlavičku rozežírat a zprávy správně třídit. Jenže protože zatím toto rozšíření podporováno není, nelze takové řešení použít.
Možná by se ale dala rozežírat hlavička Delivered-To
, protože je možné (ale to právě nevím), že se přidává do zprávy až na konci zpracování LDA. Chtělo by to prověřit, zda tam po přeposlání kopie nejsou ty hlavičky dvě. Pokud je tam opravdu jen ta první, je vyhráno - stačí hlavičku pomocí :domain
a :localpart
rozežrat do proměnných a podle nich pak uložit zprávu do správné složky.
require ["fileinfo", "copy", "envelope"]; if header :contains "X-Spam-Status" "Yes" { setflag "$Junk"; fileinto ".Spam"; stop; } else { "fileinto" :copy folder: "/home/backup/:domain/:localpart"; }
require ["fileinto", "copy", "envelope", "variables"]; ... if allof(envelope :domain :matches "to" "*", envelope :localpart :matches "to" "*") { fileinto :copy "/home/backup/${1}/${2}"; }Je to jen hrubý nástřel. Dělá to to, že se vyhodnocují obě části adresy obálkového příjemce, dají se do proměnných a tyto proměnné se pak použijí. Jenže zásadní problém bude v tom, že asi nebude možné použít absolutní cestu k poštovní složce (nezkoušel jsem, v dokumentaci o tom nic není, nicméně velmi pochybuji).
To:
, která nemusí odpovídat skutečnosti. Hlavičku Delivered-To:
jsem teď zkusil, ale tu použít nelze, protože se tam vloží ve druhém exempláři při doručování po přeposlání.
To ale stale neresi situaci, kdy potrebuji mit kopie ne v Maildiru urciteho uzivatele, ale v uplne jine cesteTo je velmi snadno řešitelné tím, že se ten Maildir umístí na tu správnou cestu.
Jeste mne teda napada vlozit pred frontu (v master.cf) skript, ktery by udelal kopii, respektive nakopiroval email do zaloh a zpravu poslal zpet do fronty postfixu kde ji prevezme deliver. Tohle asi neni uplne nejsistci reseni.Pak existují ještě jiná řešení. Tak například využít incron, pokud by už uměl rekurzivně sledovat celé podstromy filesystému (ššššššššš - to se snáší popel na moji hlavu
IN_MOVED_TO
, testovat, zda šlo o přesun z adresáře tmp
do new
v rámci inboxu (protože to je operace, kterou je završeno doručení zprávy) a pak už jen kopírovat příslušné zprávy.
zda šlo o přesun z adresáře tmp do new v rámci inboxuResp. spíš nejen v rámci inboxu, ale ve všech poštovních složkách kromě spamové.