Wir haben ja schon einiges gegen SPAM in den Postfix-Einstellungen getan, später werden wir noch was auf Firewall-Basis einbauen, sodass SPAM-Schleudern keine Chance haben.
Jetzt gehen wir aber erstmal noch einen Schritt weiter und filtern unsere E-Mails nach Viren. Wenn man kein Windows einsetzt, ist man zwar sowieso relativ sicher im Bezug auf Viren, aber wir wollen sicher gehen, dass wir keine verschicken und auch keine per Mail einfangen. Wir nutzen auch hier eine kleinere Software und nicht das aufgeblasene Amavis. Für uns gibts ClamSMTP mit ClamAV als Scanner.

  1. Aktueller Portstree? Gut, dann installieren wir mal ClamSMTP:

    # cd /usr/ports/security/clamsmtp/ && make install clean

  2. Nun müssen wir die Datei '/usr/local/etc/postfix/main.cf' wieder bearbeiten. Folgende Zeile tragen wir ein:

    content_filter = scan:[<MAIL-JAIL-IP>]:10025

    Das bewirkt, dass die Mails an den Dienst "scan", der auf Port 10025 hört, weitergeleitet werden. Richtig, wir werden ClamSMTP so konfigurieren, dass er auf diesen Port hört.
    <MAIL-JAIL-IP> natürlich wieder durch die IP deiner Mail-Jail ersetzen.

  3. Jetzt müssen wir die Datei '/usr/local/etc/postfix/master.cf' bearbeiten, sodass der "scan"-Dienst konfiguriert ist. Folgende Zeilen musst dafür eintragen:

    scan      unix  -       -       n       -       16      smtp
            -o smtp_send_xforward_command=yes
            -o smtp_enforce_tls=no

    <MAIL-JAIL-IP>:10026 inet  n -       n       -       16      smtpd
            -o content_filter=
            -o receive_override_options=no_unknown_recipient_checks, 
                                                    no_header_body_checks
            -o smtpd_helo_restrictions=
            -o smtpd_client_restrictions=
            -o smtpd_sender_restrictions=
            -o smtpd_recipient_restrictions=permit_mynetworks, reject
            -o mynetworks_style=host
            -o smtpd_authorized_xforward_hosts=10.0.0.0/8

    Wie du hier schön siehst, werden wir keine erneuten Restrictions aufnehmen, da hier nur Mails ankommen, die diesen Test bereits bestanden haben. Denn warum sollten wir SPAM auf Viren prüfen?

  4. Jetzt aktivieren wir die entsprechenden Dienste in der '/etc/rc.conf' (siehe auch: Viren- & Rootkitscanner):

    clamav_clamd_enable="YES"
    clamav_freshclam_enable="YES"
    clamsmtpd_enable="YES"

  5. Nun noch die '/usr/local/etc/clamsmtp.conf' bearbeiten:
    • OutAddress: <MAIL-JAIL-IP>:10026
    • Listen: <MAIL-JAIL-IP>:10025
    • ClamAddress: /var/run/clamav/clamd
    • Header: X-Virus-Scanned: ClamAV using ClamSMTP
    • TempDirectory: /tmp
    • Action: drop
    • Quarantine: off
    • TransparentProxy: off
    • User: clamav

    Was die einzelnen Parameter bedeuten sollte halbwegs klar sein, Header, Action, Quarantine und TransparentProxy sind individuell einstellbar bzw. sind von deiner Server-Konfiguration abhängig.

  6. Damit "clamd" starten kann, der ist erforderlich, müssen wir die Datei '/usr/local/etc/clamd.conf' noch bearbeiten, und zwar müssen wir das temporäre Verzeichnis festlegen:

    TemporaryDirectory /tmp

  7. Jetzt können wir die einzelnen Dienste starten und den Mailserver neustarten:

    # /usr/local/etc/rc.d/clamav-freshclam start

    # /usr/local/etc/rc.d/clamav-clamd start

    # /usr/local/etc/rc.d/clamsmtpd start

    Hinweis: Eventuell kann es sinnvoll sein, freshclam einmal von Hand zu starten, um initial die neuesten Files herunterzuladen. Dafür einfach "freshclam" auf der Shell eingeben.

  8. Jetzt noch einmal Postfix neustarten und die Konfiguration einlesen:

    # postmap /usr/local/etc/postfix/main.cf

    # postmap /usr/local/etc/postfix/master.cf

    # /usr/local/etc/rc.d/postfix restart

  9. Wenn jetzt alles glatt gelaufen ist, sollte in deinen E-Mails (ein- und ausgehend) im Header (meist über die Quelltextansicht sichtbar) "X-Virus-Scanned: ClamAV using ClamSMTP" stehen. Testen kannst du die Funktionalität beispielsweise von der Website www.testvirus.de.