Jak usunąć separator ( ” — ” ) treści od stopki w Thunderbird?

Ustawiając stopkę dla wiadomości w Thunderbird, program automatycznie dodaje „–” pomiędzy treścią i stopką. Co zrobić, żeby to usunąć?
Wystarczy wybrać z menu Narzędzia -> Opcje. Wybieramy ikonę „Zaawansowane” oraz zakładkę „Ogólne”. Klikamy guzik „Edytor ustawień”. Klikamy prawym na liście ustawień, z menu wybieramy „Dodaj ustawienie typu” -> „Wartość logiczna (Boolean)”. W oknie nazwy nowego ustawienia wprowadzamy „mail.identity.default.suppress_signature_separator”. Na liście pojawi się to ustawienie – musimy się upewnić, że ma wartość true. I viola, nie ma już „–”

Rootkit atakuje Debiana

Mawia się, że Linux to bardzo bezpieczny system… i wg. mnie w istocie tak jest, ale jest wprost proporcjonalnie bezpieczny do świadomości i wiedzy użytkownika go obsługującego. Jednak tak jest w każdym systemie, nawet w Windowsie!

Wczoraj obiegła świat informacja o nietypowym rootkit’cie, który atakuje kernel Debiana w wersjie Squeeze. Informacja o nim została zamieszczona tydzien temu na Full Disclosure  przez właściciela pewnej strony WWW, na której został umieszczony przez atakującego. Kod został już przeanalizowany przez kilka firm (w tym CrowdStrike oraz Kaspersky Lab), analiza wykazała, że jest to bardzo nietypowy, złośliwy kod wykorzystujący niestandardowy sposób ataku typu iFrame injection.

Rootkit atakuje dokładnie wyselekcjonowane systemy, chodzi o 64-bitowy kernel w wersji 2.6.32-5. W pierwszej fazie próbuje on ukryć własne wątki, następnie próbuje przejąć kontrolę nad systemem, jednak nie wiadomo po co! Kod wygląda na niedokończony, taką hipotezę pozwala wysnuć m.in. istnienie w nim kodu debugującego.

Fon Netia Free – co to jest i jak wyłączyć?

Co to jest?

FON to projekt stworzony w 2006 roku, ma na celu zapewnienie darmowego i wszechobecnego dostępu do internetu. Sieć budowana jest na całym świecie. Netia dołączyła do tej sieci podczas World Mobile Congress 2012. Czy jest to dobre ? Owszem. Jednak oprócz powszechnie dostępnego internetu Netia postanowiła jeszcze na tym zarobić. Bez wyraźnego wyrażenia chęci przez klienta Netia uruchamia zdalnie na Twoim routerze (zanim router nie pobierze konfiguracji z Netii nie widnieje sieć FONa) dodatkowy SSID, do którego może mieć dostęp każdy uczestnik sieci FON. Jeśli nie masz dostępu do sieci FON możesz zapłacić Netii SMSem za czasowy dostęp do sieci. Jaki jest tego efekt ? Bez Twojej wyraźnej zgody (nie szukałem, ale domyślam się, że pewnie gdzieś w regulaminie, małym druczkiem napisane jest, że Netia może uskuteczniać takie praktyki) oprócz abonamentu, który płacisz Netii, może ona dodatkowo zarobić na osobach chcących dostać się do Internetu, a to wszystko z wykorzystaniem Twojego prądu, Twojego urządzenia i Twojego łącza.

Nie chcę tak! Co mogę zrobić?

Możesz wyłączyć propagowanie sieci FON w Twoim routerze NETIA SPOT. Aby to zrobić musisz się na niego zalogować. Na stronie głównej ukarze się taki ekran: 

Jeśli Twój router ma udostępnioną sieć FON – będzie ona tutaj widoczna pod nazwą FON_NETIA_FREE_INTERNET.

Przejdź teraz do zakładki „Połączenie z Internetem”:

I wybierz link „Fon”…

Otworzy się formularz, w którym należy odznaczyć opcję „Włączony” i klikamy „Ok”.

W ten sposób wyłączyliśmy SSID Fona.

 

Apache 2.2 wiele wirtualnych domen jednym konfigiem

Ostatnio postanowiłem poszukać rozwiązania, które pomogłoby mi zautomatyzować proces tworzenia nowego projektu na moim serwerze developerskim. Do tej pory tworzyłem nowy <VirtualHost> z nazwą domeny. W stefie miałem wpis z gwiazdką – więc z tym chociaż nie miałem problemu.

Szperając trochę w sieci natknąłem się na VirtualDocumentRoot, dzięki tej dyrektywie można stworzyć jeden <VirtualHost>, który obsłuży wszystkie projekty w danej domenie.

Załóżmy, że mamy domene example.com i chcemy zrobić, aby Apache obsługiwał wszystkie domeny *.projekty.example.com oraz sam wybierał katalog w którym znajduje się strona.

Na początek musimy w strefie dodać wpis z gwiazdką.

*.projekty         IN A [ip serwera z apache]

Teraz konfigurujemy Apacha:

<VirtualHost *:80>
    ServerName projekty.example.com
    ServerAlias *.projekty.example.com
    VirtualDocumentRoot /home/projects/%-4+/public_html
</VirtualHost>

Dyrektywa VirtualDocumentRoot pozwala nam skonfigurowanie takiego katalogu strony, który będzie zależny od domeny. Stosując %, możemy wybrać, która część domeny ma być brana pod uwagę. Zastosowane tutaj %-4+ powoduje, że wybierane są wszystkie części subdomeny .dev.example.com.

Przykład:

Przy takiej konfiguracji, user wchodzący na stronę testowa.projekty.example.com dostanie stronę z katalogu /home/projects/testowa/public_html

W takiej konfiguracji możemy jeszcze ustawić stronę dla domeny projekty.example.com, musimy umieścić ją w katalog /home/projects/_/public_html (brak domeny zastępowany jest podkreśleniem).

W ten sposób mamy dość zautomatyzowany proces tworzenia domen. Wystarczy założyć katalog i domena od razu działa.

Moim dodatkowym założeniem było jeszcze, że domyślnie nie chcę, aby użytkownicy „z zewnątrz” widzieli nowy projekt strony. User mógłby się domyślić jak wyglądać będzie nowa nazwa strony. W tym celu dodałem następujący kod do konfiguracji Apache:

<Directory /home/projects>
    AllowOverride All
    Order Deny,Allow
    Allow from 192.168.168.0/24
    Deny from All
</Directory>

Dyrektywa AllowOverride All pozwoli mi na nadpisywanie wszystkich możliwych parametrów przez plik .htaccess. Zatem jeśli chcę, aby mój projekt był dostępny z Internetu tworze w /home/projects/[nazwa_projektu] plik .htaccess z treścią:

Allow from Any

Pozostała jeszcze jedna rzecz – chciałem, aby pomimo, że projekt dostępny jest z Internetu to jednak nie był indeksowany przez wyszukiwarki. Stworzyłem plik /etc/apache2/robots.txt z treścią:

User-agent: *
Disallow: /

A następnie dodałem do konfiguracji Apache:

Alias /robots.txt /etc/apache2/robots.txt

Dzięki czemu w każdej mojej domenie istnieje plik robots.txt z parametrami dla wyszukiwarek zabraniającymi indeksacji jakichkolwiek plików – najpopularniejsze wyszukiwarki honorują ten plik.

Best practies po instalacji systemu

Postaram się zebrać tutaj wszystkie najważniejsze konfiguracje, które należy wykonać na świeżo zainstalowanym systemie.

Stworzenie konta użytkownika i zablokowanie dostępu do roota przez SSHa przy użyciu hasła

Warto założyć konto zwykłego użytkownika, do którego będziemy się logować przed podniesieniem uprawnień do poziomu roota. Konto użytkownika zakładamy oczywiście poprzez adduser.
Po założeniu konta modyfikujemy konfigurację serwera SSH. W tym celu edytujemy /etc/ssh/sshd_config i zmieniamy wartość PermitRootLogin

PermitRootLogin without-password

Takie ustawienie chroni nas przed atakami bruteforce na konto roota. Dostęp do niego będzie możliwy jedynie przy użyciu klucza. Jest to wygodne rozwiązanie w przypadku, gdy chcemy uzyskiwać zdalny dostęp do serwera bezpośrednio na konto roota (np. przy użyciu skryptu backupującego).
Można również ustawić wartość no – wtedy dostęp do konta roota z poziomu SSHa nie będzie w ogóle możliwy.

Ograniczenie dostępu do su dla użytkowników z określonej grupy

Jeśli mamy większą liczbę użytkowników, którzy posiadają dostęp do SSH naszego serwera warto ustawić w PAMie, żeby su mogli wywoływać użytkownicy tylko jednej grupy (w Debianie jest to domyślnie grupa root).
Żeby to zrobić proponuję najpierw dodać naszą nazwę użytkownika do grupy root

usermod -a -G root solitary

oczywiście zamiast „solitary” podajemy swoją nazwę użytkownika. Teraz edytujemy plik /etc/pam.d/su i odkomentujemy (lub dodajemy) linię:

auth       required   pam_wheel.so group=root

Od tej chwili dostęp do su mają jedynie użytkownicy z grupy root. Proponuję otworzyć nowe połączenie SSH (nie zamykając starego!), zalogować się na swoje konto i sprawdzić czy możemy poprawnie podnieść uprawnienia przy pomocy su (aby uniknąć sytuacji w której tracimy zdalną kontrolę nad maszyną).

Szybkie i wydajne przesyłanie danych między serwerami

Zwykle korzystałem z pipelingu i ssh. Jednak czasami niepotrzebne jest nam szyfrowanie przesyłanych danych (gdy, wykonujemy to w zaufanej sieci) a chcemy szybko przesłać dane bez zbędnej utraty prędkości i obciążania maszyn.

W takiej sytuacji najpierw odpalamy na serwerze, który będzie odbierał socketa:

socket -q -r -s 9999 > plik_do_ktorego_ma_zostac_zapisane

lub też od razu pipelingiem do tara, aby rozpakować dane:

socket -q -r -s 9999 | tar -xvf -

Po stronie serwera nadającego wykonujemy:

cat twoj_plik | socket -q zdalny.komputer.pl 9999

lub bezpośrednio z tara:

tar -cf - katalog_do_przeslania | socket -q zdalny.komputer.pl 9999

Wada – nie ma paska postępu.

Problem z kompilacja Encode_Detect dla Perla

problem:

cc -Isrc -I/usr/local/lib/perl5/5.8.8/mach/CORE -DXS_VERSION=.1.00. -DVERSION=.1.00. -DPIC -fPIC -x c++ -Iinclude -c -DAPPLLIB_EXP=/usr/local/lib/perl5/5.8.8/BSDPAN -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -I/usr/local/include -O0 -pipe -fexpensive-optimizations -s -march=pentiumpro -o lib/Encode/Detect/Detector.o lib/Encode/Detect/Detector.c
lib/Encode/Detect/Detector.c:73: syntax error before `__attribute__.
lib/Encode/Detect/Detector.c:74: syntax error before `__attribute__.
lib/Encode/Detect/Detector.c:79: register name not specified for `struct SV ** mark.
lib/Encode/Detect/Detector.c:79: `sp. was not declared in this scope
lib/Encode/Detect/Detector.c:81: syntax error before `if.
error building lib/Encode/Detect/Detector.o from .lib/Encode/Detect/Detector.c. at /usr/local/lib/perl5/site_perl/5.8.8/ExtUtils/CBuilder/Base.pm line 108.
*** Error code 2

Rozwiązanie:
W katalogu pakietu w work/Encode-Detect-xxx/Detector.xs
Należy dodać

*** 38,43 ****
#define PERL_NO_GET_CONTEXT /* we want efficiency */
#include .EXTERN.h.
#include .perl.h.
+ #undef HASATTRIBUTE_UNUSED
#include .XSUB.h.

Problem z postfix „transport_maps lookup failure”

Postanowiłem opublikować tutaj opis problemu, który został odkryty przeze mnie dawno dawno temu, ale widziałem linkowania z zewnętrznych stron do opisu.

  1. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: do not list domain server.pl in BOTH mydestination and virtual_mailbox_domains
  2. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: mysql query failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin2_general_ci,COERCIBLE) for operation '='
  3. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: transport_maps lookup failure
  4. Nov 23 16:26:13 server postfix/smtpd[18747]: NOQUEUE: reject: RCPT from xxx.internetdsl.tpnet.pl[83.19.xx.xx]: 451 &lt;solitary @server.pl&gt;: Temporary lookup failure; from=&lt;solitary@example.com&gt; to=&lt;solitary??@server.pl&gt; proto=ESMTP helo=&lt;m&gt;
  5. Nov 23 16:26:13 server postgrey[2436]: delayed 620 seconds: client=xxx.internetdsl.tpnet.pl, from=solitary@example.com, to=solitaryść@server.pl
  6. Nov 23 16:26:13 server postfix/smtpd[18747]: NOQUEUE: reject: RCPT from xxx.internetdsl.tpnet.pl[83.19.xx.xx]: 451 &lt;solitary @server.pl&gt;: Temporary lookup failure; from=&lt;solitary@example.com&gt; to=&lt;solitary??@server.pl&gt; proto=ESMTP helo=&lt;m&gt;
  7. Nov 23 16:26:14 server postfix/trivial-rewrite[13358]: warning: transport_maps lookup failure

Gdy postfix dostanie nieoczekiwany znak, np. nieobsługiwany przez kodowanie ustawione dla pola w bazie MySQL (np. polskie znaki, przy kodowaniu pola w MySQLu latin1)
to zaczyna sypać błędami
błąd wykryty w postfix 2.1.5-9 na systemie Debian z kernelem 2.6.10
postfix skonfigurowany do korzystania z mysqla
mysql ver. 4.1.11a
Niesprawdzone dokładnie, ale najprawdopodobniej po pewnym czasie mysql upora się z błędami  i dalej zaczyna działać poprawnie do momentu, gdy ponownie nie przyjdzie taka wiadomość. Warto usunąć taką wiadomość z kolejki, bo niedostarczona będzie co 5-10 minut blokowała cały system pocztowy.
Rozwiązanie:
Na razie brak – przypuszczalnie upgrade
Najprawdopodobnie pomoże jeszcze nadpisanie domyślnych zapytań do bazy danych własnymi, które będą konwertować do takiego samego kodowania w jakim jest pole (np. ze stratą wszystkich nieprzewidzianych znaków).