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).
Jestliže je databáze vytvořena a jsou v ní připravena nějaká data, lze přejít k propojení programů s databázovým serverem. Propojení spočívá v nakonfigurování programů a v definici dotazů, kterými se budou z databáze získávat data. První přijde na řadu program Postfix.
Úprava konfigurace oproti té minulé je velmi jednoduchá. Spočívá ve třech parametrech, z nichž každý nastaví datový zdroj (zde databázi) pro jednu konkrétní oblast:
virtual_mailbox_domains = mysql:/etc/postfix/mysql/vdomains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql/vmailbox.cf virtual_alias_maps = mysql:/etc/postfix/mysql/virtual.cf
Uvedení mysql:
říká, že se jako zdroj použije databáze MySQL. Cesta, která za tím následuje, je k souboru se všemi údaji, které jsou potřebné pro provedení dotazu. Nyní je však potřeba vyřešit jeden problém – jak se k databázi připojovat. Většina služeb Postfixu totiž běží v prostředí chroot
, což znamená, že nemají přístup k lokálnímu socketu MySQL serveru, přes který se komunikuje. Řešení je v zásadě čtvero:
rewrite
) zrušit chrootproxymap
, která má standardně přístup kamkoliv Každý ze způsobů má určité nevýhody. Internetový socket má o něco větší režii než unixový. Přesun socketu znamená přenastavit i všechny klienty, pro které má být k MySQL serveru povolen přístup tímto způsobem. Zrušení chroot o něco sníží bezpečnost. A konečně použití proxymap
znamená opět režii navíc (ovšem někdy je tomu právě naopak, viz dále).
Pro který způsob se rozhodnout? Při malé zátěži lze bez problémů využívat internetový socket, u zatížených poštovních serverů je však mnohem výhodnější nasadit službu proxymap
, protože nejen že vyřeší problém s přístupem, ale současně zredukuje počet souběžných připojení na databázový server, který by jinak zbytečně požíral systémové prostředky a případně i zabránil obsloužení některých klientů.
Každý ze souborů má následující formát (toto je příklad souboru vdomains.cf
, tedy pro zjišťování domén):
hosts = 127.0.0.1 user = postfix password = heslopropostfix dbname = mail query = SELECT 1 FROM Domains WHERE dom_name='%s' AND dom_enabled=1
To je celé. První čtyři řádky obsahují údaje pro připojení k databázi (zde je databáze nazvána mail
) a budou se opakovat i pro všechny ostatní dotazy v rámci programu Postfix. Nejzajímavější je ale poslední řádek, tedy samotný dotaz. Vzhledem k tomu, že se zde zjišťuje pouze existence domény v tabulce, jde pouze o to, zda dotaz vrátí nějakou odpověď nebo prázdnou množinu.
Hodnota %s
zde reprezentuje dotazovaný klíč, tedy konkrétně hledanou doménu. Je-li nalezena (a musí být i aktivní, zapnutá), dotaz vrátí zpět číslo 1. Není to kritické – je totiž prakticky jedno, co vrátí, může to být klidně třeba i původní řetězec apod. Pro soubor vmailbox.cf
by dotaz vypadal takto (první tři řádky souboru jsou stejné jako u souboru vdomains.cf
):
Pokud se neuvede umístění databáze (hosts
), Postfix využije výchozí nastavení, což však obvykle nebude fungovat kvůli prostředí chroot. Pro vzdálenou databázi (nebo místní v explicitním nastavení), je potřeba uvést parametr hosts
a nastavit mu jednu či více (budou zkoušeny v náhodném pořadí) adres. Lze uvádět i cesty k unixovým socketů (s prefixem unix:
). Pozor – pokud uvedete localhost
, Postfix se vždy připojí přes unixový socket! Pro místní připojení přes internetový socket se musí adresa uvést číselně (127.0.0.1
).
query = SELECT CONCAT(dom_name, '/', mb_user, '/') FROM Mailboxes NATURAL JOIN Domains WHERE mb_enabled=1 AND dom_enabled=1 AND mb_user='%u' AND dom_name='%d'
Tady už to vypadá trochu složitěji. Jediné, co dotaz vrací, je cesta ke schránce typu Maildir, čili něco jako doména/uživatel/
(na názvu sloupce nezáleží). Cesta je získána spojením domény a uživatelského jména, a to jen v případě, že je jak doména, tak i schránka aktivní. Parametry %u
a %d
znamenají uživatelské jméno z adresy, resp. doménu (klíč jde jako celá adresa, tu lze získat pomocí %s
; uvedené dva symboly tento klíč rozdělí na samostatné části). Velmi podobně vypadá i dotaz pro aliasy, tedy v souboru virtual.cf
:
query = SELECT al_target FROM Aliases NATURAL JOIN Domains WHERE al_enabled=1 AND dom_enabled=1 AND al_user='%u' AND dom_name='%d'
Dotaz dělá skoro totéž jako ten předchozí, tedy zde vrací cílovou adresu aliasu, jsou-li alias i doména aktivní. Nic dalšího už není potřeba nastavovat, toto všechno plně postačuje k tomu, aby Postfix správně doručoval podle hodnot v databázi.
Pokud budete chtít pro komunikaci s databází využít zmíněné řešení s využitím služby proxymap
, je potřeba pozměnit konfiguraci Postfixu takto (jde v podstatě jen o přidání proxy:
před každou hodnotu):
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/vdomains.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/vmailbox.cf virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/virtual.cf
Hodnota hosts
v souborech se pak pro místní MySQL server nemusí vůbec definovat (nebo se nadefinuje jako localhost
), služba proxymap
se bude připojovat přes unixový socket. Pro základní funkčnost není třeba využívat toto řešení u služby local
(tedy parametr virtual_mailbox_maps
), ale protože proxymap
řeší i problém s počtem souběžných připojení k databázi, je výhodnější stejným způsobem nastavit všechno.
Pozor na nastavení práv k uvedeným třem souborům. Přístup ke čtení smí mít jen uživatel postfix
(přístup k zápisu nepotřebuje). Sice v tomto případě nelze přes přístup Postfixu získat příliš citlivé informace (není přístup k heslům uživatelů a hlavně nelze v databázi nic měnit), nicméně například u aliasy mají určitou citlivost a přístup k nim by neměl mít každý.
U programu Dovecot to bude velmi podobné, i když bude vše mít poněkud jinou syntaxi. Opět je potřeba upravit konfiguraci a vytvořit (v tomto případě jen dva) databázové dotazy. V konfiguračním souboru dovecot.conf
se nastaví:
auth default { mechanisms = plain login cram-md5 digest-md5 ntlm passdb sql { args = /etc/dovecot/mysql.conf } userdb sql { args = /etc/dovecot/mysql.conf } user = dovecot-auth socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Mechanismy a SASL socket (pro účely autentizace v programu Postfix) zůstávají stejné jako minule, mění se však zdroj hesel i uživatelů. V obou případech se nastaví stejný konfigurační soubor mysql.conf
pro práci s databází (šel by samozřejmě nastavit pokaždé jiný). V tomto souboru bude vše potřebné pro získávání údajů z databáze:
default_pass_scheme = PLAIN driver = mysql connect = host=/var/run/mysqld/mysqld.sock dbname=mail user=dovecot password=hesloprodovecot password_query = SELECT mb_password AS password, '%u' AS user \ FROM Mailboxes NATURAL JOIN Domains \ WHERE mb_enabled=1 AND dom_enabled=1 AND mb_user='%n' AND dom_name='%d' user_query = SELECT 100 AS uid, 100 AS gid, '/var/mail/virtual/%d/%n' AS home \ FROM Mailboxes NATURAL JOIN Domains \ WHERE mb_enabled=1 AND dom_enabled=1 AND mb_user='%n' AND dom_name='%d'
Parametr default_pass_scheme
říká, jaké je výchozí schéma uložení hesel (viz minulý článek), zde PLAIN
. driver
je označení databázového ovladače (mysql
). Parametr connect
uvádí vše potřebné pro připojení k databázi, zde tedy cestu k unixovému socketu, název databáze, uživatelské jméno a heslo.
Dále už jsou tu vlastní dotazy. Zde je to trochu jiné než u Postfixu. Vracených hodnot je víc a záleží na jejich pojmenování, proto se provádí aliasing. %n
zde má stejný význam jako %u
u Postfixu, tedy jméno uživatele, zatímco zde %u
znamená uživatele včetně domény. V dotazu na uživatele se UID a GID vrací jako pevné hodnoty, cesta ke schránce je také v podstatě pevná, protože je sestavena před odesláním dotazu do databáze. Dotaz jako takový tedy vlastně jen testuje existenci schránky a to, zda je schránka a doména aktivní.
Opět pozor na nastavení práv k souboru. Měl by ho mít oprávnění číst jen uživatel dovecot-auth
. Dostanou-li se k obsahu souboru běžní uživatelé, mohou zjišťovat hesla k poštovním schánkám, tedy velmi citlivé informace.
Po provedení všech popsaných úkonů by měl server (samozřejmě po načtení nových konfigurací) kompletně fungovat s údaji z databáze. Jedná se skoro o minimum, co lze prostřednictvím databáze provozovat, možnosti jsou mnohem širší, záleží na konkrétních potřebách a cílech.
Nasazení databáze přináší mnoho výhod, ne vždy je to však to nejlepší řešení. Například ve firemním prostředí bývají uživatelé soustředěni v centrální databázi přístupné protokolem LDAP (konkrétních implementací je řada – například OpenLDAP, Apache Directory Server, Novell eDirectory, Lotus Domino, Active Directory a mnoho dalších). Pak je zbytečné mít ještě nějakou samostatnou databázi pro poštu, potřebné údaje lze získávat pomocí LDAP.
LDAP patří mezi technologie, které není až tak úplně jednoduché zkrotit (nebo se to nich alespoň říká), proto mohou existovat určité obavy ohledně správného nastavení poštovního serveru, aby LDAP využíval. Že to tak děsivé není, se ukáže v příštím dílu seriálu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
hmm a jak vidim taky neresi, ze prednost ma alias pred mailboxem(kdy bude v tabulce aliasu stejne jmeno jako v mailboxech)To lze řešit buď na aplikační úrovni (aplikace pracující nad databází nedovolí, aby bylo jmeno v obou tabulkach), nebo rozštěpením DB relací s vytvořením další tabulky, čímž se to zajistí na databázové úrovni (to je čistší, ale sežere to víc výkonu).
co se tyce dovecotu neni lepsi pouzit prefetch a vratit vse v jednom dotazu nez delat 2 dotazyV tomto případě ano, protože se v dotazu na uživatele netahají žádné doplňkové informace. Mám v plánu uvést tyto optimalizace pohromadě později v samostatném článku.