Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
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.
Poslední ze tří kroků konfigurace je nastavení správy ACL. Informace o tom, jaká přístupová práva má kdo nastavena, je totiž potřeba někde ukládat – a to „někde“ se musí nastavit. Možností je více. V níže uvedeném řešení se ACL ukládají přímo v jednotlivých schránkách (jejichž uživatelé zapnuli sdílení), konkrétně v souborech nazvaných dovecot-acl
. Je tu ale ještě jeden problém – sdílené složky se nezobrazují uživatelům, jimž byly nasdíleny (uživatelé musí přímo zadat jejich cestu, na výpisu složek je nemají).
Tento problém lze vyřešit globálním úložištěm ACL, kde budou uloženy informace, kdo komu sdílí přístup (samotné ACL informace ovšem zůstávají uloženy u jednotlivých schránek). V jednoduchých případech (tj. když se sdílí jen málo složek a jen malému počtu uživatelů) si lze vystačit s obyčejným souborem:
plugin { acl = vfile acl_shared_dict = file:/var/mail/shared/shared-mailboxes.db }
První parametr říká, jak budou uloženy informace o ACL. V tomto případě se bude jednat o soubory pro jednotlivé složky; nevyužívají se globální přístupové seznamy, které by definoval administrátor a měly by přednost před tím, co si nastaví jednotliví uživatelé. Druhý uvedený parametr je cesta k souboru se seznamem nasdílených složek.
Při rozsáhlejším využití takové řešení brzy narazí na problémy s výkonem. Pak je vhodnější, aby byly informace uložené v databázi. Lze použít různé databáze (samozřejmě podle toho, jak byl Dovecot zkompilován – viz starší díly seriálu). Jedna z možností je například použít SQLite, což je výhodné proto, že není třeba řešit žádný samostatný databázový server, přístup do databáze je přes knihovní funkce.
plugin { acl = vfile acl_shared_dict = sqlite:/etc/dovecot/sqlite-acl.conf }
Tím je vyřešena konfigurace na globální úrovni, teď je potřeba nakonfigurovat přístup k databázi. Uvedený soubor /etc/dovecot/sqlite-acl.conf
musí obsahovat údaje potřebné pro správnou práci s databází SQLite:
connect = /var/mail/shared/acl.sqlite map { table = acls pattern = shared/shared-boxes/user/$to/$from value_field = valid fields { mbfrom = $from mbto = $to } }
Tento soubor definuje jednak cestu k databázovému souboru (parametr connect
) a dále pak mapování databáze na rozhraní programu Dovecot. Tabulka se bude jmenovat acls
, vzorek pro dotazovací klíč odpovídá formátu používanému i při ukládání do souboru. Podle dotazovacího klíče se vrací hodnota, ta je u ACL dotazů vždy rovna 1 – v tomto případě to bude atribut valid
. Atributy mbfrom
a mbto
jsou mapovány na proměnné from
a to
. Při použití této konfigurace bude SQL definice tabulky vypadat takto:
CREATE TABLE acls ( mbfrom VARCHAR(100) NOT NULL, mbto VARCHAR(100) NOT NULL, valid CHAR(1) NOT NULL DEFAULT '1', PRIMARY KEY (mbfrom, mbto) );
Do této tabulky si bude Dovecot ukládat stejné údaje (tedy existující sdílení) jako v případě souboru. Databázi je samozřejmě potřeba vytvořit předem a nastavit jí přístupová práva pro čtení i zápis uživateli, pod kterým běží procesy pracující nad schránkami (tj. vmail
).
Při vytváření složek prostřednictvím protokolu IMAP se práva dědí v tom smyslu, že pro nově vytvořenou složku se zkopíruje kompletní ACL ze složky nadřazené. Při změně ACL u nadřazené složky se však už ACL u potomků nemění.
Nepříjemnou vlastností využívání ACL (resp. nastavování ACL přes protokol IMAP) je špatná podpora u klientského softwaru. Například Mozilla Thunderbird (a to i ve verzi 3.0) podporuje ACL jen ve smyslu zobrazení – nastavovat nic nejde. KMail ve verzi 1.13 podporuje do určité míry i nastavování ACL (ve smyslu nastavování některých druhů práv), nicméně občas uživatele „odmění“ zhroucením celého programu. Lze však očekávat, že se podpora v blízké budoucnosti zásadním způsobem zlepší.
Možnosti ohledně správy ACL jsou nesrovnatelně větší. Existuje možnost (pro správce) vytvářet skupiny, nastavovat jim práva a vkládat do nich uživatele. Další možností je přístup ověřeným uživatelům, případně všem uživatelům – to je však standardně z bezpečnostních důvodů zakázáno a pokud by ho někdo chtěl umožnit, je třeba v konfiguraci v sekci plugin
nastavit acl_anyone = allow
.
V některých případech je výhodné mít na serveru i složky, které jsou veřejné a nejsou spjaty s žádným konkrétním uživatelem. Příkladem jsou složky se zprávami, které se týkají celé firmy. Jinou situací je využití IMAP složek k jiným účelům, tedy například pro uložení adresáře nebo kalendáře (toto využívají některá groupwarová řešení).
Pro veřejné složky jsou určeny samostatné jmenné prostory (jeden či více, podle potřeby), přes které se tyto složky zpřístupní. Že jsou složky veřejné, vůbec neznamená, že by nešla nastavovat práva nebo že by měl automaticky každý oprávnění dělat tam cokoliv. Tak to samozřejmě není a běžná bude naopak situace, kdy uživatelé budou mít právo jen číst, případně přidávat, ale nikoli měnit a mazat. Rozdíl je však v tom, že tato oprávnění může nastavovat pouze správce.
Základem veřejných složek je veřejný jmenný prostor. Jeho konfigurace může vypadat například takto:
namespace public { prefix = public/ separator = / location = maildir:/var/mail/public/Maildir:INDEX=/var/mail/virtual/%d/%n/public subscriptions = no list = children inbox = no }
Od jmenného pro sdílení se to liší jen málo – typ jmenného prostoru je jiný, jiné je i úložiště (napevno definovaný adresář) a umístění indexů. Nyní je potřeba zajistit, aby měl Dovecot (resp. příslušný uživatel, tedy vmail
) přístup k úložišti. Prefix je zde public/
, ale není to žádné dogma, může být i jiný, podle potřeby.
V úložišti se pak vytvoří potřebné složky (například pokud potřebujeme složku Abcd
, vytvoří se adresář .Abcd
a v něm nejlépe hned trojice adresářů new
, cur
a tmp
, všechny samozřejmě se správným souborovým vlastníkem a právy).
V každé složce je pak potřeba vytvořit soubor dovecot-acl
s vlastním ACL. Pokud soubor zůstane prázdný, nebude mít přístup nikdo. To ale obvykle nechceme, proto lze definovat potřebná práva – k tomu však musíme znát syntaxi souboru. Tady je jednoduchý příklad:
user=admin@moje.domena lrwstipekxa user=franta@moje.domena lrwstipe authenticated lr
Tento soubor definuje práva tak, že správce (admin@moje.domena
) má všechna oprávnění, uživatel franta@moje.domena
může jakkoli manipulovat se zprávami (nesmí však nijak manipulovat se složkami) a všichni ověření uživatelé mohou pouze zjišťovat existenci složky a číst obsažené zprávy. Použití authenticated
samozřejmě předpokládá povolení této možnosti v konfiguraci – viz výše.
Jak si můžete všimnout, syntaxe se vždy skládá z uvedení subjektu (obecně nebo s identifikací) a masky konkrétních práv tvořené znaky udávajících jednotlivá oprávnění. Přesný význam typů subjektů a písmen používaných v masce najdete v dokumentaci k programu Dovecot.
Stejným způsobem lze v případě potřeby upravovat práva ke sdíleným složkám uživatelů (soubory dovecot-acl
jsou stejné) nebo definovat globální ACL. Opět odkazuji na dokumentaci.
Po změně souboru dovecot-acl
je vždy potřeba smazat soubor dovecot-acl-list
, změny práv totiž mohou mít vliv na to, co se bude předkládat jako seznam složek klientům.
Na závěr ještě jednu důležitou informaci – pokud něco ohledně sdílení nebo ACL nefunguje správně, pak je to velmi pravděpodobně chyba v konfiguraci serveru nebo v implementaci klienta. Až teprve o hodně méně pravděpodobná je chyba serveru. Dobrým vodítkem při hledání chyb je sledování a záznam IMAP komunikace (například pomocí programů tcpdump nebo Wireshark) a porovnávání s tím, co to má podle specifikací dělat.
Příštím dílem se seriál vrátí zase trochu více do oblasti přenosu zpráv. Tématem totiž bude konfigurace záložního poštovního serveru. Na první pohled triviální věc skýtá některá úskalí, která pak (pokud nejsou včas rozpoznána a eliminována) zcela oprávněně vrhají na celou koncepci používání záložních serverů špatné světlo.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Vypada to, ze podle tohoto musi byt jeste ve sdilene "slozce" vytvoren soubor dovecot-shared
.
Dá se to pomocí ACL provést?To se dá provést poměrně jednoduše, a to například tak, že se definuje veřejný účet, v něm potřebné složky a definují se k nim ACL pro dvě skupiny, např.
users
a admins
. První skupina bude mít všechna práva kromě "a" (administer) a "e" (expunge, tj. skutečné smazání), druhá bude mít i tato práva. Pak budou moci uživatelé ve skupině admins dělat všechno a uživatelé ve skupině users nebudou smět měnit práva a mazat zprávy (budou je moci označit za smazané, což je potřeba k tomu, aby šla zpráva přesunout - přesun = zkopírování + označení za smazané). Členství ve skupinách je třeba řešit ve správě uživatelů - seznam skupin oddělených čárkou se vrací v atributu acl_groups
.
/home/vmail/domains/domena1/user1/mail /home/vmail/domains/domena1/user2/mail /home/vmail/domains/domena1/user3/mail /home/vmail/domains/domena2/user1/mail /home/vmail/domains/domena2/user2/mail /home/vmail/domains/domena2/user2/mail atd..a v konfigu jsem tedy vyplnil:
location = maildir:/home/vmail/domains/%%d/%%n/mail/Maildir:INDEX=/home/vmail/domains/%d/%n/shared/%%d/%%n/mailJe to dobre? Musim vytvaret jeste rucne nejake dalsi adresare do mailboxu uzivatelu? diky diky
vfile
, podle navodu a v thunderbirdu uz je vypsano, ze slozka je osobni a neni sdilena. Jak ale ted to sdileni zapnu (kdyz to nejde primo v TB 3.x)?
Jak ale ted to sdileni zapnu (kdyz to nejde primo v TB 3.x)?Zapnout sdílení (resp. přidělovat práva - jakmile jsou přidělena nějaká práva, složka je sdílena) lze například přes KMail nebo Mulberry. Možná to bude umět i Evolution, ale nepoužívám ho, tak nevím.
dovecot-acl
a do něj vložit nějaký seznam práv, třeba něco jako toto:
user=franta@moje.domena lrsTím se uživateli
franta@moje.domena
přidělí uvedená práva (zjištění složky, čtení, nastavování příznaku přečtení). Pak je potřeba smazat ve schránce soubor dovecot-acl-list
(Dovecot si vytvoří aktualizovaný) a ještě aktualizovat seznam sdílení. Pokud je tento v souboru, přidají se tam dva řádky tohoto typu (sdílená složka patří uživateli sdilejici@moje.domena
):
shared/shared-boxes/user/franta@moje.domena/sdilejici@moje.domena 1Ta jednička na druhém řádku je důležitá, střídají se totiž řádky klíč-hodnota (a hodnota je tady vždy 1).
shared-mailboxes.db
. Me se ale vytvori (s obsahem, jak pisete), ale Thunderbird nevidi ve "spravci odebirani" tyto nasdilene slozky. Kde delam chybu?
location = maildir:/home/vmail/domains/%%d/%%n/mail/Maildir:INDEX=/home/vmail/domains/%d/%n/shared/%%d/%%n/mail
lrwstipekxa
). Userovi jsem chtel dat jen pravo na zmenu priznaku precteni (resp. lrs
). Kdyz ale neco user smaze (napr. ve squirrelmailu), mail tam zustane (protoze nema prava - to je ok), ale zaroven se mu jeste presune do kose (takze user, kterej nebude vedet, ze nemuze mazat, bude 100x mackat smazani zpravy a 100x se mu vytvori v kosi). Potom, jakmile nema pravo mazat ze serveru (parametr e
), email mu nezmizi ani kdyz ho smazne admin (vytvori se u nej priznak D
). To jen tak pro zacatek (jestli budete ochotny dal radit) Kdyz ale neco user smaze (napr. ve squirrelmailu), mail tam zustane (protoze nema prava - to je ok), ale zaroven se mu jeste presune do kose (takze user, kterej nebude vedet, ze nemuze mazat, bude 100x mackat smazani zpravy a 100x se mu vytvori v kosi).Tohle je proto, že klient maže právě tak, že zprávu zkopíruje do koše a pak označí jako smazanou. Jsou dvě cesty, jak to vyřešit. Čistší je dát uživateli právo "t", které umožňuje označit zprávu jako smazanou (to není destruktivní, není důvod toto právo zbytečně odpírat). Druhou možností je použít plugin (vytvořený kvůli OE), který změní chování Dovecotu (teď si ale nejsem jistý, jak interaguje s právy).
Potom, jakmile nema pravo mazat ze serveru (parametr e), email mu nezmizi ani kdyz ho smazne admin (vytvori se u nej priznak D).To je vlastnost. Klient se musí nastavit tak, aby nezobrazoval smazané zprávy, tj. ty s příznakem \Deleted (např. Thunderbird je nezobrazuje, Roundcube v defaultu ano, ale jde to vypnout, u OE je bohužel zobrazuje vždy; u Squirrelmailu si už nepamatuji, jak to je).
Nevím o tom, že by se označení zprávy za smazanou v Dovecotu rozlišovalo podle uživatele (i v případě, že se rozlišuje označení zprávy za přečtenou). Nicméně dokumentace o tom mlčí a nezkoušel jsem to, takže to není úplně jisté.
t
(i kdyz diky adminovi s pravem e
) a ostatni useri neuvidi postu s priznakem D v Thunderbirdu, i kdyz jeste nebude smazana fyzicky. Kdyz zase uzivatelovi odeberu pravo t
, muze brutalne zacit zaplnovat kos porad jednou a tou samou zpravou. Omlouvam se jeste jednou za to, jak jsem otravnej, ale prave z techto duvodu jsem chtel namet, jak mate nastavena prava ku spokojenosti prave z techto duvodu jsem chtel namet, jak mate nastavena prava ku spokojenostiTuto funkcionalitu k ničemu praktickému nepoužívám. Mám jednoho zákazníka, u kterého by to mohlo mít smysl, ale protože se sdílení muselo řešit už před x lety (kdy v Dovecotu ještě nebyla dodělaná podpora), řešilo se to společným využíváním speciálního účtu více uživateli. Dnes by se to dalo změnit, ale protože současný stav plně vyhovuje, není k tomu důvod.
Nicmene takovyto styl sdileni Vam osobne vyhovuje? Me ty prava pak prijdou takova konfliktniNa tomto způsobu sdílení mi nic konfliktního nepřijde.
Nakonec nam vsechno smazne beznes user s pravem t (i kdyz diky adminovi s pravem e)Pokud nebude mít admin nastaveno, aby se automaticky provádělo EXPUNGE (nebo nebude mít debilního klienta, u kterého to bude natvrdo nastaveno tak, aby se to provádělo), nic se nesmaže. Kromě toho, jak jsem už říkal, právo "t" je potřeba i k přesunu zprávy do jiné složky, protože toto probíhá pomocí překopírování a označení za smazané. Čili - pokud bude mít uživatel právo "t", může zcela bezpečně zprávy "mazat" (kdy se zpráva označí za smazanou a u některých klientů se ještě před tím zkopíruje do koše) a přesouvat. Žádná zpráva nemůže zmizet. Administrátor si musí ohlídat, aby nedělal operaci EXPUNGE jindy, než když ji udělat chce. Pak bude všechno fungovat ke spokojenosti.
Tzn. ze pokud nebude mit admin pravo e, tak nemuze provest "udrzbu slozky" v TB?Přesně tak.
Thunderbird dělá expunge při otevření schrány (respektive možná pouze při prvním otevření).Toho jsem si nevšiml. Nikdy mi to při spuštění neudělal. Možná pokud je zaškrtnuté Provést údržbu složek, pokud se tím ušetří...
Při zavření nikoliv.Při zavření to dělá (tedy přinejmenším pro inbox), pokud je zaškrtnuté Při ukončení provést údržbu složky s doručenou poštou.
prefix
.
prefix = %%u/
) je zrejme to co hledam, ale mam nekde chybu, protoze se mi zacnou Shared slozky vytvaret na serveru uplne jinde, nez kam odkazuje location. A napr v me bezne IMAP slozce napr. Projekty vytvori podslozka INBOX atd.. Proste to nejak neposloucha.