Zareaguju takhle v jednom emailu na vsechny tri dopisy, at toho konferenci nelita moc.

Problém nastáva pri ukončení spojenia na klienta, vtedy deamom (a nie hneď) zapíše do mailoxu čo s nim robil (aj len pri čítaní zapisuje príznak čítania) a ak sú dva deamony tak si mailbox navzájom prepisujú.  Zrejme programátori nepredpokladali rôzne deamony (aj od roznych výrobcov) do jedného mailboxu.

Novy email muze prijit kdykoliv. Bez zamkovani (ci jineho rizeni pristupu k souboru) by to neslo, a IMAP-UW zamyka.

Problem sice nejak s konkurencnim pristupem souvisi, ale nejak netricialne. Zapsany binarni bordel byl identifikovan jako segment SSL komunikace. K datum v tyhle podobe aplikace obvykle pristup nema a nemuze je tedy "prostou chybou" zapsat. Pri "proste" chybe zamkovani by si to sice prepisovali, ale porad "formatove korektnimi" daty.

Odhad "naslepo" je, ze (zrejme pri reseni zamkovani) aplikace uzavre deskriptor sitoveho spojeni standardnim systemovym close() - nikoliv volanim SSL funkce. Nasledne aplikace otevre maillbox a system ji vrati volny deskriptor - ten, co byl prave uvolnen, tedy ten, ktery si SSL knihovna stale drzi v internich datech jako deskriptor otevreneho SSL spojeni. No a nekdy pozdeji do nej ta knihovna zapise.

riadiaci blok v maiboxe ... imap-uw ho robí binárny.

Do textoveho MBOXu nemuze a imap-uw to nedela. To by tam MTA uz nemusel byt schopen pridat dalsi email. V tomhle problem neni, do textoveho MBOX souboru IMAP-UW dava data textove.

napadl mne prográmek inotifywait, který používám. Nicméně ten dokáže
odchytit jen patřičnou změnu (vytvoření/update) nějakého souboru.
Jak ale zjistit, kdo do něj zrovna zapisuje - možná hned zkusit zavolat lsof
či něco podobného, třeba se to stihne a něco prozradí.

Sice rikam, ze nejdriv potrebuju zjistit kdo a pak teprve hledat proc, ale nakonec to druhy budu stejne potrebovat, takze stejne budu potrebovat chytit ten konkretni zapis, abych sestrelil to co ho dela a nasledne v coredumpu hledat co se delo a jak tomu napriste zabranit.

Pokud prijdu na to jak udelat tohle, nejspis to pujde pouzit i pro detekci "kdo".

Ja vim jak to v nejhorsim vyresit. Proste budu muset patchnout libc nebo kernel a u zapisu zkontrolovat, jestli nezapisuju na pozici nula sledovaneho souboru nezadouci blbosti. A pokud ano, tak to sestrelit. Ale potrebna uprava neni uplne trivialni a strasne se mi do toho nechce. Doufal jsem, ze existuje neco hotovyho nebo prinejmensim snadneji upravitelnyho. Treba v ramci auditingu, o kterym moc nevim co umi.

pro IMAP / POP3 server bych z vlastni zkusenosti doporucil Dovecot
Zatim se mi nechtelo ho zkoumat. Na to co potrebuju je zbytecne komplexni. Mozna me ale situace nakonec donuti.

Kazdopadne diky vsem za napady, pokdu byste jeste na neco narazili, klidne dejte vedet, jestli se fakt budu muset hrabat v kernelu, tak to mi bude jeste nejakou dobu trvat, nez se do toho dokopu ...

Dan


--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem