| Siec TCP/IP || Otoczenie Sieciowe || Poczta || Usnet || FTP || Konto Shellowe || Czat || IRC || Serwer PROXY |

Poczta e-mail

Założenia- krótki wstęp

System pocztowy na serwerze banita.pl jest "wspomagany" poprzez procmail do obsługi dodatkowych bajerów w stylu filtrowania poczty od syfu zwanego spamem oraz do powiadamiania o nowej poczcie na SMS/Gadu-Gadu/Winpopup i automatycznych odpowiedzi. Główne założenia tego systemu to że każdy użytkownik oddzielnie i samodzielnie może włączać/wyłączyć ochronę antyspamową (dlatego nie ma filtrów na poziomie MTA czyli serwera poczty). Podobnie sprawa ma się z sprawa z pozostałymi bajerami.

Kolejne założenie że obsługa ze strony usera ma być możliwie prosta i dlatego user uzywa tylko plików tekstowych , które musi poprzez ftp wrzucić na swe konto (opis od strony usera jest gdzieś tutaj na dole strony >> Poczta). Dlaczego pliki tekstowe? Bo nie potrafiłem wtedy wymyślić czegoś lepszego i równie prostego (obecnie w toku prac jest zastąpienie tego pluginem do SquirrelMail.

No i ostatnia zaleta tandemu MTA (np. Sendmail lub Postfix) plus procmail to to że jest on strasznie uniwersalny, bo pod większość jeśli nie wszystkie uniksowe  serwery poczty można go podłączyć. Wady (bo takie też są) to wydajność ale o to się martw przy b. dużej ilości kont.

No to jedziemy...

Może dla jednych będzie to balanie proste ale niektóre osoby które doznają szoku jak zobaczą plik z regułkami dla procmail + skrypty. Opis jest step-by-step (dla systemów w stylu linux dystro RedHat, ale w większości innych tak samo) więc tylko w większości wypadków tylko kopiować i wklejać.

Na czerwono zaznaczyłem system antyspamowy, na zielono resztę (powiadamiania i autoresponder), obie części działają niezależnie, wiec możesz sobie wybrać co bierzesz.

Ochrona antyspamowa działa o bazę Polspam.org oraz system filtrowania po treści maili co się zwie SpamAssassin.

Z prawami root wyedytuj plik /etc/crontab i dopisz linie

======================================

05 * * * * root /etc/mail/spamer &>/dev/null

======================================

Teraz plik /etc/mail/spamer zawiera coś takiego:

======================================

#!/bin/bash -x
# aktualizuje baze spamerow z polsapmem
cd /etc/mail
/etc/mail/sync_web.pl
LICZNIK=`cat /etc/mail/spammers.txt |wc -l`
DATE=`/bin/date`
echo "$LICZNIK $DATE" >> /var/log/procmail/sys.log
# sortowanie bazy na maile i domeny
cat /etc/mail/spammers.txt |grep "@" |awk '{print $1}' > /etc/mail/spammers-mail.txt
cat /etc/mail/spammers.txt |grep -v "@" |awk '{print "@"$1}' > /etc/mail/spammers-domena.txt

======================================

Plik /etc/mail/sync_web.pl o pobrania na końcu tej strony w "Mega Pack"

Plik /etc/mail/spammers.txt czyli bazę spamerów polspam.org, do pobrania na końcu tej strony w "Mega Pack"

Teraz tworzysz plik globalny procmaila - /etc/procmailrc, komentarze w pliku

======================================

SHELL=/bin/bash
## autor Marcin Moczkowski (glappo@banita.pl)
# wstęp do zabawy czyli definiujemy zmienne
VERBOSE=off
#LOGFILE=/var/log/procmail/procmail.log
DATE=`/bin/date`
FROM=`formail -rzx 'To:'`
FROMDO=`formail -rzx 'To:'|awk -F@ '{print "@"$2}'`
TO=`formail -x"To:"`

# znakowanie poczty w oparciu o bazę polspam z mailami
:0 fBw
* ? grep "${FROM}" /etc/mail/spammers-mail.txt
| formail -i "X-Polspam: yes" ; \
echo "$DATE from $FROM to $TO Polspam-mail" >> /var/log/procmail/sys.log

# znakowanie poczty w oparciu o bazę polspam z domenami
:0 fBw
* ? grep "${FROMDO}" /etc/mail/spammers-domena.txt
| formail -i "X-Polspam: yes" ; \
echo "$DATE from $FROM to $TO Polspam-domena" >> /var/log/procmail/sys.log

# znakowanie poczty w oparciu o bazę maili recydiwistów wyłapanych przez spamassasin
:0 fBw
* ? grep "${FROM}" /etc/mail/spamassassin-mail.txt
| formail -i "X-Polspam: yes" ; \
echo "$DATE from $FROM to $TO Spamassassin-mail" >> /var/log/procmail/sys.log

# teraz tutaj możesz dodać jeszcze dodatkowe regułki antyspamowe

======================================

Teraz udajesz się na stronkę SpamAssassin, pobierasz program i go instalujesz (najprościej jeśli użyjesz rpm). Tworzysz globalny plik dla tego pogramu w /etc/mail/spamassassin/local.cf. Możesz go wygenerować na stronie http://www.yrex.com/spam/spamconfig.php dla wersji SpamAssassin 2.5x lub skopiować poniższy. Czyli /etc/mail/spamassassin/local.cf

======================================

# This is the right place to customize your installation of SpamAssassin.
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
#rewrite_subject 0
#report_safe 1

# SpamAssassin config file for version 2.5x
# generated by http://www.yrex.com/spam/spamconfig.php (version 1.01)

# How many hits before a message is considered spam.
required_hits 5.0

# Whether to change the subject of suspected spam
rewrite_subject 1

# Text to prepend to subject if rewrite_subject is used
subject_tag *****SPAM*****

# Encapsulate spam in an attachment
report_safe 1

# Use terse version of the spam report
use_terse_report 1

# Enable the Bayes system
use_bayes 1

# Enable Bayes auto-learning
auto_learn 1

# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all

======================================

Teraz przechodzimy do katalogu przykładowego usera czyli /home/user i tworzymy plik .procmailrc, czyli scieżka do pliku to /home/user/.procmailrc . Ten plik ma należeć do usera oczywiście., a w nim ma się znaleźć:

======================================

# ten plik .procmailrc zebral w calosc Marcin Moczkowski (glappo@banita.pl)
SHELL=/bin/bash
VERBOSE=off
#LOGFILE=$HOME/.procmail.log
# zmiene do powiadomień o nowej poczcie
TELEFON=`cat $HOME/sms.txt |tr -d '\r'`
UIDGG=`cat $HOME/gg.txt |tr -d '\r'`
KOMP=`cat $HOME/komp.txt |tr -d '\r'`

# sprawdzanie czy user chce filtrować pocztę
POLSPAM=`if test -e $HOME/polspam.txt ; then echo "$DEFAULT" ; else \
if test -e $HOME/mailspam.txt ; then echo "mailspam.txt" ; \
else echo "/dev/null" ; fi ; fi`
SPAMDIR=`if test -e $HOME/mailspam.txt ; then echo "mailspam.txt" ; else echo "/dev/null" ; fi`
SPAMER=`if test -e $HOME/spamer.txt ; then cat $HOME/spamer.txt |tr -d '\r' > $HOME/spamer.txt ; /
echo "$HOME/spamer.txt" ; fi`

#
SUBJECT=`formail -zxSubject:`
FROM=`formail -rt -xTo:`
BODY=`formail -c | mimecut`
# kasowanie spamu z bazy polspam
:0
* ^X-Polspam: yes
$POLSPAM

# filterek spamu w oparciu o bazę usera
:0
* ? formail -x"From" -x"From:" -x"Sender:" \
-x"Reply-To:" -x"Return-Path:" -x"To:" \
| grep -is -f $SPAMER
$SPAMDIR

# filterek spamu w oparciu o spamassassin
:0fw: spamassassin.lock
* < 256000
| spamassassin

# pomocne zmiene
TO=`formail -x"To:"`
DATE=`/bin/date`

# przesylanie syfu wyłapanego przez  spamassassin na konto spam@twoja.domena.pl
:0 c
* ^X-Spam-Status: Yes
| $SENDMAIL -oi spam@twoja.domena.pl

# kasowanie spamu złapanego przez spamassassin
:0:
* ^X-Spam-Status: Yes
$POLSPAM
# powiadamianie o nowej poczcie na sms
:0 c
* .*
| if test -e $HOME/sms.txt ; then \
sendsms $TELEFON "\"$SUBJECT\" $BODY" $FROM ; fi
# powiadamianie o nowej poczcie na Gadu-Gadu
:0 c
* .*
| if test -e $HOME/gg.txt ; then \
www2gg $UIDGG "Masz nowy mail OD: $FROM TEMAT: \"$SUBJECT\" TRESC: $BODY" ; fi
# powiadamianie o nowej poczcie na Winpopup
:0 c
* .*
| if test -e $HOME/komp.txt ; then \
echo "Masz nowy mail OD: $FROM TEMAT: $SUBJECT TRESC: $BODY" | smbclient -M "$KOMP" ; fi
# autoresponder
:0 Whc: vacation.lock
* !^FROM_DAEMON
* !^X-Loop: $LOGNAME@$HOSTNAME
| if test -e $HOME/odp.txt ; then formail -rD 8192 vacation.cache ; fi

:0 ehc
| if test -e $HOME/odp.txt ; then (formail -rA"Precedence: junk" \
-A"X-Loop: $LOGNAME@$HOSTNAME" ; cat $HOME/odp.txt \
|tr '\214\217\237\271\245\234' '¦¬Ľ±ˇ¶' ; ) | $SENDMAIL -oi -t ; fi

======================================

To teraz żeby dokończyć system antyspamowy, stwórz konto spam w systemie na które będzie kierowana poczta wyłapana przez SpamAssassin, w celu wyłapywania recydywistów czyli jeśli jeszcze raz ktoś zespamuje  z tego maila to już go mamy w bazie /etc/mail/spamassassin-mail.txt.Więc teraz "specjalny"plik dla usera spam czyli plik /home/spam/.procmailrc

=======================================

# ten plik .procmailrc zebral w calosc Marcin Moczkowski (glappo@banita.pl)
SHELL=/bin/bash
VERBOSE=off
#LOGFILE=$HOME/.procmail.log
#  spam z bazy polspamu tradycyjnie tniemy
POLSPAM=`if test -e $HOME/polspam.txt ; then echo "$DEFAULT" ; else \
if test -e $HOME/mailspam.txt ; then echo "mailspam.txt" ; \
else echo "/dev/null" ; fi ; fi`
SPAMDIR=`if test -e $HOME/mailspam.txt ; then echo "mailspam.txt" ; else echo "/dev/null" ; fi`

# adres zwrotny
FROM=`formail -rtz -xTo:`
TO=`formail -x"To:"`
DATE=`/bin/date`

:0
* ^X-Polspam: yes
$POLSPAM
# dopisywanie spamerów do bazy
:0:
* ^X-Spam-Status: Yes
| echo "$DATE from $FROM to $TO Spamassassin" >> /var/log/procmail/sys.log ; \
echo "$FROM" |grep "@" |grep -v banita.pl >> /etc/mail/spamassassin-mail.txt

==================================

Ostatni etap ochrony antyspamowej to utworzenie pliku gdzie będą lądowały logi tego co nasz filterek wyłapał, czyli utwórz plik /var/log/procmail/sys.log do którego może zapisywać tylko user root i grupa spam do której należy tylko user spam

========================================

Wracając do powiadamiania o nowej poczcie na SMS/Gadu-Gadu/Winpopup i Autorespondera, do tego co wyżej było na zielono potrzebujesz paru pliczków:

  • sendsms - jakiś skrypt do wysłania sms
  • www2gg - sklejony w całość pliki bramki www2gg ze strony http://gg.wha.la/ UWAGA: musisz zarejestrować własnego usera gg i potem wyedytować plik www2gg i wpisać go  w pola
    $numer_bramki = "tutaj cyferki wpisz";
    $haslo_bramki = "hasło";
  • smbclient - pliczek z pakietu samba czyli zapraszam na http://samba.org/
  • mimecut - pliczek czyszczący maile z m.in. tagów html

No koleś musze ci pogratulować że jakimś cudem aż tutaj dotarłeś czyli na koniec textu.

Całość czyli wszystkie opisane pliki plus te brakujące trzy powyższe (poza smbclient) możesz pobrać poniżej

procmail_banita.tar.gz  (1,9 MB) <<< paczuszka z filterkami spamowymi i bazą polspam + powiadamianie poczcie na SMS/Gadu-Gadu/Winpopup i Autoresponder

opisy dla userów:

Konfiguracja powiadamiania o Mailach na SMS/ Gadu-Gadu/ Popup
Konfiguracja filtrów antyspamowych
Konfiguracja automatycznego odpowiadania na maile

 

Marcin Moczkowski

pytania zadawać najlepiej na forum ;-)

 

 


Drukuj Dokument