Czemu .mailfilter nie chce słuchać poleceń?


(Saver) #1

Witam, mam mały problem, a więc mam spamassassin’a i każdy spam jest oznaczony w tytule jako “*****SPAM*****”

I teraz chętnie bym zrobił aby wiadomości z “*SPAM*” były przenoszone do pliku SPAM.

Więc regex i if:

root@aaa:~$ cat .mailfilter 

if ( /^"Subject:.*SPAM/ )

	to "$HOME/mail/SPAM"

tylko to nie działa, wszystkie wiadomości trafiają do głównego pliku inbox.


(Un3 E Xgim Y2 Yr8 Ty Q Kq Uj Top Pz) #2

Musisz się chyba podszkolić w bash.

cat .mailfilter - wypisuje zawartość pliku .mailfilter

a dalej … ojej co się stało ?

Bash nie uwzględnia tekstu wypisanego w konsoli, no chyba że zapiszesz go do jakieś zmiennej lokalnej …

Tu masz bardzo dobry kurs bash:

http://dief.republika.pl/main.html

Sam się z niego uczyłem.

Mogę napisać program lub skrypt dla Ciebie.

Znam C++, Jave, Assemblera, Bash i parę innych.

Podaj przykładowy plik z wiadomościami i spamem.


(Saver) #3

poleceniem cat chciałem pokazać co mam w pliku…

czyli też nie wierz jak to naprawić?


(Un3 E Xgim Y2 Yr8 Ty Q Kq Uj Top Pz) #4

Cóż …

Używając bash`a napisałem nie jeden skrypt, ale nie o takiej problematyce.

Chodziło mi o to, że jak wpiszesz cat nazwa_pliku to tylko wypisze jego zawartość i nic z tym nie zrobi, nie ważne co po tym wpiszesz.

Możesz jakieś polecenie przechować do zmiennej np.:

pid_x = pidof X

Pokombinowałem trochę i udało mi się napisać coś takiego:

echo 1 >> x

echo 2 >> x

echo 3 >> x

cat x | while read linia; do echo $linia; done

Czyli:

Dopisz do pliku x 1.

Dopisz do pliku x 2.

Dopisz do pliku x 3.

W wypisanej zawartości pliku x: dopóki można odczytać lnie, zapisz jej zawartość do zmiennej linia i wypisz zawartość zmiennej linie

W efekcie wypisze:

1

2

3

, czyli zawartość pliku, lecz nie od razu, tylko linijka po linijce.

Możesz już chyba stąd dokończyć swój skrypt, porównując zmienną linia z dowolną wartością.

Swoje działanie umieszczasz między ( … ) do ,a ; done ( … ).

W razie czego możesz użyć man by sprawdzić składnię tych czy innych poleceń.


(Saver) #5

No to chyba każdy wie.

Udało mi się poprawić skrypt, teraz działa :slight_smile:

root@aaa:~$ cat .mailfilter 

if ( /^"Subject:.*spam/ )

   to "$HOME/mail/SPAM"