Thursday, March 10, 2011

Wysyłanie poczty przez mutt (w skrypcie)

"All mail clients suck. This one just sucks less."
The Mutt E-Mail Client
www.mutt.org

Prawda, że ładne hasło? Miałem problem z wysyłaniem wiadomości przez mutt, a właściwie z kodowaniem znaków. Napisałem skrypt, który wysyła powiadomienia o zmianie pliku na listę mailingową. Swoją drogą miało być góra po 10 linii kodu na plik (mniej więcej jak to przedstawiłem we wcześniejszym wpisie), a wyszło prawie 300 linii - jak zwykle :).
Kodowanie w systemie mam ustawione na UTF-8, jak wysyłam e-maila poleceniem

echo "śćńłó" | mutt -s "test ółąę" do@mnie.nie

to nie ma problemów z polskimi znakami, czyli kodowaniem, ale jak wrzucę to w skrypt i odpalę przez crona to w niektórych serwisach (zwłaszcza poczta przez www) jest problem z polskimi znakami.
Zacząłem grzebać w opcjach klienta mutt i znalazłem parę fajnych opcji (plik /etc/Muttrc):

set send_charset="utf-8"
set charset="utf-8"
set edit_headers=yes
set realname="od kogo [jak chcesz]"
set from="to@nie.jestod.root"
set use_from=yes
my_hdr Reply-To: odp@do.mnie.pl

Ta druga rozwiązuje ten problem, szkoda tylko, że przez cały dzień myślałem, że to ta pierwsza - trudno, czasami trzeba się przespać z problemem.

Dlaczego wybrałem Mutt? Wygodny sposób na wysyłanie e-maili z załącznikami (opcja -a)

Jak objawiały się problemy z kodowaniem? Pierwszy to

Content-Type: multipart/mixed; boundary="ZGiS0Q5IWpPtfppv"
powinno być
Content-Type: text/plain; charset=utf-8

oraz

Subject: Zmiana =?unknown-8bit?Q?rozk?= =?unknown-8bit?B?xYJhZHUgemFqxJnEhyAtIFJhZHp5bWnFhHNrYQ==?=

powinno być

Subject: =?utf-8?B?YWFhw7PFgsWExbzFmw==?=

i wszystko jasne, prawda :)

Logowanie działań przez SFTP

Jakiś czas temu pisałem o tym, jak przez SFTP zamknąć w klatce użytkownika. Teraz o dodatkowej funkcjonalności, którą jest logowanie tego co użytkownik pobiera itp.. Ponieważ czasami są to dane osobowe to lepiej monitorować ich zdalne pobieranie.

Wystarczy zmodyfikować linię:
Subsystem sftp internal-sftp -l VERBOSE

Monday, March 7, 2011

Monitorowanie zmian pliku

Testowałem rozwiązanie, polegające na monitorowaniu zmian pliku w sieci. Powiadomienie można wysyłać poprzez e-mail, a przedstawiony kod przedstawia tylko samą operację porównywania.

#!/bin/sh
wget serwer.pl/download/Plik.pdf
if [ -f Plik.md5 ]; then
md5sum -c Plik.md5
if [ $? -eq 0 ]; then
echo "bez zmian"
else
echo "zmienił się"
  md5sum Plik.pdf > Plik.md5
fi
else
md5sum Plik.pdf > Plik.md5
fi