RSS Feed
  1. Diagnozowanie podstawowych problemów z wydajnością bazy Firebird

    Marzec 26, 2013 by 0verlord

    firebird logo

    O bazie Firebird już pisałem, konkretnie w tym poście, gdzie to jest wyjaśnione, po co należy robić gbak i odgbak (tj restore). A dzisiaj będzie o przypadku z życia i o tym, jak taki przypadek wyeliminować.

    Baza po jakimś czasie zaczęła zamulać. Proste zapytanie trwały nawet i kilkadziesiąt sekund. Przy okazji podstroiłem Apacha pod kątem wydajności, bo najpierw miałem niecne podejrzenie, że to właśnie tutaj jest problem. Po poprawkach w konfigu, firebird zaczął chodzić jakieś 30% szybciej, ale zamuła dalej była odczuwalna.

    Po konsultacji z mistrzami wymiataczami, został zarządzony gbak/restore bazy. Dla porządku, baza to Firebird SuperServer, w wersji 2.5.1, a wirtualizacja jest na LXC.

    Po restore, poprzednia prędkość bazy wróciła do normy, co kazało mi odświeżyć sobie info o poście, który wspominałem na początku wpisu. Jeżeli baza wróciła do siebie po restore, to znaczy, że nie zadziałało czyszczenie.

    W cronie regułka była – ale na wszelki wypadek ją odpaliłem z konsoli. Zapytała o usera i hasło do bazy… #fail.
    A to znaczyło, że sweep się nie wykonał, i baza nabrała rozmaitego śmiecia. Te śmieci wyczyścił gbak/restore. Co ciekawe, na innym serwerze mam dokładnie taką samą regułkę – i tam to działa (tak, sprawdziłem dzisiaj). Różnica jest tylko taka, że tam jest Classic, a na wirtualce SuperServer. Kocham takie niespójności…

    Przy okazji, taki problem można zdiagnozować szybciej, przy pomocy polecenia ‚gstat’.
    Na customowej instalacji z tarballa w Debianie, gstat jest tu: /opt/firebird/bin/gstat.
    Uruchamiamy go z parametrem -h i ścieżką do pliku bazy, np. tak:

    /opt/firebird/bin/gstat -h /var/db/bla.fdb

    Powinien pokazać coś podobnego do tego:


    Database "/var/db/bla.fdb"
    Database header page information:
    Flags 0
    Checksum 12345
    Generation 51183
    Page size 4096
    ODS version 11.2
    Oldest transaction 51141
    Oldest active 51142
    Oldest snapshot 51142
    Next transaction 51143
    Bumped transaction 1
    Sequence number 0
    Next attachment ID 104
    Implementation ID 19
    Shadow count 0
    Page buffers 21480
    Next header page 0
    Database dialect 3
    Creation date Mar 26, 2013 21:50:48
    Attributes

    Variable header data:
    Sweep interval: 0
    *END*

    Co nas interesuje z tej listy? Sweep interval – tutaj ustawiony na 0, czyli jak się można domyślić – jest wyłączony. Interesuje nas jeszcze ODS version (czyli on-disk structure), bo to pokazuje, która wersja bazy danych odczyta nasz plik z bazą. Na szczęście w przypadku pomylenia wersji, dostaniemy odpowiedni komunikat, że ODS jest niezgodny.
    Interesuje nas też konkretnie ta sekcja:
    Oldest transaction 51141
    Oldest active 51142
    Oldest snapshot 51142
    Next transaction 51143

    Tutaj mamy numerki, a żeby baza dobrze chodziła, różnica pomiędzy nimi nie może być większa niż 100, lub w innych manualach 200.
    Można to bardzo prosto sprawdzić – wystarczy przez jakiś czas nie włączać sweepa, potem go włączyć i zobaczyć.
    Z punktu wydajnościowego interesuje nas jeszcze parametr „Page buffers” – dla superservera z 4 GB ramu powinien być właśnie na takim poziomie jak u mnie. Ale np. w wersji Firebird Classic, wartość 5000 jest sensowna.

    Podsumowując,


  2. OpenVPN, Mikrotik i Bad LZO decompression header byte

    Marzec 25, 2013 by 0verlord

    mikrotik

    Mikrotik to ogólnie fajny sprzęt i sporo może. Niestety kilka rzeczy jest nie do końca zaimplementowanych. Jedną z tych rzeczy jest OpenVPN.

    Mimo najnowszej wersji softu i na wydawałoby się – poprawnego konfiga, tym razem nie chciał się połączyć.
    Objawy były takie, że łączyło mnie, a po jakimś czasie do loga szedł komunikat
    Inactivity timeout (--ping-restart)
    i oczywiście rozłączało, potem łączyło znowu, znowu nie mogłem nic pingnąć po drugiej stronie i tak w kółko.

    Logi śmiecił jeszcze komunikat pt:
    Bad LZO decompression header byte: (numerek)

    To już w ogóle było pozornie bez związku, ale poszedłem tropem tegoż węża. Po stronie klienta próbowałem to wyłączyć ustawiając
    use-compression=no

    w /ppp profile, ale to nic nie dało. Rzut oka do konfiga po stronie serwera ujawnił straszliwa prawdę – była tam odkomentowana dyrektywa comp-lzo.
    Zakoment, restart openvpna i tadam.wav.

    Podsumowując:

    1. mikrotik obsługuje OpenVPNa w trybie klienta, ale tylko po TCP, udp nie jest zaimplementowane.
    2. … za to obsługuje autoryzację zarówno po certyfikacie, jak i po userze/haśle.
    3. klient nie rozumie kompresji – po stronie serwera trzeba wyłaczyć comp-lzo
    4. jeżeli nie mamy kontroli nad serwerem, i nie możemy tam dodać trasy do podsieci zza naszego vpna, trzeba dodać regułkę maskarady na interfejsie ovpn-out1 (czy też jakkolwiek się u Was nazywa)


  3. Avira unattended install i błąd 15 oraz 12

    Luty 16, 2013 by 0verlord

    avira logotyp

    Avira posiada przyjemnyprzyjemny tryb instalacji nienadzorowanej, czyli Avira Unattended Install. Uruchamia się odpowiedniego .execa z opcją /INF=ścieżka_do_pliku.inf, w konfigu podaje się ścieżkę do klucza licencyjnego i reszta dzieje się sama.

    W ogromnej większości przypadków instalator daje radę, ale od czasu do czasu nie ma ochoty się instalować i pluje do logów błędami.
    Zacznę na błędu 12. Tutaj akurat sprawa jest prawie trywialna, bo wystarczy uruchomić instalator, żeby zobaczyć przepiękne okienko mówiące o tym, że instalator nie ruszy wcześniej niż przed restartem. No to restartujemy. I działa.

    Błąd 15 jest trochę gorszy. Co ciekawe, mieliśmy z nim do czynienia tylko na Windowsach 7 Home. Wg supportu Aviry (a co, się kupuje licencję, to jest kogo atakować) ten numerek błędu oznacza „corrupted inf file”. Sprawdziliśmy – plik jest ok. Ma odpowiednie prawa dostepu – ma odpowiedniego właściciela. Ogólnie jego format jest poprawny, bo taki sam (patrząc na sumę md5) na Windowsie obok się odpala. Pierwsza linia supportu Aviry nie dała rady.

    Co mozna zrobić? Jedną z rzeczy, które nam pomogły, to wyłączenie tworzenia punktu przywracania systemu.
    UseSystemRestore=1

    Domyślnie ta wartość jest ustawiona na 1, co oznacza, że przy instalacji zostanie utworzony punkt przywracania systemu. Poniekąd słusznie. Jak by się coś złego stało, jest do czego wracać. Niestety wygląda na to, że na Windowsach 7 Home, tą opcję trzeba wyłączyć. Po zmianie rzeczonego wpisu na jakiś 80% przypadków instalator ruszył. Ale nie wszędzie.
    Jak się okazało, ten błąd to także inny objaw – tego, że Windows wymaga restartu. Może to nastąpić przy okazji instalacji aktualizacji, albo W Innych Przypadkach Wymagających Restartu. Koloryt lokalny Aviry. Ten problem rozwiązuje się sam przy kolejnym restarcie. Czyli jeżeli widzicie error 15 przy unattended installu – dwa restarty powinny ostatecznie załatwić sprawę.

    Logo AV ze strony producenta.


  4. Lex – aplikacja utraciła połączenie z zabezpieczeniem sieciowym i musi zostać ona zamknięta – jak naprawić

    Luty 14, 2013 by 0verlord

    Lex, aplikacja znana wszystkim prawnikom i nie tylko. Sprzedawana w modelu na ilość jednoczesnych dostępów. Zabezpieczenia, to sprzętowy klucz hasp z opcją sieciową, lub stanowiskowy. Zanim przejdę do omówienie przypadku, wyjaśnię ogólnie jak to działa.

    Lexa instaluje się jako udział sieciowy, i tak samo się go uruchamia. Przykładowo, mapujemy sobie na serwerze dysk L: do którego potem instalujemy aplikację, i potem ten sam dysk pozwalamy montować klientom. Klient odpala aplikację, aplikacja odpytuje sobie serwer klucza hasp, czy aby na pewno można klienta wpuścić i albo to robi – albo rzuca wyjątkiem o wykorzystanych wszystkich licencjach i rozłącza.

    Ale czasem dzieje się to, co jest w temacie tego posta. Wg supportu technicznego, który swoją drogą jest całkiem kompetentny – nastąpiła utrata łączności z serwerem klucza hasp. Tylko jak utraciło? O co w ogóle chodzi?

    W moim przypadku okazało się, że serwer czekał sobie na restart z powodu konieczności zainstalowania aktualizacji, a to z kolei powodowało wybuchy driverów, rozłączenie serwera klucza i inne „nieobsługiwane wyjątki krytyczne”.

    Sam restart serwera jednak nie pomógł – serwer klucza ciągle gubił połączenie. Przeinstalowałem te same drivery do haspa i problem ustąpił – widać coś się przy okazji aktualizacji pogubiło.
    Zato zanim przeklikałem drivery – regularnie o 6:30 rano uruchamiałem na serwerze skrypt restartujący usługę serwera hasp. Wyglądał jakoś tak (nie pamiętam jak się nazywa ten serwis, trzeba sobie samemu sprawdzić z cmd.
    sc stop <nazwa serwisu z sc list>
    sc start <nazwa serwisu>


  5. Firebird, gfix shutdown full, online i database shutdown

    Luty 9, 2013 by 0verlord

    Bardziej pisze tego posta ku pamięci własnej, a sytuację z Firebirdem miałem następującą:

    Firebird to taka baza, której od czasu do czasu trzeba zrobić backup i odtworzenie z niego bazy z kilku powodów:
    1. garbage collector przy backupie czyści fizycznie plik bazy ze zwolnionych stron, i z nieużywanego śmietnika – wtedy baza robi się mniejsza.
    2. jeżeli na bazie zachodzi sporo poprawek, może się okazać, że np. baza sobie chodzi, ale przy próbie jej odtworzenie dostaniemy konflikt np. na kluczach obcych, i może się okazać, że trzeba poprawiać ręcznie backup, żeby cokolwiek odtworzyć
    3. z jakiegoś dziwnego powodu, baza chodzi wydajniej po backupie/restore.

    Stąd też u klienta zaszła konieczność backup/restore bazy.
    Baza Firebirda na 4 tryby działania: normal, multi, single i full.
    Przełączanie się między nimi robi się przy pomocy gfixa i opcji -online i -shutdown. Żeby można było bez zgrzytu przegrywać sobie plik bazy, trzeba bazę przełączyć z tryb shutdown. I tak zrobiłem.
    gfix -shut fill -force 0 /plik/bazy.fdb
    Baza się zamknęła, połączenia teoretycznie zostały zakończone. Ubiłem fb_inet_servery (Firebird jest w wersji classic) i zdownowałem xinetd’a. Plik wrzuciłem na storage w stanie jakim był i chciałem zrobić gbaka. Baza po
    gfix -online normal /plik/bazy.fdb powiedziała, że baza jest shutdown. Que pasa? No więc po serii strace’ów okazało się, że wisi mi jeden proces fb_inet_server, który oparł się killallowi. Ubiłem go i baza wróciła.

    Potem znalazłem jeden post na serverfaulcie, z którego wynika, że takie rzeczy potrafią się dziać, jeżeli nie została zakończona jakaś transakcja. Ale dlaczego ta transakcja nie zareagowała na -online single a potem na -shut full ? Kto to wie.

    Czy ja już wspominałem, jak nie lubię firebirda? 😉


  6. Zbiorcza aktywacja ulepszeń InsertGT dla wielu podmiotów w BiuroGT

    Styczeń 12, 2013 by 0verlord

    Każdy, kto kiedykolwiek aktualizował Inserta w dowolnym biurze rachunkowym, obił się o problem pt.: zbiorcza aktywacja ulepszeń. A to wszystko jest bardzo proste.

    Ale po kolei. Jeżeli nie mamy do dyspozycji BiuraGT – jest przerypane, bo każdy podmiot trzeba aktualizować i aktywować osobno. Czyli jeżeli biuro rachunkowe korzysta z Inserta, a nie ma biura GT – zasugerujcie im zakup pod groźbą podwyższenia faktury, lub rozliczania aktualizacji na godziny.

    Jeżeli już się biuro ma, sprawa jest prosta i wygląda tak:

    aktualizacja: BiuroGT -> Widok -> bazy danych (lub alt+6) -> nad listą podmiotów będzie „konwersja”. Klikamy, i się robi. Trzeba tylko zadbać o poprawne parametry dla Archiwizatora, bo inaczej nie zrobi się kopia czyli nie zrobi się aktualizacja.

    a teraz punkt główny tego wpisu, tj. aktywacja ulepszeń. Jeżeli nie jest zrobiona, przy podłączeniu do konkretnego podmiotu system „zaproponuje aktywację”. Ale jeżeli podmiotów jest np. 100, klikanie tego ręcznie to masakra – wzywamy na ratunek BiuroGT.

    Zaraz pod opcją „Konwersja” z akapitu wyżej, jest opcja „Synchronizacja licencji”, po kliknięciu której dostajemy takie okno:

    insert gt licencja aktywacja ulepszeń

    I teraz, jeżeli klikniemy po prostu dalej, system będzie miał zapisane stare numery aktywacyjne i nic nie zrobi. Potrzebujemy nowe numery – o ile oczywiście mamy wykupiony abonament na ulepszenia. Załóżmy, że mamy.

    Klikamy w opcję oznaczoną prostokątem, i lądujemy tutaj:

    insert pobieranie numerów

    Klikamy, a jakże, „Pobierz numery aktywacyjne” i numery się pobierają. Jak się pobrały, klikamy ok, i lądujemy na pierwszym ekranie synchronizacji licencji. Tym razem zaznaczamy opcje wg screena i dajemy dalej.

    insert synchro licencji

    Ulepszenia się aktywują z nowymi numerami. Meldujemy w centrali wykonaną misję „Nowy Subiekt”.


  7. Comarch ERP Optima i generowanie wydruków w LibreOffice/Openoffice

    Styczeń 8, 2013 by 0verlord

    logo cdn optima

    Dzisiaj będzie użytkowo – jest sobie Comarch ERP Optima, w której można między pierdyliardem innych rzeczy także generować umowy o dzieło czy inne działo. Oczywiście takie umowy można wygenerować wg przygotowanego uniwersalnego wzorca.
    Ustawienie zmienia się konfiguracje samego programu po zalogowaniu się na dowolne konto – ustawienia są utrzymywane i tak dla konkretnego konta, więc tą samą operację należy powtórzyć tyle razy, ile mamy userów. Jeżeli ktoś zna magiczny update po bazie Optimy, to proszę się dopisać w komentarzach, koniecznie z adresem na który przesłać sześciopak 😉

    Wszystko ładnie widać na screenshocie – owalem jest zakreślone miejsce, gdzie domyślnie jest winword.exe – na screenie jest już poprawione na swriter.exe. To jest akurat uniwersalne ustawienie dla Libre i Openofficea. Edytor tekstu nazywa się tak samo tu i tu.

    Prostokątem jest zaznaczona odpowiednia sekcja w konfiguracji, która jest dostępna dopiero po zalogowaniu się do aplikacji i wybraniu konkretnej bazy (firmy).

    Teraz o wersjach – udało mi się zmusić do właściwego generowania wydruków umów tylko LibreOffice w wersji 3.4.5 (bieżąca 3.6 się sypie i nie generuje całej strony) oraz Openoffice w ostatniej wydanej wersji. Optima natomiast działała w bieżących aktualizacjach w 2012 i w ostatniej (pierwszej?) wersji w 2013 (bieżącej, tj. 2013.2.1.12.14).
    Wersja Windowsa wydaje się nie mieć wpływu na generator – działało mi to zarówno na Win 7 32/64 jak i na XP z sp2 i sp3)
    W wersji 3.6 prawdopodobnie zmieniły się szablony go importu XML z MS OFfice’a – w razie czego można by spróbować wrzucić stare. Ale to zrobię dopiero, jak będę musiał.

    Swoją drogą, ta przekolorowa uspokajająca skórka to nowy, domyślny motyw systemowy. Urocze.

    cdn optima screen konfiguracja

    (logo cdn gdzieś z internetu).


  8. Debian testing, collectd, rrdtool plugin: rrd_update_r failed, minimum one second step i zatkane logi.

    Listopad 20, 2012 by 0verlord

    Ok, trafiłem bug w collectd, albo w Debianie testingu, albo w czymkolwiek. Chwilowo jestem za bardzo zarobiony, temat zgłębiać dokładniej. Za to umiem to naprawić ha! 🙂

    Ogólnie logi zapycha taki komunikat:

    Nov 20 21:52:21 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd: illegal attempt to update using time 1353444741 when last update time is 1353444741 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-free.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-free.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-reserved.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-reserved.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)

    Wygląda, jak by baza była za szybko odświeżana, stąd komunikat. Internet mówi, że takie coś często się dzieje, jeżeli chodzą dwie instancje collectd’a. Nie mój przypadek.

    Na co należy tutaj dokładnie popatrzeć, to plik z bazą rrd, który wskazuje na błędną konfigurację plugina sprawdzającego miejsce na dysku, tj. konkretniej defaultowy df.
    O co dokładnie chodzi? Ano o to, że plugin df sprawdza sobie /proc/mounts i co tam widzi w Debianie Testingu? Ano np. coś takiego:

    rootfs / rootfs rw 0 0
    (śmietnik)
    /dev/disk/by-uuid/(tutaj uid) / ext4 rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
    (nieśmietnik)

    No więc plugin znajduje dwa razy „/” i aktualizuje zgodnie z planem. Aktualizacja jest za szybko, więc rrd zgłasza błąd.

    Jak to naprawić? Dodać konfig plugina wg instrukcji poniżej (bo defaultowo tenże plugin nie ma konfiguracji).
    Co to robi? Znajduje filesystem typu rootfs, po czym go ignoruje.

    <Plugin df>
    FSType "rootfs"
    IgnoreSelected true
    </Plugin>

    Tadam.{cokolwiek}.


  9. LogicMail, IMAP, BlackBerry 9900 Bold, PlusGSM – nie łączy się z serwerwem

    Październik 16, 2012 by 0verlord

    BlackBerry to taka alternatywa dla innych wiodących producentów telefonów. Pominę recenzje, jakoś mi nie pasuje. Ale w Firmie niektórzy sobie wywalczyli. Jak sobie wywalczyli – tak do do nas trafiło do konfiguracji serwerów poczty.

    Polityka bezpieczeństwa w firmie mówi prosto – poczta przechodzi przez serwery firmowe i nie przechodzi przez żadne inne. Więc domyślny tryb BB odpada. Zostało szukać alternatyw i padło na alternatywę tj. program LogicMail. Tutaj ich witryna.

    Początkowa szybka konfiguracja pozwoliła dodać skrzynkę, połączenie z WIFI pozwoliło rzeczone maile poczytać. Na 2G/3G (i ogólnie, internety z komórki) – nie bangla.
    Szybki rzut oka do przeglądarki – net jednak jest, strony się otwierają. Hm. 😐

    Czyli – na WIFI działa, wysyła, odbiera, synchronizuje, itp. Na 3G – nawet się nie łączy, a komunikat z debugu połączenia mówi: „unknown error”, albo „unable to open connection”.

    Pierwsze podejście było dość radosne, okazało się, że na tym konkretnym numerze nie jest włączona transmisja danych. #fail, było sprawdzić wcześniej. Ale w końcu włączyliśmy transmisję.

    Następnego dnia po aktywacji usługi, jest to samo – Unknown error. Po bliższym rzucie oka wyszło, że to dlatego, że nie został ustawiony APN na właściwy dla PLUSa. Właściwie, to w ogóle nie został ustawiony. Więc internet i przeglądarka działała tylko na defaultowych ustawieniach netu w BB. Mylące.

    Ustawia się to dość prosto:

    opcje -> urządzenie -> zaawansowane ustawienia systemu -> tcp ip -> zaznaczamy Ustawienia APN włączone, wybieramy nazwę APNa (właściwe dla odpowiedniej sieci – Plus ma „internet” bez usera ani hasła). Wychodzimy, zapisujemy, klikamy w Logicmaila i tadam.wav.

    (obrazek tytułowy gdzieś z internetu).


  10. Outlook 2010 i załączniki bez nazwy .dat

    Październik 8, 2012 by 0verlord

    Odbiłem się o ciekawy problem z Outlookiem 2010 – przychodzące załączniki, oczywiście tylko od niektórych ludzi i tylko niektóre (nawet od tych samych ludzi) wyświetlał jako „załącznik bez nazwy .dat”.
    Zanim zacząłem to naprawiać, wyświetlał je w jeszcze dziwniejszym formacie – jeżeli załącznik był dokumentem Worda (.doc) wyglądał tak: „Załącznik bez nazwy.doc”. Potem po którymś Fixicie zostały już same .daty.

    Ciekawe, że to nie jest ten sam problem, co z winmail.dat (opisany np. tu). To jest coś znacznie ciekawszego ;-).

    No to teraz trochę historycznego wprowadzenia w sytuacją. Problem u klienta zaczął się po migracji z Google Appsów na nasze własne rozwiązanie. Oczywiście w 4 innych przypadkach działa jak zwykle bez najmniejszego problemu. Rozwiązanie standardowe, na postfixie i wirtualnych mailboxach na mysqlu.
    Ale ten pan klient miał trochę większe wymagania – np. chciał mieć możliwość ustawiania autorespondera i współdzielenia folderów bezpośrednio z programu pocztowego. Chciał tez koniecznie webmaila, żeby przejście z Gmaila przeszło jakoś mniej boleśnie.
    Wszystkie takie dobrości ma Roundcube. Ładny i zgrabny klient poczty w odpowiednimi pluginami. I tutaj zaczyna się bajka 😉
    To co chciał pan klient, miała tylko wersja 0.8-rc1. Przerobiliśmy tez kilka starszych pluginów, żeby działały i już.

    Problemów nie zgłaszał nikt, zupełnie. Oprócz jednego dyrektora (wiadomo oczywiście, komu się rozwiązuje wszystkie problemy najpierw? ;-)). Pierwszy problem to załączniki, o których pisałem na początku posta. Potem nagle Outlook zgubił stronę kodową. Potem komp zaczął się wieszać, aż zaordynowaliśmy rewinstall.
    Po reinstalce jak to po reinstalce, problemy znikają – nie te. Znowu chaos ze stroną kodową (jak by nie ustawiać – leciało iso-8859-2 wyświetlane jako iso-8859-1) i cały czas załączniki losowo zmieniały nazwy. Co dziwniejsze – po zalogowaniu się przez webmaila załączniki wyglądały jak należy, co tym bardziej kazało szukać rozwiązania w Outlooku pana dyrektora.

    Czego to ja nie zrobiłem, robiłem konto od nowa, czyściłem profile, czyściłem rejestry – nic to nie dało. I nagle, kolejne zapytanie do googla skierowało mnie na stronę niezawodnego forum od wszystkiego (nie nabijam się, tam na prawdę wszystko jest) – elektroda.pl, a konkretnie dyskusja na temat rzeczonego Outlooka (tu link).

    Czytam, a tam wypisz-wymaluj mój problem. Co prawda wątek dotyczy OTL 2007 a nie 2010, ale w końcu M$ lubi powielać stare bugi.
    Kolega grep po konfiguracji Roundcuba pokazał złowieszczą prawdę:

    // Encoding of long/non-ascii attachment names:
    // 0 - Full RFC 2231 compatible
    // 1 - RFC 2047 for 'name' and RFC 2231 for 'filename' parameter (Thunderbird's default)
    // 2 - Full 2047 compatible
    $rcmail_config['mime_param_folding'] = 0;

    Full RFC 2231 compatibile ustawione domyślnie. Starsze wersje Rounecube’a miały to domyślnie ustawione na 1. Przestawiłem, i tadam.wav – przeszedł załącznik z plkrzakiem w nazwie (przy ‚0’ przyszedł jako .dat) wysłany z webmaila… Czyli ostatecznie, konfig do Roundcube powinien wyglądać tak:

    $rcmail_config['mime_param_folding'] = 1;

    Nie podsumuję, bo musiałbym obdarzyć wiązanką kwiatów polskich najbliższa okolicę. Hańba ci głupi outlooku!