200 likes | 326 Views
Imię Nazwisko Grupa studencka. Procmail: Możliwości i zastosowania. procmail :: informacje wstępne. narzędzie do manipulacji przychodzącej pocztą elektroniczną, najczęściej obecnie używane, najbardziej zaawansowane, http://www.procmail.org/. procmail :: możliwości.
E N D
Imię Nazwisko Grupa studencka Procmail: Możliwości i zastosowania.
procmail :: informacje wstępne narzędzie do manipulacji przychodzącej pocztą elektroniczną, najczęściej obecnie używane, najbardziej zaawansowane, http://www.procmail.org/.
procmail :: możliwości przychodzący list może być zapisany do pliku, przesłany na inny adres lub grupę adresów e-mail, przekazany do obróbki przez dowolny program lub polecenie, możliwość łączenia funkcji (także kolejno kilku) z dowolnie złożonymi warunkami, przeszukiwanie dowolnego pola nagłówka, a także samej treści listu, warunki tak-nie, definiowanie reguł oceniających listy punktami.
procmail :: zastosowania sortowanie poczty do odpowiednich folderów, zapisywanie do plików, eliminowanie listów spełniających określone warunki, przekazywanie (forward) listów, przetwarzanie wiadomości w innych programach, powiadamianie o nowej poczcie na telefon komórkowy, autorespondery.
procmail :: program program powinien być wywoływany z pliku .forward poleceniem „|/usr/local/bin/procmail”, polecenie „|exec /usr/local/bin/procmail" – oszczędność pamięci podczas działania programu, program przetwarza reguły zawarte w pliku .procmailrc, do każdego przychodzącego listu uruchamiana jest osobna kopia programu (proces).
procmail :: plik .procmailrc ^ poczatek linii . dowolny znak .+ dowolny ciag znaków (ale co najmniej jeden) .* dowolny ciag znaków (takze ciag pusty znaków...) * zero lub wiecej powtórzen wyrazenia który jest przed "gwiazdka" / dowolny ciag znaków | wywołanie polecenia systemu Unix ! uzyty na poczatku warunku jest zaprzeczeniem $ koniec linii {} otwarcie i zamkniecie bloku danych ab|cd sekwencje znaków `ab' lub `cd' (alternatywa) a* dowolna sekwencja z a na poczatku (jedno i wiecej) (abc)* sekwencja abc powtarza sie zero lub kilka razy (dowolna ilosc powtórzen) • plik reguł filtrowania, • każda reguła składa się z kilku (typowo trzech) wierszy, • pierwszy wiersz - początek reguły, rozpoczyna się znakami „:0”, • po nim może wystąpić kilka dodatkowych znaków, modyfikujących sposób przetwarzania reguły, • gwiazdka „*” na początku każdej reguły, • w kolejnych wierszach umieszczamy jeden lub więcej warunków, • ostatni wiersz zawiera akcję, która ma być wykonana w przypadku spełnienia warunku.
procmail :: możliwości :: warunki warunek będzie spełniony jeżeli w którymkolwiek nagłówku wystąpi wyrażenie „adult”, * adult sprecyzowanie, które nagłówki będą przeszukiwane (przeszukiwanie tematu listu), * ^Subject:.*adult przeszukiwanie pola nadawcy. * ^From:.*konto@serwer.com.pl Warunki mają postać wrażeń regularnych, domyślnie przeszukiwany jest tylko nagłówek listu.
procmail :: możliwości :: warunki c.d. „.” w wyrażeniach regularnych zastępuje dowolny znak, warunek zostanie też spełniony przy np: konto@serwercom.pl, i dlatego przed „.” stosuje się „\”, * ^From:.*konto@serwer\.com\.pl alternatywa wyrażeń – warunek jest spełniony, gdy temat listu zawiera którekolwiek z oddzielonych „|” wyrażeń, * ^Subject:.*(adult|sex|girls|porn) warunek pasuje do listów wysyłanych przez automaty, zwrotów odbitej poczty, listów z niektórych list dyskusyjnych, * ^FROM_DAEMON nie jest wyrażeniem regularnym – warunek jest spełniony gdy wielkość listu jest większa/mniejsza od podanej wartości bajtów, * < liczba * > liczba
procmail :: możliwości :: warunki c.d. • „H” - przeszukuje nagłówek, • „B” – przeszukuje treść listu, • „c:” – pozostawienie listu w naszej skrzynce pocztowej, Nagłówek oraz treść listu zostaną przeszukane na okoliczność wystąpienia słowa „zebranie” i (po spełnieniu warunku) wiadomość zostanie przekazana na adres kolega@serwer.com.pl. :0 HBc * spotkanie ! kolega@serwer.com.pl • „!” – zaprzeczenie, Wiadomości pochodzące z adresu konto@serwer.com.pl nie zawierające w temacie ciągu znaków „piln” (pilne, pilna, pilnie) i nie posiadające priorytetu „pilne”, zostaną zapisane w pliku „biurowe”. :0: * ^From:.*konto@serwer.com.pl * !^Subject:.*piln * !^Priority: urgent biurowe
procmail :: możliwości :: łączenie reguł połączenie 2 poprzednich przykładów: zapisywanie i przekaz wiadomości, „c:” - program pomimo sprawdzenia pierwszego warunku i wykonania związanej akcji (zapisanie wiadomości) przechodzi do sprawdzenia kolejnej reguły, użycie „A” zapobiega sprawdzaniu tej samej reguły kilka razy, reguła z „A” jest przetwarzana gdy warunek w poprzedniej regule nie zawierającej „A” jest prawdziwy. :0 c: * ^From:.*konto@serwer.com.pl zapisane_wiadomości :0 * ^To:.*konto@serwer.com.pl ! kolega@firma.com.pl :0 c: * ^From:.*konto@serwer.com.pl zapisane_wiadomości :0 A * ^To:.*konto@serwer.com.pl ! kolega@firma.com.pl
procmail :: możliwości :: łączenie reguł c.d. użycie zagnieżdżonego bloku reguł, brak warunków przy regułach w bloku, jeżeli warunek zostanie spełniony to wykonywana akcja będzie polegała na przetworzeniu reguł zawartych w bloku pomiędzy znakami „{„ i „}”. :0 * ^From:.*konto@serwer.com.pl { :0 c: zapisane_wiadomości :0 ! kolega@firma.com.pl }
procmail :: możliwości :: semafory listy które spełniają warunek zostaną skompresowane do pliku konto.gz, „|” wywołuje program gzip, zastosowanie semafora poprzez użycie drugiego „:” „w” – oczekiwanie z opuszczeniem semafora na zakończenie programu gzip. :0 w: * ^To:.*konto@serwer.com.pl | /usr/local/bin/gzip >>konto.gz W przypadku otrzymania w tym samym czasie kilku listów do każdego z nich uruchamiana jest osobna kopia programu procmail i próba jednoczesnego zapisu kilku listów do jednego pliku spowodowałoby to brak spójności pliku. Program który pierwszy rozpocznie zapisywanie „opuszcza semafor” uniemożliwiając to innym kopiom programu do czasu zakończenia działania i „podniesienia semafora”.
procmail :: możliwości :: liczenie punktów przyznawanie punktów po spełnieniu warunków, kasowanie listu po osiągnięciu założonej ilości punktów. 1 :0 B 2 * -3^0 3 * 1^1 money 4 /dev/null • linia 2: „* -3^0” – przypisanie wartości początkowej -3, • linia 3: x^y – „w” jest liczbą punktów doliczaną za wystąpienie wyrażenia, „y” wykładnik potęgi, określa jak bardzo będą się liczyć kolejne wystąpienia w stosunku do poprzedniego: 1 wystąpienie = x 2 wystąpienie = x*y 3 wystąpienie = x*y*y, itd. Cały warunek uważany jest za spełniony jeżeli ostatecznie suma punktów jest większa od zera. Trzykrotne wystąpienie wyrażenia „money” spowoduje skasowanie listu.
procmail :: zastosowania :: zapisywanie wiadomości :0: *^From:.*konto@serwer.com.plzapisane_wiadomosci :0 c: *^From:.*konto@serwer.com.plzapisane_wiadomosci • linia 1 – początek reguły, • linia 2 – określenie sprawdzanego warunku, • linia 3 – wykonywane polecenie w przypadku spełnienia warunku. Każdy list z adresu konto@serwer.com.pl zostanie zapisany do pliku zapisane_wiadomosci zamiast w skrzynce pocztowej. W przypadku grup dyskusyjnych uwzględniać należy pole „To:” . Dodanie w pierwszej linii „c:” dodatkowo pozostawi list w skrzynce pocztowej.
:0 *^Subject:.*pilne mail/pilne :0 *^From:.*jan@serwer.com.pl mail/jan :0 c *!^From:.*(zaufany@serwer.pl|zaufany1@serwer.pl) *^Subject:.*(money|cash|sex|porn) /dev/null procmail :: zastosowania :: sortowanie i usuwanie • działanie nie dotyczy zaufanch adresów • jeżeli w temacie wiadomości znalezione zostanie którekolwiek ze słów: money, cash, sex, porn, wiadomość zostanie zapisana do pliku /dev/null, czyli skasowana. • po spełnieniu warunku (tutaj: wiadomość od określonego adresata lub zdefiniowany ciąg znaków w temacie) wiadomość zostanie skopiowana do odpowiedniego folderu.
procmail :: zastosowania :: przekaz poczty linia 1 – „:0” – rozpoczęcie przetwarzania reguł „c” – list pozostaje na koncie, linia 2 – adres na który ma być przekazana wiadomość. Wiadomość zostanie przekazana na adres konto@serwer.com.pl i nie będzie zapisana w lokalnej skrzynce pocztowej. Dodanie parametru „c” dodatkowo pozwoli na zachowanie przekazywanego listu. „!” jest poleceniem wysłania listu na podany adres. 1 :0 2 ! konto@serwer.com.pl 1 :0 c 2 ! konto@serwer.com.pl
1 :0 hc 2 ^TOkonto@serwer\.com\.pl 3 * !^FROM_DAEMON 4 * !^X-Loop: konto@serwer\.com\.pl 5 | (formail -r -A "Precedence: junk" \ 6 -A "X-Loop: konto@serwer.com.pl" ; \ 7 cat info.reply) | $SENDMAIL -t procmail :: zastosowania :: autoresponder • linia 1 – „h” – przekazanie do programu formail tylko nagłówka listu, „c” – list pozostaje na koncie, • linia 2 – uwzględniany jest adres konto@serwer.com.pl, • linia 3 – ignorowane są listy od automatów pocztowych, • linia 4 – zabezpieczenie przed pętlą pocztową, • linia 5 i 6 – program formail generuje nagłówek odpowiedzi: • „-r” generuje pole „To:” na podstawie adresu nadawcy oryginału, oraz „Subject:Re:” będący tematem wiadomości, • „-A” dodaje do nagłówka pola „Precedence:” i „X-Loop:” – pierwszy oznacza list jako pochodzący z automatu, a drugi zabezpiecza list przed powtórną odpowiedzią na niego, • linia 7 – komenda „cat” dopisuje odpowiedź z pliku „info.reply” i wszystko zostaje przekazane do programu sendmail.
procmail :: zastosowania :: powiadomienie sms linia 1 – „h” – przekazanie do programu formail tylko nagłówka listu, „c” – list pozostaje na koncie, linia 2 – ignorowane są listy od automatów pocztowych, linia 3 – program egrep przekazuje wartości pól „From:” i „Subject:”, „head -2” określa ile linii ma zostać przekazanych do programu sms, powiadomienie sms powinno być umieszczane na końcu pliku aby nie otrzymywać wiadomości np. o spamie. 1 :0 h c 2 * !^FROM_DAEMON 3 | egrep "From:|Subject:" | head -2 | /usr/bin/sms 60290000
procmail :: zastosowania :: usuwanie spamu :0 HB * -250^0 * -1000^0 ^FROM.+@.+\.pl * -2000^0 ^FROM.+@.+\.serwer\.com\.pl * 100^0 !^From: * 200^0 !^To: * 100^0 !^Subject: * 200^0 Received.*(advertise|stealth|bulk|sex) * 100^2 Received.(comanche|apache).+(net|com|org)? * 50^2 ^(From|To).*(sex|adult|porn) * 200^0 Message-ID.*(advert|bulk|lov(e|ing)|aegispam) * 190^0 ^Subject.*(\ sex|adult|porn|gay|erotic|advert|\ xxx\ | zaprosz|bulk.+email|revenue|expense|profit|sperm|money|earn| cash|free|lingerie) * 20^0 ^Subject.*\$ * 100^0 ^Subject.*\$\$ * 500^0 ^Subject.*\$\$\$ * 20^0 ^Subject.*\! * 100^0 ^Subject.*\!\! * 300^0 ^Subject.*\!\!\! * 20^2 \ sex|^sex|adult|erotic|gay|porn|chain.+letter|sponsor|\ xxx\ | ^xxx\ |bulk|girls|hardcore|\ cum|advertise|remove|revenue| expense|profit|sperm|money|marketing|targeted\ search| collect.+email|\ pay|lingerie|org(y|ies)|teens|sign\ up\ now /dev/null początkowa wartość punktów odejmowanie punktów listom z zaufanych adresów/domen brak pól Od, Do, Temat charakterystyczne fragmenty adresów spamerów wystąpienie w temacie listu charakterystycznych słów wystąpienie w temacie listu 1, 2, 3 razy znaków $ lub ! poszukiwanie słów kluczowych w treści listu skasowanie listu, jeśli liczba uzyskanych punktów > 0