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).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
U programu Dovecot to bude o něco složitější. Kromě informací o schránkách se totiž bude pracovat i s hesly. Celý problém ověřování hesel lze řešit dvojí cestou. Buď se uživatel přímo ověří pomocí autentizace LDAP, anebo se heslo získá jako kterákoli jiná informace a pak se použije běžným způsobem (viz minulé díly). První metoda je o něco bezpečnější (heslo se nedostane mimo LDAP), je však pomalejší a omezuje škálu autentizačních mechanismů (jde o stejný problém jako třeba při autentizaci přes PAM). Následující odstavce budou založeny na metodě druhé, tedy založené na stejném principu, jako při využití MySQL v minulém dílu seriálu.
Heslo se v rámci LDAP objektu inetOrgPerson
ukládá do atributu userPassword
. Do tohoto atributu se uloží jak samotné heslo, tak i použité schéma a případně také „sůl“ (tedy dodatečná informace použitá pro zašifrování hesla). Protože v tomto případě bude – v zájmu použití co nejširší škály autentizačních mechanismů – heslo uloženo vždy v otevřeném tvaru (plain
), sůl se samozřejmě nepoužije a ani nebude uvedeno schéma.
Protože se heslo bude v otevřeném tvaru také přenášet z LDAP serveru na poštovní server (pokud nejde o totožný stroj), je důležité data chránit proti případnému odposlechu. Lze tedy buď využít přímo TLS nebo SSL, anebo posílat data tunelem. Toto pravidlo samozřejmě platí obecně při posílání citlivých dat, nejen pro tento případ.
Konfigurace bude nápadně připomínat tu, která byla využita pro řešení s MySQL. Přestože UID a GID lze uvést v konfiguraci pro LDAP (podobně, jako tomu bylo v minulých dvou článcích, tedy u souborového řešení a MySQL), jde o neměnné hodnoty a mohou být tedy nadefinovány globálně – netýká se to samozřejmě jen konfigurace pro LDAP, lze to použít i v jiných případech. Nastavení patří na nejvyšší úroveň konfigurace, tedy například za last_valid_gid
.
mail_uid = 100 mail_gid = 100
V sekci auth default
se změní jen toto (sekce passdb
a userdb
budou nahrazeny uvedeným fragmentem):
passdb ldap { args = /etc/dovecot/ldap.conf } userdb ldap { args = /etc/dovecot/ldap.conf }
Vlastní konfigurace bude pak obsažena v souboru ldap.conf
. Tady je příklad takového souboru (pozor na přístupová práva – heslo pro LDAP je citlivou informací!):
hosts = ldap.moje.domena tls = yes dn = uid=dovecot,ou=users dnpass = nejakeheslo scope = onelevel base = dc=moje,dc=domena user_attrs = =home=/var/mail/virtual/%d/%n user_filter = (&(preferredDeliveryMethod=physical)(uid=%n)) default_pass_scheme = PLAIN pass_attrs = uid=user=%$@moje.domena, userPassword=password pass_filter = (&(preferredDeliveryMethod=physical)(uid=%n))
Vypadá to trochu divoce, možná složitěji než u Postfixu, ale je to v podstatě jednoduché. V parametru hosts
je seznam LDAP serverů (zde jeden), případně i s čísly portů. Místo něj lze použít parametr uris
, kdy se místo obyčejných adres používají plné URI, tedy i včetně schématu. Jednotlivé servery se vždy oddělují mezerou. Parametr tls
zapíná TLS komunikaci (server ji samozřejmě musí podporovat; lze použít také SSL přes URI začínající ldaps://
, opět je třeba podpora serveru anebo použití něčeho jako stunnel
).
Parametry dn
a dnpass
slouží k autentizaci LDAP klienta, protože jde o přístup k citlivým informacím (heslům). Uvedený příklad předpokládá, že jde o uživatele uid=dovecot,ou=users
, čili že uživatelé jsou uvedeni pod objektem třídy organizationalUnit
s RDN users
. Konkrétní nastavení záleží samozřejmě na tom, jak vypadá struktura konkrétního stromu – klidně by mohlo jít i o uživatele pod dc=moje,dc=domena
, kde jsou umístěny uživatelé pro schránky, nic tomu nebrání.
Pro vyšší výkon by bylo možné udělat dvě věci – buď oddělit dotazování na uživatele do samostatného souboru (kde by se nemuselo používat šifrování ani autentizace), anebo pro dotazování na uživatele použít přímo dotaz pro hesla, případně statickou definici se šablonou (protože existence uživatele se ověří dotazem na heslo). Tím se ovšem částečně „pohřbí“ flexibilita a pro využití například doručovacího agenta nebo některých pluginů by se tato forma musela opustit. Informace o těchto „zlepšovácích“ se souhrnně objeví v některém z pozdějších dílů seriálu.
Parametr scope
říká, kde všude se budou objekty hledat. Zde je to onelevel
, tedy jediná úroveň stromu. base
má stejný význam jako search_base
u Postfixu, tedy bázová cesta k prohledávání.
Následující parametry už souvisejí přímo s dotazy. user_attrs
mapuje (pro dotazování na uživatelské schránky) atributy LDAP na atributy programu Dovecot, ovšem v tomto případě se ve skutečnosti nic nemapuje. Dotaz je pouze testem na existenci uživatele, nejsou potřeba žádné hodnoty z databáze. Proto se hodnota sestavuje napevno, což říká onen tvar „=proměnná“, protože obecné mapování má podobu proměnnáLDAP=proměnnáDovecot
. Zde je to ovšem jinak, proměnná LDAP chybí, zato ale následuje definice hodnoty pomocí šablony, podobně jako třeba u mail_location
v hlavní konfiguraci.
Teď je na místě udělat drobnou vsuvku, která se měla objevit již v předminulém dílu seriálu. V tomto příkladě, stejně jako ve všech dosud uváděných (s virtuálními uživateli), se úložiště pošty a domovský adresář shodovaly. Bylo to pro jednoduchost, aby nevznikala další adresářová úroveň nebo jiné složité řešení, a tady to nijak nevadí. Ovšem pokud se budou využívat některé pluginy, které si do domovského adresáře ukládají informace (to bude například Sieve při využití doručovacího agenta; ale nerad bych teď předbíhal), je lepší toto oddělit a udělat například v „domovském adresáři“ virtuálního uživatele ještě podadresář pro poštu, aby v souborech a adresářích nevznikal zmatek.
Parametr user_filter
slouží k vyhledávání (filtrování) záznamů. Je to prakticky stejné jako u Postfixu. Úplně stejnou podobu má také parametr pass_filter
. Zajímavější je však pass_attrs
, a to ve své první části (druhá je prosté mapování atributů). Formát uid=user=%$@moje.domena
říká, že se atribut uid
(identifikace uživatele v LDAP objektu inetOrgPerson
) namapuje do Dovecot atributu user
tak, že jeho hodnota nahradí symbol %$
. Je to potřeba, protože Dovecot zde pracuje s uživatelskými jmény v podobě celé e-mailové adresy, přitom v adresáři LDAP se hledají jen samotná jména. Pokud by se přiřazení provedlo přímo, Dovecot by získal nesprávnou informaci, chyběl by zavináč a doména.
Tím je Dovecot nakonfigurován a měl by fungovat standardním způsobem pro oba podporované protokoly. Samozřejmě se stejná autentizace využije i pro účely programu Postfix, tedy při odesílání pošty směrem ven z počítačů mimo mynetworks
– ale to není nic nového, nijak se to neliší od chování v předchozích dílech.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Jen bych se chtel zeptat, zdali bude take uvedena konfigurace dovecotu jako LDA ( treba se Sieve ci procmail pro presun SPAMU do adresare ci automaticke promazavani SPAM adresar)?Samozřejmě bude.
Pak taky, zda-li byste mohl dokoncit tu vsuvku o podadresarich kvuli pluginum. Co vsechno se zmeni (user_attrs?).Teď jen ve stručnosti. Jde o to, že pokud se například využívá Sieve a nad domovským adresářem pracuje ManageSieve (ať už jako součást Dovecotu nebo jako samostatný program, např. PySieved), budou se v klientovi zobrazovat i soubory, které nemají. A obráceně, Dovecot bude adresář vytvořený pro účely Sieve (kam se budou ukládat Sieve skripty) považovat za poštovní složku (pokud bude název začínat tečkou, jak je obvyklé), čili ji bude klientům nabízet společně s jinými složkami. To není stav, o který by člověk zrovna stál. Ale znovu říkám, ve všech příkladech dosud používaných v seriálu využití "domovského adresáře virtuálního uživatele" nijak nevadilo, proto jsem také nevytvářel další adresářovou úroveň. Při použití se samozřejmě user_attrs nezmění, protože tam je právě domovský adresář, který zůstane stejný. Změní se naopak mail_location (například na maildir:/var/mail/virtual/%d/%n/Maildir, pokud bude pošta v adresáři Maildir pod domovským adresářem). U Postfixu by se změnil result_format (v tomto případě na %d/%u/Maildir/).
vůbec nechápu princip jeho činnostiCo na tom nechápeš? Základní princip je naprosto triviální. Je to prostě strom objektů a každý objekt může mít atributy (jaké přesně a které jsou povinné atd., to záleží na schématu). Ten strom může vycházet třeba z hierarchie DNS nebo být úplně jiný, podle potřeby. Představ si to třeba jako XML strom nebo něco takového (třeba registry ve Windows
ani jej neumím nainstalovatInstalace je taktéž triviální. Netriviální může být u některých implementací počáteční konfigurace (např. u OpenLDAP). Ale jsou implementace, kde je to také jednoduché (třeba Apache Directory Server; pro něj existuje také klikátko Apache Directory Studio, kterým lze jak pracovat se stromem, tak i konfigurovat server).
Pokud je to ovšem celé, tak pak nechápu smysl samotného LDAPu , resp. napadají mě technologie, které zvládnou totéž co si myslím, že má být LDAP (nasazení LDAPu tak jak jej máme u nás by šlo snadno přepsat do SQL).LDAP je především komunikační protokol. O to jde v první řadě. A protože tento protokol má poměrně širokou podporu, lze ho využívat v mnoha programech. Lze měnit klientský i serverový software podle potřeby, aniž by se musel měnit zbytek celku.
Pokud o tom někdo napíše srozumitelný článek včetně příkladů nasazení (od nejjednodušších, řekněme pro ověřování uživatelů na jedné mašině (místo /etc/passwd)), rád si jej přečtu. A jistě nebudu sám.Jo, k tomu článku pro blbé se také přidávám
Pro Luka - pokud budeš psát knihu, dobře si to rozmysli, moc čtenářů mít nebude.Knihu psát nebudu - viz níže
Pro Lukáše: kdyby se ti chtělo napsat knihu o LDAP, určitě bys měl jistého minimálně jednoho kupceZaprvé nejsem odborník na LDAP (proto píšu v článku, že "lépe se vyjádří znalec LDAP" - a to já bohužel nejsem), zadruhé teď dokončuji zapracování odborné korektury do knihy na úplně jiné téma, takže o psaní knih zase nějakou dobu nebudu chtít ani slyšet
Zaprvé nejsem odborník na LDAP (proto píšu v článku, že "lépe se vyjádří znalec LDAP" - a to já bohužel nejsem), zadruhé teď dokončuji zapracování odborné korektury do knihy na úplně jiné téma, takže o psaní knih zase nějakou dobu nebudu chtít ani slyšetTo je škoda. Píšeš pěkně "čitelně" :)
Čemu by tak hrozně vadilo to, kdybychom si vytvořili vlastní schema ?Nevadilo by. Tedy aspoň v tomto případě (u některých programů by vadilo, protože ty napevno počítají s objekty určitých tříd). Akorát že by se muselo vymýšlet a muselo by se nainstalovat. Pokud se použije hotové schéma, toto celé odpadá.