exim i port 587

Najpierw mówimy eximowi aby słuchał na 587:

daemon_smtp_ports = 25 : 465 : 587

A teraz musimy wymusić aby wszystko co przychodzi na ten port musiało zautoryzować się:

acl_check_rcpt:

[…]

deny    condition      = ${if eq {$interface_port}{587} {yes}{no} }
!authenticated = *
message        = SMTP AUTH required over port 587 / wymagana autoryzacja na porcie 587

message        = 530 SMTP AUTH required over port 587 / wymagana autoryzacja na porcie 587

Poprawka, aby być zgodnym z rfc 4409 4.3 .

Poprawa interaktywności desktopa z linuxem

W gentoowskim drzewku Portage pojawił się nowy ebuild o nazwie zen-sources . Jest to zestaw łatek na vaniliowego kernela (jakich to sprawdźcie sami, ale jedna chyba z najważniejszych to łatka z nowym brainfuck schedulerem od Cona Kolivasa ). Przy komiplacji kernela miałem problem ze sterownikiem DRI do Radeona. Normalnie byłby to duży problem, ponieważ DRI ma wpływ na obciążenie procesora analgocznie jak DMA dla operacji dyskowych. W moim przypdku jest coś nie halo z ati-drivers i tak czy siak xorg-server nie używał DRI. Tutaj więc nic nie straciłem.

Testowałem to na maszynie jednoprockowej z Celeronem, różnica jest szokująca. Przy kernelu gentoo-sources, włączenie jednowątkowej kompilacji z nice 10 powodowało nieprzyjemne mulenie okienek. Większe obciążenie sprawiło, że przywrócenie cięzkiego firefoksa z pasa zadań trwało kilka sekund. Pracując na kernelu zen-sources opóźnienie niewiele zmieniało sę wraz ze wzrostem obciążeia (czy load był ~1 czy ~5) to dało się normalnie pracować w środowisku graficznym.

Komu doskwiera mała interktywność linuxa na desktopie ten powiniem spróbować nowego schedulera i/lub łatek o nazwie zen.

Fotograf na ślubną uroczystość

Skorzystaliśmy z usług dwóch fotografów. Reklamują się na stronie http://waszportret.pl .

Możemy ich śmiało polecić. Odległość nie gra dla nich roli. Zdjęcia oraz album wyglądają bardzo dobrze.

I to co jest także ważne to honorarium. Panowie zażyczyli sobie kwotę znacznie mniejszą niż fotografowie, którzy mieli do przebycia drogę 10 razy krótszą czyli 15 km. Być może ich cennik ulegnie wkrótce zmianie, natomiast w wakacje 2009 roku mieli ceny bardzo przystępne.

Optymalizacja gcc march=native czyli march=co?

Od kiedy w gcc pojawiła się możliwość podania architektury jako „native”, czyli pozwalamy aby kompilator sprawdził jaki jest typ procesora i wybrał najlepszą możliwą architekturę dla parametru -march (lub -mtune), zastanawiałem się jaką tak naprawdę wybierał. Czy na przykład nie używa zbyt niskiej architektury, a może nie włącza flagi -msse3 mimo, że procesor ją wspiera.

Sposób znalazłem na liście mailowej gcc:

$ touch test.c

$ gcc -fverbose-asm -march=native -S test.c

$ cat test.s

albo:

$ gcc -fverbose-asm -march=native -S test.c -o –

aby otrzymać wynik od razu na ekranie.


(możemy wstawić własne flagi np. -02 aby zobaczyć jakie dodatkowe flagi
optymalizacji zostaną użyte)


Walka z collateral spamem

Z fałszywymi zwrotkami napewno często mieliście doczynienia. Nagle dostajecie wiadomości, że wiadomość nie mogła być dostarczona użytkownikowi np. xxx@kolekcja.mejor.pl , albo dostajecie info o tym, że w mailu był wirus i został odrzucony.

Problem ten wynika z nieprawidłowej konfiguracji serwera. Powinien on jeszcze w czasie sesji sprawdzać czy istnieje odbiorca, czy mail nie spełnia warunków aby zostać zakwalifikowanym jako spam, czy nie zawiera wirusa. Część MTA przyjmuje całęgo maila, potem procmailem dostarcza do skrzynek użytkowników. I wtedy sprawdza czy mail to spma itp. Jeśli tak to generowana jest wtedy zwrotka, tylko nie idzie ona do prawdziwego nadawcy (ponieważ to zombie rozsiewajacy spam), tylko do niewinnego użytkownika.

I do tego dokładają się autorespondery („Jestem na urlopie..”).

Jak można więc wykryć czy zwrotka jest „nasza” czy nie? Na przykład można dodać coś w treści, i sprawdzać jest to zawarte w zwrotce. W eximie jest dostępna mechanizm o nazwie BATV. Wysyłany mail jest wtedy znakowany w taki sposób: envelope-from <prvs=03310137b9=xxx@kolekcja.mejor.pl> . Pojawia się nam fragment „prvs=xxxxxxx=”, jest  to hash generowany na podstawie wybranego hasła oraz bieżącej daty (sygnatura taka jest ważna tylko przez pewien czas). Jeżeli tego fragmentu nie będzie to exim odrzuci zwrotkę oraz poinformuje nas o tym w logu:

rejected after DATA: bounce messages must be returned to a BATV signed address

Zauważyłem niestety i minus korzystania z tego mechanizmu. Bywają odrzucane potwierdzenia przeczytania wiadomości. Generowane poprzez (nie jestem tym zaskoczony) „dużego” Outlooka. Trudno, zysk jest większy niż straty.

A teraz najważniejsze, jak to się konfiguruje.

Na początek musimy w głównej sekcji ustawić sobie hasełko do hasha:

BATVKEY = cosTAJEMNICZEGO

Potrzebujemy dwóch nowych ruterów (przypominam, o tym, że kolejność definicji ruterów ma znaczenie!):

dnslookup_batv:
driver = dnslookup
condition = ${if match_domain{$sender_address_domain}{+local_domains}}
domains = ! +local_domains
transport = external_smtp_batv
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8

batv_redirect:
driver = redirect
data = ${prvscheck {$local_part@$domain}{BATVKEY}}

Oraz potrzebujemy transportu:

external_smtp_batv:
driver = smtp
return_path = ${prvs {$return_path}{BATVKEY}}

Taki drobiażdżek

W styczniu były problemy z Mysql, firma Hekkonet oficjalnie przyznała się do tego (co nie jest zbyt częste). Zapowiedzieli jednocześnie rekompensaty w następnym miesiącu.  Minął luty, nie dostałem informacji o żadnej gratyfikacji więc wysłałem pytanie o to czy nie zapomnieli rozesłać informacji o przedłużeniu ważności konta. I tutaj nie zostałem rozczarowany, czyli głowa w piasek (brak odpowiedzi na maila) za to konto przedłużone zostało o kilka dni.

Czyli należy zawsze pilnować i egzekwować tego co zostało obiecane przez kogoś.

Przygód z Hekko ciąg dalszy

Pewnego miłego wieczoru, dnia drugiego lutego 2009 roku, dla odmiany ;) siedziałem przy kompie. Standardowo sprawdzam czy nie ma problemu z moim „ulubionym” hostingiem. Była lekko po 21 i ku memu zaskoczeniu – działa.

Po kilkunastu minutach, chciałem zajrzeć na swojego wordpressa zobaczyć co nowego słychać.  Przywitała mnie znajoma strona proponująca instalację WP. No tak, wiedziałem co się szykuje, dla pewności sprawdziłem co się dzieje z dwiema pozostałymi stronami korzystającymi z MySQLa. Oczywiście nie działały.

Już kiedyś to przerabiałem, wysypały się tabelki w mysql. A więc standardowo, wysłałem maila na odpowiedni adres z zapytanie co się stało, że baza danych nie działa. (Skoro strony korzystające z mysql opluwały mnie błędami, to nie wnikając w szczegóły techniczne, jest problem z bazą).  Otrzymałem maila informującego: ”

Jakiś przykład ? Ponieważ: Serwer MySQL działa przez 0 dni, 0 godzin, 21 minut i 40 sekund.
Początek pracy: 02 Lut 2009, 21:48. Dziś był tylko zresetowany serwer MySQL, nic więcej.

Więc zgodnie z prośbą podałem adresy stron, które się wysypały.  W  odpowiedzi dostałem info, że podane strony działają. Dlaczego niby działały? Ponieważ w wordpressie korzystam z wtyczki cacheującej (ale brzydkie słowo), wyczyściłem więc go. A na dwóch pozostałych, strona główna nie korzysta z bazy, dopóki nie kliknie się „zaloguj”.

Mail do -> biuro@….  z prośbą aby zużyć klawisz myszki i kliknąć cokolwiek na stronie. Mail biuro-> ja : ”

Zatem zapraszam do phpmyadmin: http://ciach.ciach/phpmyadmin/ dowie się tam Pan o prawidłowym
funkcjonowaniu MySQL. MySQL został zresetowany w trybie stabilnym dla baz co nie pozwala na ich
zniszczenie.

W tym momencie poczułem się klientem, któremu została udzielona skuteczna pomoc techniczna, którego problemy nie biorą się z jego niewłaściwych działań lecz z przyczyn leżących po stronie usługodawcy. Poprosiłem więc o kontakt z przełożonym osoby z którą korespondowałem. Ku memu zdziwieniu okazało się, że to sam właściciel firmy „dba” o zadowolenie klienta.

Zatem nie zostało mi nic innego jak podłączyć się do bazy, potem był check table i zgodnie z przypuszczeniem były one uszkodzone. Kolejny mail -> biuro@… z informacją, że podczas tego bezpiecznego restartu uległy uszkodzeniu tabele w bazie. Odpowiedzi nie dostałem.

Po kilkunastu minutach (zbliżała się już północ, chciałem się aby przed snem upewnić jaki jest stan) okazało się, że tabele zostały naprawione. Wymagało to oczywiście puszczenie zwykłego sqla po bazie i tyle. Czyli, przez prawie dwie godziny szło mailowanie, moje niezadowolenie z obsługi klienta w Hekkonet po raz kolejny zostało ugruntowane. Ale przecież problem nigdy nie wynika z działań Hekko, albo to jacyś sabotażyści, w sywestrowy wieczór zmienili ipki jakimi dysponowała firma, w związku z tym był problem nawet z działaniem NSów. (”

Trwają zmiany puli adresów IP, które są przypisane do maszyn s1 i s2. Przepraszamy za problemy i
prosimy o cierpliwość. Z przyczyn nie zależnych od nas nie byliśmy wstanie udzielić informacji w
odpowiednim czasie.
„)

A czasem to MySQL AB perfidnie oszukał biedną firmę Hekko i te restarty bazy w „trybie stabilnym” to były może i stabilne ale nie dla tabel.

Taki problem z bazą to miałem już kilka miesięcy wcześniej, bodajże w okolicach września. Okoliczności były podobne,

wtedy otrzymałem informację w stylu ” … tabele oparte na MyIsam często ulegają uszkodzeniu”  i oczywiście to nie ich wina. Wtedy musiałem samodzielnie puścić sqla , klient został olany.

Aby zabezpieczyć się przed kolejną odpowiedzią jak powyżej to zmieniłem silnik na Innodb, w jednej z baz  (WPresowej). I tak się wysypały podczas tegoż restartu MySQLa.

Nie wspominam już o awariach, do których firma oficjalnie przyznaje się.

Aha, w DirectAdminie z którego korzystają jest takie miejsce, opisane jako ” Pełne logi błędów Apache’a” wbrew pozorom „….

obecnie, ten log nie pochodzi z samego Apache.

Taką odpowiedź dostałem na pytanie dlaczego nie ma dat oraz godzin przy liniach z logami.

Urocze :)

Część pierwsza : http://blog.mejor.pl/2008/12/opinia-o-hekko/

Krótka historia: http://blog.mejor.pl/2009/03/taki-drobiazdzek/