Φίλτρα ηλ. αλληλογραφίας

Σήμερα, ένα από τα σημαντικότερα προβλήματα του email είναι τα μαζικά ανεπίκλητα email (Unsolicited Bulk Email). Γνωστά και ως SPAM, αυτά τα μηνύματα ενδέχεται να περιέχουν ιούς ή άλλα είδη κακόβουλου λογισμικού. Σύμφωνα με ορισμένες πηγές, αυτά τα μηνύματα αποτελούν την πλειονότητα των email που διακινούνται στο Διαδίκτυο.

This section will cover integrating Amavisd-new, Spamassassin, and ClamAV with the Postfix Mail Transport Agent (MTA). Postfix can also check email validity by passing it through external content filters. These filters can sometimes determine if a message is spam without needing to process it with more resource intensive applications. Two common filters are opendkim and python-policyd-spf.

  • Το Amavisd-new είναι ένα πρόγραμμα-περίβλημα που μπορεί να καλεί διάφορα άλλα προγράμματα φιλτραρίσματος περιεχομένου, για εντοπισμό σπαμ, ιών, κτλ.

  • Το Spamassassin χρησιμοποιεί διάφορους μηχανισμούς για να φιλτράρει την ηλ. αλληλογραφία με βάση το περιεχόμενο των μηνυμάτων.

  • Το ClamAV είναι μία αντιική εφαρμογή ανοιχτού κώδικα.

  • opendkim implements a Sendmail Mail Filter (Milter) for the DomainKeys Identified Mail (DKIM) standard.

  • Το python-policyd-spf επιτρέπει ελέγχους Sender Policy Framework (SPF) με χρήση του Postfix.

Δείτε πώς συνδυάζονται όλα μαζί:

  • Το μήνυμα email γίνεται δεκτό από το Postfix.

  • The message is passed through any external filters opendkim and python-policyd-spf in this case.

  • Το Amavisd-new προχωρεί σε επεξεργασία του μηνύματος.

  • Χρησιμοποιείται το ClamAV για τη σάρωση του μηνύματος. Αν το μήνυμα περιέχει ιό, το Postfix απορρίπτει το μήνυμα.

  • Στη συνέχεια, τα "καθαρά" μηνύματα αναλύονται από το Spamassassin για να διαπιστωθεί αν είναι σπαμ. Τέλος, το Spamassassin προσθέτει γραμμές X-Header, επιτρέποντας στο Amavisd-new να συνεχίσει την επεξεργασία του μηνύματος.

Π.χ., αν ένα μήνυμα έχει βαθμολογία σπαμ πάνω από πενήντα, το μήνυμα μπορεί να αφαιρεθεί από την ουρά και να μη χρειαστεί ποτέ να ενοχλήσει τον παραλήπτη. Ένας άλλος τρόπος προσέγγισης των ύποπτων μηνυμάτων είναι η αποστολή τους στον Mail User Agent (MUA), έτσι ώστε ο χρήστης να τα χειριστεί όπως επιθυμεί.

Εγκατάσταση

Δείτε το “Postfix” για οδηγίες εγκατάστασης και ρύθμισης του Postfix.

Για να εγκαταστήσετε τις υπόλοιπες εφαρμογές εισάγετε τα ακόλουθα στο τερματικό:

sudo apt-get install amavisd-new spamassassin clamav-daemon
sudo apt-get install opendkim python-policyd-spf

Υπάρχουν ορισμένα προαιρετικά πακέτα, συμπληρωματικά του Spamassassin, για καλύτερη προστασία από τα σπαμ:

sudo apt-get install pyzor razor

Πέρα από τις κύριες εφαρμογές φιλτραρίσματος, για ορισμένα συνημμένα απαιτούνται και εργαλεία συμπίεσης:

sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip
[Σημείωση]

If some packages are not found, check that the multiverse repository is enabled in /etc/apt/sources.list

If you make changes to the file, be sure to run sudo apt-get update before trying to install again.

Ρυθμίσεις

Τώρα, κάντε τις απαραίτητες ρυθμίσεις για να επιτρέψετε τη συνεργασία όλων των εργαλείων στο φιλτράρισμα του email.

ClamAV

Η προεπιλεγμένη συμπεριφορά του ClamAV καλύπτει τις ανάγκες μας. Για περισσότερες επιλογές ρύθμισης του ClamAV, ανατρέξτε στα αρχεία ρυθμίσεων στο /etc/clamav.

Προσθέστε το χρήστη clamav στην ομάδα amavis, έτσι ώστε το Amavisd-new να διαθέτει πρόσβαση για τη σάρωση αρχείων:

sudo adduser clamav amavis

Spamassassin

Το Spamassassin εντοπίζει αυτόματα και χρησιμοποιεί τα διάφορα προαιρετικά εργαλεία. Άρα, δεν απαιτείται ρύθμιση των pyzor και razor.

Τροποποιήστε το /etc/default/spamassassin για να ενεργοποιήσετε την υπηρεσία Spamassassin. Αλλάξτε το ENABLED=0 σε:

ENABLED=1

Τώρα, εκκινήστε την υπηρεσία:

sudo /etc/init.d/spamassassin start

Amavisd-new

Καταρχάς, ενεργοποιήστε τον εντοπισμό σπαμ και ιών του Amavisd-new, τροποποιώντας το αρχείο /etc/amavis/conf.d/15-content_filter_mode:

use strict;

# Μπορείτε να τροποποιήσετε το αρχείο για να επανενεργοποιήσετε τον έλεγχο
# για σπαμ μέσω spamassassin, καθώς και τον εντοπισμό ιών.

#
# Προεπιλεγμένη λειτουργία αντιιικού ελέγχου
# Αφαιρέστε τα σχόλια από τις δύο παρακάτω γραμμές για να την ενεργοποιήσετε
#

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Προεπιλεγμένη λειτουργία ελέγχου για σπαμ
# Αφαιρέστε τα σχόλια από τις δύο παρακάτω γραμμές για να την ενεργοποιήσετε
#

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # διασφάλιση ορισμένης επιστροφής

Η επιστροφή των μηνυμάτων σπαμ στον αποστολέα μπορεί να αποδειχθεί κακή ιδέα, καθώς η διεύθυνση αποστολέα συχνά είναι πλαστή. Μπορείτε να τροποποιήσετε το /etc/amavis/conf.d/20-debian_defaults και να ορίσετε το $final_spam_destiny ως D_DISCARD (διαγραφή) αντί για D_BOUNCE (επιστροφή), ως εξής:

$final_spam_destiny       = D_DISCARD;

Επιπροσθέτως, μπορείτε να προσαρμόσετε τις ακόλουθες επιλογές, ώστε να σημειώνονται περισσότερα μηνύματα ως σπαμ:

$sa_tag_level_deflt = -999; # προσθήκη κεφαλίδων πληροφόρησης σπαμ από αυτό το επίπεδο και πάνω
$sa_tag2_level_deflt = 6.0; # προσθήκη κεφαλίδων 'spam detected' (εντοπίστηκε σπαμ) σε αυτό το επίπεδο
$sa_kill_level_deflt = 21.0; # εκκίνηση ενεργειών αποφυγής σπαμ
$sa_dsn_cutoff_level = 4; # επίπεδο σπαμ πάνω από το οποίο δεν αποστέλλεται DSN

Αν το όνομα του εξυπηρετητή είναι διαφορετικό από την εγγραφή MX του τομέα, ίσως χρειαστεί να ορίσετε χειροκίνητα την επιλογή $myhostname. Επιπλέον, αν ο εξυπηρετητής λαμβάνει email για πολλαπλούς τομείς, θα πρέπει να προσαρμοστεί κατάλληλα η επιλογή @local_domains_acl. Τροποποιήστε το αρχείο /etc/amavis/conf.d/50-user:

$myhostname = 'mail.example.com';
@local_domains_acl = ( "example.com", "example.org" );

Αφού ολοκληρωθεί η ρύθμιση, το Amavisd-new θα πρέπει να εκκινηθεί εκ νέου:

sudo /etc/init.d/amavis restart
Λευκή λίστα DKIM

Το Amavisd-new μπορεί να ρυθμιστεί έτσι ώστε να προσθέτει αυτόματα στη Λευκή λίστα τις διευθύνσεις που προέρχονται από τομείς με έγκυρα κλειδιά τομέα (domain keys). Το αρχείο /etc/amavis/conf.d/40-policy_banks περιέχει ορισμένους προκαθορισμένους τομείς.

Υπάρχουν διάφοροι τρόποι ρύθμισης της λευκής λίστας για ένα τομέα:

  • 'example.com' => 'WHITELIST',: προσθέτει στη λευκή λίστα όλες τις διευθύνσεις του τομέα "example.com".

  • '.example.com' => 'WHITELIST',: προσθέτει στη λευκή λίστα όλες τις διευθύνσεις των υποτομέων του "example.com" που διαθέτουν έγκυρη υπογραφή.

  • '.example.com/@example.com' => 'WHITELIST',: προσθέτει στη λευκή λίστα τους υποτομείς του "example.com" που χρησιμοποιούν την υπογραφή του γονικού τομέα example.com.

  • './@example.com' => 'WHITELIST',: προσθέτει διευθύνσεις που διαθέτουν έγκυρη υπογραφή του "example.com". Συνήθως, χρησιμοποιείται για ομάδες συζήτησης που υπογράφουν τα μηνύματά τους.

Επιπροσθέτως, ένας τομέας μπορεί να διαθέτει πολλαπλές ρυθμίσεις για τη λευκή λίστα. Μετά την τροποποίηση του αρχείου επανεκκινήστε το amaisd-new:

sudo /etc/init.d/amavis restart
[Σημείωση]

Σε αυτές τις περιπτώσεις, από τη στιγμή που ένας τομέας προστίθεται στη λευκή λίστα, τα μηνύματά του δεν φιλτράρονται καθόλου για σπαμ ή ιούς. Εσείς αποφασίζετε αν αυτή είναι η συμπεριφορά που επιθυμείτε για τον τομέα.

Postfix

Για το συνδυασμό με το Postfix, εισάγετε τα ακόλουθα στο τερματικό:

sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'

Τώρα, τροποποιήστε το /etc/postfix/master.cf και προσθέστε τα ακόλουθα στο τέλος του αρχείου:

smtp-amavis     unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Επίσης, προσθέστε τις ακόλουθες δύο γραμμές αμέσως μετά την υπηρεσία μεταφοράς "pickup":

         -o content_filter=
         -o receive_override_options=no_header_body_checks

Έτσι, τα μηνύματα που δημιουργούνται για την υποβολή αναφορών για σπαμ δε θα χαρακτηρίζονται ως σπαμ.

Τώρα επανεκκινήστε το Postfix:

sudo /etc/init.d/postfix restart

Θα ενεργοποιηθεί το φιλτράρισμα του περιεχομένου για τον εντοπισμό σπαμ και ιων.

Δοκιμή

Καταρχάς, ελέγξτε ότι το SMTP του Amavisd-new αφουγκράζεται:

telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
^]

Στην κεφαλίδα των μηνυμάτων που έχουν περάσει από το φίλτρο περιεχομένου θα πρέπει να εμφανίζονται τα:

X-Spam-Level: 
X-Virus-Scanned: Debian amavisd-new at example.com
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level: 
[Σημείωση]

Η δική σας έξοδος μπορεί να διαφέρει, αλλά το σημαντικό είναι να υπάρχουν οι εγγραφές X-Virus-Scanned και X-Spam-Status.

Επίλυση Προβλημάτων

Ο καλύτερος τρόπος να καταλάβετε γιατί κάτι δεν πάει καλά σε περίπτωση προβλήματος είναι να ελέγξετε τα αρχεία καταγραφών.

  • Για πληροφορίες σχετικά με τις καταγραφές του Postfix δείτε την ενότητα “Επίλυση Προβλημάτων”.

  • Το Amavisd-new χρησιμοποιεί το Syslog για να αποστέλλει μηνύματα στο /var/log/mail.log. Το επίπεδο λεπτομέρειάς τους μπορεί να αυξηθεί αν προστεθεί η επιλογή $log_level στο /etc/amavis/conf.d/50-user, και οριστεί η τιμή της μεταξύ 1 και 5.

    $log_level = 2;
    
    [Σημείωση]

    Όταν αυξάνεται το επίπεδο καταγραφών του Amavisd-new, αυξάνεται και το επίπεδο καταγραφών του Spamassassin.

  • Το επίπεδο καταγραφών του ClamAV μπορεί να αυξηθεί αν τροποποιηθεί το /etc/clamav/clamd.conf με προσθήκη της ακόλουθης επιλογής:

    LogVerbose true
    

    Η προεπιλογή του ClamAV είναι να αποστέλλει τις καταγραφές στο /var/log/clamav/clamav.log.

[Σημείωση]

Μετά την αλλαγή των ρυθμίσεων για τις καταγραφές μιας εφαρμογής, θυμηθείτε να επανεκκινήσετε την υπηρεσία για να ενεργοποιήσετε τις νέες ρυθμίσεις. Επίσης, όταν επιλύσετε το πρόβλημά σας, καλό θα ήταν να επαναφέρετε τις φυσιολογικές ρυθμίσεις των καταγραφών.

Αναφορές

Για περισσότερες πληροφορίες σχετικά με τη χρήση φίλτρων email δείτε τους ακόλουθους συνδέσμους:

Επίσης, ρωτήστε ελεύθερα στο κανάλι IRC #ubuntu-server στο freenode.