Kod: Zaznacz cały
1. Wstęp
2. Trudne początki
3. Fetchmail
3a. Konfiguracja fetchmaila.
4. Krok kolejny tworzymy odpowiednie pliki i katalogi.
4b. Plik stat
4c. Crontab
4d. Napiszmy skrypt w Bashu obsługujący fetcha.
4e. Program w Perlu.
5. Automatyzacja
6. Koniec
Kolejnym tematem moich "sprytnych" rozwiązań związanych z pełnym wykorzystaniem zasobów laptopa ASUS z serii A3L będzie sprawdzanie stanu poczty elektronicznej oraz sygnalizowanie nowych wiadomości poprzez zapalenie odpowiedniej diody na panelu kontrolnym laptopa.
Ciekawe jest to, iż dioda ta nie jest domyślnie wykorzystywana pod Windowsem. Należy zainstalować odpowiedni program. Moim zdaniem strasznie ubogi, który tylko działa dla Outlooka A na dodatek zapala diodę po ściągnięciu wiadomości z serwera na komputer. To po co nam taka sygnalizacja Jest to kolejny przykład na ułomność tego systemu oraz słabą wyobraźnie programistów ASUSA.
Poprawmy ich. Nie tylko w kwestii sposobu wykorzystania diody, ale co najważniejsze wyboru systemu operacyjnego
Moim celem jest wskazanie rozwiązania odpowiedniego i wygodnego, a więc do dzieła. Linux sam nas bedzie informował, czy warto włączać program pocztowy czy nie
2. Trudne początki
Do rozwiązania problemu użyjemy fetchmaila, perla, basha oraz crontaba.
3. Fetchmail
Zastanówmy się do czego będzie nam on potrzebny. Chcemy jedynie, aby zwracał wartości czy jest wiadomość czy nie. Więc czas najwyższy zająć się kwestią konfiguracji fetchmaila.
3a. Konfiguracja fetchmaila.
Mamy dwie mozliwosci. Albo skonfigurujemy sobie fetchmaila poprzez konfigurator, albo sami stworzymy plik. Ja omowie tutaj dwie możliwości.
Pierwsza konfigurator - wolniejsza i mniej pewna metoda
W konsoli wpisujemy:
#fetchmailconf
Uruchamia się nam graficzny konfigurator. Naciskamy na przycisk configure fetchmail, następnie Expert Configuration. W oknie tym dodajemy konta e-mail zaznaczając odpowiednie opcje. Pamiętając o jednym po prawej stronie u dołu okna konfiguracji experta znajduje się pole tekstowe o nazwie: Logfile w miejscu przeznaczonym na wpisanie ścieżki do pliku log proszę podać następującą lokalizację: /root/.mailnotif/stat Jeszcze jedna ważna sprawa w polu Pool Interval wartość musi się równać 0.
Tyle jeśli chodzi o graficzny tryb teraz czas na tekst.
Druga - tryb edycji pliku - szybsza metoda pewna i sprawna
Musimy w naszym katalogu domowym utworzyć plik o nazwie .fetchmailrc (pamiętaj o kropce przed nazwą). Jego zawartość dla wielu kont pocztowych powinna wyglądać następująco:
Kod: Zaznacz cały
set logfile "/root/.mailnotif/stat"
set postmaster "Filip"
set bouncemail
set no spambounce
set properties ""
poll poczta.o2.pl with proto POP3
user 'filipcynarski' there with password 'tajemnica' is 'root' here
poll pop3.wp.pl with proto POP3
user 'filipcynarski' there with password 'tajemnica' is 'root' here
poll poczta.interia.pl with proto POP3
user 'filipcynarski' there with password 'tajemnica' is 'root' here
poll mail.idea.net.pl with proto POP3
user 'filipcynarski' there with password 'tajemnica' is 'root' here
4. Krok kolejny tworzymy odpowiednie pliki i katalogi.
4a. Utwórz katalog .mailnotif w swoim katalogu domowym.
4b. W tym nowoutworzonym katalogu stwórz pusty plik o nazwie stat
4c. Przejdź do swojego katalogu domowego utwórz nowy plik o nazwie crontab i wpisz następujące linie kodu.
Kod: Zaznacz cały
*/2 * * * * /root/.mailnotif/./skrypt.sh
*/2 * * * * echo "1" > /root/.mailnotif/running
/2 oznacza sprawdzanie co 2 minuty. Jeśli jesteś ciekaw jak dziala crontab wpisz w goole, a znajdziesz pełno informacji jak można go wykorzystywać.
4d.Napiszmy skrypt w Bashu obsługujący fetcha. Skrypt zapisujemy w katalogu /root/.mailnotif/ jako skrypt.sh
Kod: Zaznacz cały
echo "" > /root/.mailnotif/./stat
fetchmail -c
perl /root/.mailnotif/skrypcik.pl
-c - oznacza, że fetchmail ma sprawdzić czy wiadomości są na serwerze, bez ich ściągania.
4e. Program w Perlu. Program zapisujemy w katalogu /root/.mailnotif/ jako skrypcik.pl
Kod: Zaznacz cały
open(PLIK,"/root/.mailnotif/stat");
open(PLIK1,">/proc/acpi/asus/mled");
while ($scalar = <PLIK>) {
if ($scalar =~ m/message/)
{
print PLIK1 "1";
}
else
{
print PLIK1 "0";
}
}
Myślę, że tutaj mogę trochę wyjaśnić. Pierwsze dwie linijki ładują do zmiennych odwołania do poszczególnych plików. Następnie uruchamiana jest pętla powtarzana aż do końca pliku. Kolejny krok to sprawdzanie każdego wiersza pliku poprzez wyrażenie regularne, czy wśród jakiegoś z kont znajduje się konto z wiadomością e-mail. Czemu message? Po skończeniu wszystkiego, gdy będzie działało podejżyj plik stat i zauważysz pewną regularność.
5. Automatyzacja
Teraz wypadaloby, aby nasz komputer sam sprawdzał za nas wiadomości i nas informował o tym. Więc do dzieła. Wykorzystamy już wcześniej przygotowany przez nas plik corntab. Piszemy w konsoli następujące polecenia:
#crontab crontab
Jeśli nie pojawią się żadne komunikaty to wszystko jest ok. Całość możemy sprawdzić wywołując polecenie:
#crontab -l
Wyświetli się lista i możemy sprawdzić, czy nasze polecenia crontab dodał.
6. Koniec
I to już koniec artykułu Mam nadzieję, że w ciekawy sposób przedstawiłem to zaganienie, które od dawna chodziło mi po głowie. Teraz i Wy możecie mieć wygodne sprawdzanie poczty. Przecież wskaźnikiem nie musi być dioda może być co innego. Jak zwykle resztę pozostawiam Waszej inwencji.
Pozdrawiam Was!
-> Filip Cynarski