Witaj Gościu, jeżeli to czytasz to znaczy że nie jesteś zarejestrowany/zalogowany. Kliknij by się zarejestrować. Rejestracja zajmie mniej niż 30 sekund , a dzięki temu zniknie Ci ten dymek oraz będziesz miał pełne możliwośći personalizacji forum do własnych potrzeb.
[How-to] Postfix + SpamAssasin + ClamAV
Pokaż wyniki od 1 do 1 z 1

Temat: [How-to] Postfix + SpamAssasin + ClamAV

  1. #1
    Dołączył
    Dec 2004
    Wiek
    41
    Postów
    12
    Wątków
    4
    Downloads
    0
    Uploads
    0
    Siła Reputacji
    0
    Reputacja
    11

    [How-to] Postfix + SpamAssasin + ClamAV

    Czyli własne konto pocztowe bez spamu i wirusów

    Wstęp.

    Buszując po Internecie wielokrotnie zdarza się iż musimy dokonywać rejestracji w celu poznania zawartości danej strony (np. katalogu torrentów). W dzisiejszych czasach, praktycznie już się nie spotyka witryn, na których w momencie rejestracji nikt nie pyta się nas o adres mailowy. Musimy go najczęściej podać w celu potwierdzenia rejestracji. Podawanie adresów mailowych na takich stronach to pierwszy krok do otrzymywania góry spamu. Można się w pewien sposób przed tym bronić, zakładając ‘śmieciowe’ konta w portalach oferujących darmową pocztę. Jednak ja osobiście nigdy nie lubiłem takiego rozwiązania:
    Po pierwsze, zawsze zapominam haseł do tych kont (lub jak dane konto się nazywało, w końcu nie codziennie rejestruję się w jakiejś witrynie).
    Po drugie, proces zakładania takiego konta najczęściej wymaga wypełnienia wielu obowiązkowych pól (a ja jestem leniwym adminem).
    Po trzecie, odrobina spamu do budowania własnych filtrów Bayes’a też się czasem przyda.
    Jako że w dawnych czasach wykupiłem sobie ‘prawdziwe’ konto pocztowe (z którego jestem bardzo zadowolony), a którego adresu staram się nie podawać nigdzie tak długo jak nie muszę, znalazłem się pewnego dnia w kropce.
    Salomonowym rozwiązaniem jak zwykle okazało się odpowiednie skonfigurowanie kilku aplikacji dostarczanych z naszą ukochaną Mandrivą.
    Czyli zrobienie z naszego własnego komputera serwera pocztowego (załóż sobie tyle kont ile potrzebujesz!).

    Założenia.

    Na tę chwilę użytym systemem operacyjnym jest Mandriva 2007.1 – jednak jestem pewien że podane rozwiązanie będzie działać na każdym Mandrake/Mandriva Linux’u.
    Serwerem jest zwykły komputer PC (PentiumIII 993Mhz + 1GB Ramu), praktycznie wyłączam go jedynie gdy gdzieś wyjeżdżam. Jest wyciszony, tak więc mi nie przeszkadza, prądu sumarycznie zużywa ok. 15zł/miesiąc. Podłączenie do Internetu poprzez Neostradę 1Mbit, zwykły Ruter USR9106 z poustawianym odpowiednio QoS’em aby sieci P2P nie przycięły mi podstawowych usług, czyli poczty, SSH, FTP. W serwisie dyndns mam założone konto i ustawioną dynamiczną domenę agryppa.homelinux.org (do 5 adresów za darmo). Czyli można powiedzieć że jest to ‘prawdziwy serwer’ wystawiony do Internetu.

    Serwer poczty Postfix, filtr SpamAssassin, antywirus ClamAV oraz procmail pochodzą z domyślnie instalowanych w Mandrivie pakietów. Jedynym dodatkowo zainstalowanym oprogramowaniem jest clamsmtp (http://memberwebs.com/nielsen/software/clamsmtp/)

    W tym rozwiązaniu celowo pominąłem oprogramowanie Amavis (jako oferujące za dużo w stosunku do tego co chcemy osiągnąć). Sukcesem jest to, że filtry Bayes’a są wspólne dla naszego klienta pocztowego (w lokalnym koncie) i serwera poczty (czyli usługi systemowej).

    ClamAV, Freshclam i clamSMTP

    Instalujemy antywirusa, tutaj wielu zmian wprowadzać nie trzeba, jedyne co jest potrzebne to adres i port na którym clamd będzie nasłuchiwał przychodzących żądań skanowania. Proponuję także zainstalować pakiet freshclam abyśmy mieli zawsze aktualną bazę wirusów.

    Oto moje pliki konfiguracyjne:
    Kod:
    [root@agryppa etc]# more clamd.conf
    #################################
    ## CLAMD (c) Agryppa 2007.04.25 #
    #################################
    
    LogFile /var/log/clamav/clamd.log
    LogVerbose yes
    PidFile /var/run/clamav/clamd.pid
    TemporaryDirectory /var/lib/clamav/tmp
    DatabaseDirectory /var/lib/clamav
    LocalSocket /var/lib/clamav/clamd.socket
    TCPSocket 3310
    TCPAddr 127.0.0.1
    MaxThreads 64
    ReadTimeout 300
    FollowDirectorySymlinks yes
    FollowFileSymlinks yes
    User clamav
    ExitOnOOM yes
    AlgorithmicDetection yes
    ScanPE yes
    ScanOLE2 yes
    ScanPDF yes
    ScanMail yes
    PhishingSignatures yes
    ScanHTML yes
    ScanArchive yes
    Kod:
    [root@agryppa etc]# more freshclam.conf
    #####################################
    ## FRESHCLAM (c) Agryppa 2007.04.25 #
    #####################################
    
    DatabaseDirectory /var/lib/clamav
    UpdateLogFile /var/log/clamav/freshclam.log
    LogVerbose yes
    PidFile /var/run/clamav/freshclam.pid
    DatabaseOwner clamav
    DNSDatabaseInfo current.cvd.clamav.net
    DatabaseMirror database.clamav.ps.pl
    DatabaseMirror database.clamav.net
    MaxAttempts 5
    ScriptedUpdates yes
    Checks 24
    NotifyClamd /etc/clamd.conf
    Ściągamy oprogramowanie clamsmtp, kompilujemy i instalujemy w domyślnym katalogu (/usr/local), ściągamy plik http://memberwebs.com/nielsen/softwa...artup_0905.tgz w którym mamy plik startowy clamsmtpd który wkopiowywujemy do /etc/init.d (od tego momentu clamsmtpd jest widoczny w zakładce 'usługi' panelu sterowania - jednak uwaga: clamsmtpd uruchamia się przed clamav (i wyłącza automatycznie nie stwierdziwszy obecności clamav). Rozwiązaniem tego jest ręczna zmiana linków w katalogach /etc/rcX.d :
    Z :
    lrwxrwxrwx S79clamd -> ../init.d/clamd*
    lrwxrwxrwx S80clamsmtpd -> ../init.d/clamsmtpd*

    Na:
    lrwxrwxrwx S79clamd -> ../init.d/clamd*
    lrwxrwxrwx S91clamsmtpd -> ../init.d/clamsmtpd*

    Lub dalszy, clamd chwilę się uruchamia (musi zdarzyć pojawić się plik socket'u w /var/run) - pozostawiam to Waszym eksperymentom (wiele zależy tu od szybkości komputera).

    Teraz musimy stworzyć plik /etc/clamsmtpd.conf :

    Kod:
    [root@agryppa etc]# more clamsmtpd.conf
    ########################
    # CLAMSMTP (c) Agryppa #
    ########################
    
    ClamAddress: 127.0.0.1:3310
    Listen: 127.0.0.1:10025
    PidFile: /var/run/clamav/clamsmtpd.pid
    OutAddress: 127.0.0.1:10026
    User: clamav
    TempDirectory: /tmp
    Uruchamiamy demony clamd, freshclam clamsmtpd

    SpamAssassin

    Instalujemy naszego killera spamu I dokonujemy jego konfiguracji w pliku /etc/mail/spamassassin/local.cf :

    Kod:
     [root@agryppa spamassassin]# more local.cf
    ###########################
    # SPAMASSASIN (c) Agryppa #
    ###########################
    
    trusted_networks 10.40.1. <= wasza sieć, opcja nie jest konieczna
    lock_method flock
    required_score 5.0
    use_bayes 1
    bayes_auto_learn 1
    skip_rbl_checks         0
    ok_locales              all
    required_hits 5
    rewrite_header Subject [SPAM]
    report_safe 0
    Uruchamiamy demona spamd

    Procmail.

    Tak tak, filtrowanie poczty pod kątem spamu będziemy robić korzystając z procmaila (nawiasem mówiąc procmail jest rewelacyjnym narzędziem, jak kogoś interesuje jak zbudować prawdziwy automat obsługujący nadchodzącą pocztę to proszę o kontakt).
    Należy zainstalować odpowiednią paczkę i przygotować odpowiedni plik /etc/procmailrc :

    Kod:
    [root@agryppa etc]# more procmailrc
    #####################
    # Procmailrc © Agryppa #
    #####################
    DROPPRIVS=yes
    LOGFILE=$HOME/tmp/procmail.log
    VERBOSE=yes
    
    :0fw
    * < 256000
    | /usr/bin/spamc -f
    
    :0:/tmp/spam.lock
    *^X-Spam-Flag: YES
    $HOME/tmp/spam
    W tym rozwiązaniu spam zostanie przekierowany do oddzielnego pliku, jeśli tego nie chcemy to możemy usunąć ostatnie dwie linijki. Procmail jest wywoływany na żądanie, tym żądaniem jest zawsze email skierowany na nasze lokalne konto! I jeszcze jedna uwaga, mamy tutaj globalny plik procmailrc - będzie miał on zastosowanie do każdego konta lokalnego, jednak nie ma przeciwwskazań aby w domowym katalogu mieć własny plik .procmail z własnymi opcjami filtrowania (czyli np. filtrowanie spamu można zrobić tylko dla jednego konta).

    Postfix.

    Do poprawnego skonfigurowania programu śmiało można się posłużyć odpowiednim modułem z ‘panelu sterowania’. Po jego użyciu powinniśmy otrzymać działający serwer pocztowy, od tego momentu możemy wysyłać pocztę na adres mojekonto@mojserwer.w.dyndns – i lepiej to najpierw sprawdzić czy działa.

    W naszym rozwiązaniu będziemy modyfikować dwa pliki, /etc/postfix/main.cf i /etc/postfix/master.cf

    Mój komputer nie jest masowym serwerem pocztowym, nie korzystam z tysięcy opcji postfix’a, na szczęście wszystko działa i to sobie chwalę.

    Kod:
    [root@agryppa etc]# more main.cf
    #######################
    # POSTFIX (C) Agryppa #
    #######################
    
    readme_directory = /usr/share/doc/postfix-2.3.8/README_FILES
    html_directory = /usr/share/doc/postfix-2.3.8/html
    sendmail_path = /usr/sbin/sendmail.postfix
    setgid_group = postdrop
    command_directory = /usr/sbin
    manpage_directory = /usr/share/man
    daemon_directory = /usr/lib/postfix
    newaliases_path = /usr/bin/newaliases
    mailq_path = /usr/bin/mailq
    global_config_directory = /etc/postfix
    
    # User configurable parameters
    
    mynetworks_style = host
    #delay_warning_time = 4h
    smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandriva Linux)
    unknown_local_recipient_reject_code = 450
    smtp-filter_destination_concurrency_limit = 2
    lmtp-filter_destination_concurrency_limit = 2
    delay_warning_time = 5d
    myhostname = agryppa.homelinux.org
    mydomain = homelinux.org
    mydestination = $myhostname, localhost
    debug_peer_level = 4
    mail_spool_directory = /var/spool/mail
    smtpd_helo_required = yes
    disable_vrfy_command = yes
    maximal_queue_lifetime = 5d
    message_size_limit = 102400000
    mailbox_size_limit = 512000000
    mailbox_command = /usr/bin/procmail
    smtpd_client_restrictions = permit_mynetworks, permit
    smtp_skip_4xx_greeting = yes
    content_filter = scanav:127.0.0.1:10025
    receive_override_options = no_address_mappings
    Kod:
    [root@agryppa postfix]# more master.cf
    #######################
    # POSTFIX (c) Agryppa #
    #######################
    #
    # ==========================================================================
    # service type  private unpriv  chroot  wakeup  maxproc command + args
    #               (yes)   (yes)   (yes)   (never) (100)
    # ==========================================================================
    smtp    inet    n       -       y       -       -       smtpd
    #       -o content_filter=scanav:[127.0.0.1]:10025
    #       -o content_filter=spamassassin
    pickup  fifo    n       -       y       60      1       pickup
      -o content_filter=
      -o receive_override_options=
    cleanup unix    n       -       y       -       0       cleanup
    qmgr    fifo    n       -       y       300     1       qmgr
    tlsmgr  unix    -       -       y       1000?   1       tlsmgr
    rewrite unix    -       -       y       -       -       trivial-rewrite
    bounce  unix    -       -       y       -       0       bounce
    defer   unix    -       -       y       -       0       bounce
    trace   unix    -       -       y       -       0       bounce
    verify  unix    -       -       y       -       1       verify
    flush   unix    n       -       y       1000?   0       flush
    proxymap  unix  -       -       n       -       -       proxymap
    smtp    unix    -       -       y       -       -       smtp
    # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
    relay   unix    -       -       y       -       -       smtp
            -o fallback_relay=
    #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
    showq   unix    n       -       y       -       -       showq
    error   unix    -       -       y       -       -       error
    discard unix    -       -       y       -       -       discard
    local     unix  -       n       n       -       -       local
    virtual   unix  -       n       n       -       -       virtual
    lmtp    unix    -       -       y       -       -       lmtp
    anvil   unix    -       -       y       -       1       anvil
    scache  unix    -       -       y       -       1       scache
    
    maildrop  unix  -       n       n       -       -       pipe
      flags=DRhu user=nobody argv=/usr/bin/maildrop -d ${recipient}
    
    cyrus-deliver     unix  -       n       n       -       -       pipe
      user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
    
    cyrus     unix  -       n       n       -       -       lmtp
      -o lmtp_cache_connection=yes
    
    cyrus-chroot     unix  -       -       y       -       -       lmtp
      -o lmtp_cache_connection=yes
    
    cyrus-inet      unix    -       -       y       -       -       lmtp
      -o lmtp_cache_connection=yes
      -o lmtp_sasl_auth_enable=yes
      -o lmtp_sasl_password_maps=hash:/etc/postfix/cyrus_lmtp_sasl_pass
      -o lmtp_sasl_security_options=noanonymous
    
    uucp      unix  -       n       n       -       -       pipe
      flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
    
    ##### START OF CONTENT FILTER CUSTOMIZATIONS #####
    
    127.0.0.1:10026 inet    n       -       y       -       -       smtpd
      -o content_filter=
      -o smtpd_restriction_classes=
      -o smtpd_client_restrictions=
      -o smtpd_helo_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks=127.0.0.0/8
      -o smtpd_authorized_xforward_hosts=127.0.0.0/8
      -o strict_rfc821_envelopes=yes
      -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
      -o smtpd_client_connection_limit_exceptions=127.0.0.0/8
    
    lmtp-filter     unix    -       -       y       -       -       lmtp
      -o lmtp_data_done_timeout=1200
      -o lmtp_send_xforward_command=yes
    
    smtp-filter     unix    -       -       y       -       -       smtp
      -o smtp_data_done_timeout=1200
      -o smtp_send_xforward_command=yes
    
    scanav  unix    -       -       n       -       16      smtp
        -o smtp_send_xforward_command=yes
    
    spamassassin    unix    -       n       n       -       -       pipe
        user=nobody argv=/usr/bin/spamc -f -e
        /usr/sbin/sendmail -oi -f $(sender) $(recipient)
    Uruchamiamy postfix’a

    Co się dzieje gdy przychodzi poczta?

    Mail przyjmuje postfix, wysyła go do demona clamsmtp który przekazuje go do clamd. Przeskanowany mail jest zwracany do postfix’a, postfix ‘doręcza go’ do programu procmail. Procmail uruchamia się z uprawnieniami lokalnego użytkownika i uruchamia spamc, czyli klienta spamd – mail zostaje przeskanowany i doręczony do lokalnej skrzynki odbiorczej w katalogu /var/spool/mail skąd pocztę pobiera sobie np. kmail

    Proste, szybkie, niekłopotliwe

    Plusem jest to, że możemy mieć np. w kmailu skonfigurowanych kilkanaście kont lokalnych (lub aliasów tego konta) oraz zdalnych. Za każdym razem czy poczta jest odbierana przez kmail bezpośrednio z zdalnego serwera czy też z naszego lokalnego, wykorzystywane są te same filtry Bays’a (a że mamy włączoną opcję nauki, filtry są ciągle rozbudowywane). Mam na myśli tu oczywiście sytuację gdy adresem lokalnej poczty jest nasze konto z którego korzystamy (lub jego aliasy!), inne konta lokalne będą miały własne fitry (chyba że pomęczycie dodatkowo SpamAssasina tak aby jego pliki były dostępne dla grupy a nie tylko jednego użytkownika).

    Podsumowanie.

    Mam nadzieję, iż temat wyczerpałem, ktoś może zapytać – po co to wszystko? Odpowiem, dla wiedzy – nigdy nie wiesz co Ci w życiu będzie potrzebne
    Komentarze mile widziane, chętnie wymienię się widzą na temat innych, podobnych rozwiązań.

    Pozdrawiam.
    piotr@agryppa.homelinux.org





    Reputacja przyznana temu postowi
    Łącznie punktów reputacji: 38

    Komentarze:
     Sir_Yaro  zgadza się   BArdzo, bardzo fajne. Mam cos podobnego zrobione ale zastanawialem sie ostatnio jak to rozbudowac... No i mam odpowiedz...
    Ostatnio edytowane przez suncez ; 31.10.2010 o 15:39

Informacje o wątku

Users Browsing this Thread

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Uprawnienia

  • Nie możesz zakładać nowych wątków
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •