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.

Aktueller Portstree? Gut, dann installieren wir mal ClamSMTP:

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

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> musst du natürlich wieder durch die IP deiner Mail-Jail ersetzen.

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?

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"

Nun noch die '/usr/local/etc/clamsmtpd.conf' bearbeiten:

  • OutAddress: <MAIL-JAIL-IP>:10026
  • Listen: <MAIL-JAIL-IP>:10025
  • ClamAddress: /var/run/clamav/clamd.sock
  • 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.

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

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.

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

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.aleph-tec.com.