ClamAv in Qmail

  • Thread starter Thread starter Robert1962
  • Start date Start date
R

Robert1962

Guest
Hallo zusammen,

habe hier gelesen, dass es inzwischen sicherer wäre ClamAV mittels QSheff und nicht per qscanq in QMail einzubinden.

Ist das korrekt so?
Ich benötige nur den Virenscan nicht SA, da SA bereits über Plesk eingebunden ist.

Mein System: OpenSuSE 10.3 + Plesk 8.6

Gruß

Robert1962
 
Ich habe clamav genau auf diesem Weg über qsheff II eingebunden und das funktioniert gut.

Trotzdem läuft per Skript zusätzlich Spamassassin, so dass qsheff auch auf das X-Spam-Flag reagieren kann und die Message noch während der Übertragung rejecten kann.

SA in Plesk ist ja nett, aber zu dem Zeitpunkt ist die Msg längst (aus Sicht des Spammers) erfolgreich ausgeliefert worden.

Kombiniert mit der Prüfung auf Blacklists habe ich hier bei 600-700 Mails weniger als 10 Spam am Tag.
 
super! Würdest du die Einbindung per QSheff also auch bevorzugen?

ich war mit der Einbindung per QScanq immer sehr zufrieden, nur jetzt nach dem Wechsel auf neuen Server will es nicht mehr. Wird zwar eingebunden findet aber keine Viren mehr.

Aber noch mal zu QSheff:

SA über Plesk finde ich nicht so ganz schlecht, die haben da einiges verbessert wie ich finde. was mich bei QSheff immer was gestört hat ist, dass man über jede Viren-Mail oder Spam-Mail informiert wird.

Bei qscanq war das nicht der Fall, weil man ja in Plesk pro Domain selbst entscheiden kann/konnte ob man die Spam-Mails mit Kennzeichnung haben wollte oder die gelöscht werden sollen.
Das ist was ich bei QSheff was vermisse und das ist auch der Grund warum ich SA über Plesk laufen lassen will.

Lass mich aber gerne eines Besseren belehren.
 
super! Würdest du die Einbindung per QSheff also auch bevorzugen?

Auf meiner Kiste läuft das so.

SA über Plesk finde ich nicht so ganz schlecht, die haben da einiges verbessert wie ich finde. was mich bei QSheff immer was gestört hat ist, dass man über jede Viren-Mail oder Spam-Mail informiert wird.

Also ich werde nicht informiert... ich sehe es im Log und die Mail wird rejected, d.h. gegenüber dem sendenden System zurückgewiesen.

Bei qscanq war das nicht der Fall, weil man ja in Plesk pro Domain selbst entscheiden kann/konnte ob man die Spam-Mails mit Kennzeichnung haben wollte oder die gelöscht werden sollen.
Das ist was ich bei QSheff was vermisse und das ist auch der Grund warum ich SA über Plesk laufen lassen will.

Das kann ich auch bei meiner Lösung, wobei bei mir SA unabhängig von qsheff vor diesem läuft. Und beim SA-Aufruf gebe ich auch den Nutzer an, dessen Config dann verwendet wird.

qsheff weist dann nur ggf. die Mail zurück, wenn er ein X-Spam-Status: Yes findet.

Zugleich landen alle Mails (Spam/Virus) in einer Quarantäne und die User können sich diese trotzdem zustellen lassen.
 
Hört sich klasse an, so wie ich es eingentlich auch suche.
Hast du eine Anleitung wie man es einrichten sollte.
Also wie ich schon schrieb habe ich OpenSuSE 10.3 und Plesk 8.6 auf meiner Kiste.
Allerdings muss ich dazu sagen dass meine Freunde keine Ahnung haben und nur mit der Plesk-Oberfläche Arbeiten. So muss ich es so simple wie nur möglich halten.

Bisher habe ich ClamAV mit qscanq eingehängt, dass scheint bei OpenSuSE 10.3 aber nicht zu funktionieren. Fehlermeldungen erhalte ich keine und sehe Clamav auch in den Log-Files (was Clam so macht, DB-Update etc.) nur Viren scannt er nicht mehr in den Mails. ripmime und qscanq und auch daemontools werden korrekt installiert auch ClamAV.

Nun würde ich es mal mit QSheff versuchen wollen.

Will aber nicht das man jedesmal eine Meldung erhält wenn eine Spam oder Virus gefunden wurde. Machen meine Bekannte ärger :mad:

Also ich habe es vor einiger Zeit schon mal mit der Anleitung von Huschi versucht, klappte bis auf die Meldungen auch sehr gut.
 
Bei mir ist es auch OpenSuse 10.3 und Plesk 8.6.

Ich habe bei mir qsheff II aus dem Source heraus installiert:

./configure --with-clamav --with-clamd-socket=/var/lib/clamav/clamd-socket --enable-virus-tag --enable-syslog --with-custom-prog

custom-prog wird bei mir genutzt, um Spam direkt an Spamcop zu versenden.

und die Verzeichnisse gem

/usr/local/etc/qsheff-II/install-wrapper.sh anlegen

angelegt.

Dazu gibt es ein Script in /var/qmail/bin namens qmail-spam mit folgendem Vorgehen

# chown root:qmail qmail-queue.spam + SetUID
# chown root:qmail qmail-queue.orig
# /var/qmail/bin/qmail-queue nach /var/qmail/bin/qmail-queue.orig kopieren
# ln -s /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.spam

Wird nur qsheff genutzt, dann wird der Link direkt auf qmail-qsheff gesetzt, ich habe hier eben den Zwischenschritt zum Domain/User-spezifischen Aufruf von SA:

Hier das Script, das ich nutze:

Code:
#!/bin/bash
Domain=`echo $SMTPRCPTTO | tr "[:upper:]" "[:lower:]"`
if [ -z "$Domain" ]; then
  Domain=`echo $RECIPIENT | tr "[:upper:]" "[:lower:]"`
fi
DestPort=`echo $TCPLOCALPORT`
SPAMC=/usr/bin/spamc
MAX_SIZE=256000                      # max letter size to filter
SA_PARAMS="--headers"
SOCKETPATH="/tmp/spamd_full.sock"
if [ "$DestPort" = "587" ] ; then
   /var/qmail/bin/qmail-qsheff
elif [ "$SMTPHELOHOST" = "" ] ; then
  /var/qmail/bin/qmail-queue.orig
else
  case $Domain in
    [email protected]|[email protected]) /var/qmail/bin/qmail-queue.orig;;
    [email protected]) /var/qmail/bin/qmail-queue.orig;;
    *@<domain>) "$SPAMC" -s "$MAX_SIZE" -u <domainuser> -U "$SOCKETPATH" -E | /var/qmail/bin/qmail-qsheff;;
    <single email>) "$SPAMC" "$SA_PARAMS" -s "$MAX_SIZE" -u <single email> -U "$SOCKETPATH" -E | /var/qmail/bin/qmail-qsheff;;
    *)   /var/qmail/bin/qmail-qsheff;;
  esac
fi

Das Script ruft also SA nur für einzelne Domains oder für einzelne Email-Adressen auf, wobei hier der Eingriff durch den Admin erforderlich ist.

Zusätzlich sind Mails, die am Submission Port eingeliefert werden, vom Spam-Check ausgenommen, da sich hier der User ja authentisieren muss und lokal versandte Mails (um u.a. die Weiterleitung des Spam an Spamcop nicht zu blocken). Die Nutzung des Submission-Ports bei mir erfolgt, da ich den Port 25 sehr restriktiv gegen Blacklisten prüfe. Damit erspare ich mir 99+ % des Spams (ich habe nur ca. 2 % Spam-Mails, die durch SA beim obigen Check noch erwischt werden). Der Rest wird bereits beim Versuch geblockt, Spam abzuliefern.

Zum Config-File von qsheff unter /usr/local/etc/qsheff-II/qsheff.conf

Code:
#
# EnderUNIX qSheff configuration file
#
# http://www.enderunix.org/qsheff
#
# $Id: qsheff.conf-default.in,v 1.4 2006/08/31 12:15:15 simsek Exp $
#

QSHEFFDIR = /var/qsheff
LOGFILE = /var/log/qsheff.log
RIPMIME = "/usr/local/bin/ripmime"

# Disable this if you are using Bogofilter.
# The qsheff signature will affect the results!!!
enable_qsheff_sign = 1

# Set debug level
# qsheff will log entries which have a debug level less than this value.
# debug_level = 99 logs everything
# debug_level = 0  logs only internal errors
#
#  level   Identifier   Comment
# ------- ------------ -----------------------------------------------
#   0      ERR          Internal error.
#   2      QUEUE        qSheff passed the mail to qmail-queue.
#   3      VIRUS        Antivirus software found a virus.
#   5      CUSTOM       Custom filter program caught a spam pattern.
#  11      SPAM         Found spam pattern.
#  13      ATTACH       Caught prohibited attach file.
#  15      HEADER       Mail header problem.
#
debug_level = 99

# When enabled, qSheff doesn't return the "permanantly error"
# for spam or infected messages.
enable_spam_blackhole = 0
enable_virus_blackhole = 0

# 0: Don't panic when any function doesnt work
#    Just continue to finish job.
# 1: Spammer and antivirus must work.
#    Condone other errors.
# 2: Don't forgive any error.
#
# Note that: This feature is not implemented yet.
paronia_level = 0

# Drop mail if the From: line is empty.
drop_empty_from = 0

# When set to 1, enables quarantine for spams and virus mails.
enable_quarantine = 1

# When set to 1, enables ignore list feature.
# qSheff doesn't perform spam filtering for the addresses in qsheff.ignore
enable_ignore_list = 1

# When set to 1, enables header rules based on regular expressions.
# Header rules starts with a leading h: pattern.
# Check the qsheff.rules
enable_header_filter = 1

# When set to 1, enables body rules based on regular expressions.
# Header rules starts with a leading b: pattern.
# Check the qsheff.rules
enable_body_filter = 1

# When set to 1, enables attachment filtering.
# Check the qsheff.attach
enable_attach_filter = 0

# When set to 1, enables ClamAv antivirus client.
# qSheff connects to Clamd directly, through a socket file.
# The socket file must be specified at compile time
# by --with-clamd-socket option.
enable_clamd = 1

# When set to 1, enables user defined filtering programs.
# The CUSTOM_PROG variable must be defined.
enable_custom_prog = 0

# Pre-defined variables to pass custom filter program:
#
# %%mailfrom%% as email address: source address.
# %%mailto%% as email address: target address.
# %%remoteip%% as IP address: remote SMTP server.
# %%msgfile%% as filename: full path of stored incoming mail.
# %%tempdir%% as directory path: full of the tempdir includes parts of mail (attachments, body, header etc.)
#
# Examples:
# CUSTOM_PROG = "/usr/bin/myscript -f %%mailfrom%% -t %%mailto%% -r %%tempdir%%"
# CUSTOM_PROG = "/usr/local/bin/bogofilter --bogofilter-dir=/etc/bogofilter -I %%msgfile%%"
#
#CUSTOM_PROG = 

# For the custom program return value 'ret',
# if CUSTOM_RET_MIN <= ret <= CUSTOM_RET_MAX
# qSheff will assume the mail has spam content.
# So qSheff will return 'permanently error'.
CUSTOM_RET_MIN = 100
CUSTOM_RET_MAX = 100

# Return value for errors.
# qSheff assumes that, all nagative return codes indicate a failure.
# if ret < 0 or ret == CUSTOM_RET_ERR => then return 'temporary error'
CUSTOM_RET_ERR = -1

# For bogofilter:
#CUSTOM_RET_MIN = 1
#CUSTOM_RET_MAX = 1
#CUSTOM_RET_ERR = 3

# This string will be appended to the end of the custom message.
# It may be your company or organisation name. Can be maximum 32 characters
# Custom error patch must be applied and enabled.
custom_sign = ""

wobei ich das Custom Prog mal rausgelassen habe (Spam Report).

Für die Erkennung vom Spam-Mails durch SA und qsheff findet sich in qsheff.rules zusätzlich:

Code:
h:(X-Spam-Status: Yes)
h:(X-Spam-Status: YES)
h:(X-Spam-Flag: YES)

und das war es soweit.
 
Last edited by a moderator:
Hallo akxak

hab noch mal eine Frage, in folgendem Code-Ausschnitt hast du 3 Mail-Adressen




Code:
else
  case $Domain in
    [email protected]|[email protected]) /var/qmail/bin/qmail-queue.orig;;
    [email protected]) /var/qmail/bin/qmail-queue.orig;;
    *@<domain>) "$SPAMC" -s "$MAX_SIZE" -u <domainuser> -U "$SOCKETPATH" -E | /var/qmail/bin/qmail-qsheff;;
    <single email>) "$SPAMC" "$SA_PARAMS" -s "$MAX_SIZE" -u <single email> -U "$SOCKETPATH" -E | /var/qmail/bin/qmail-qsheff;;
    *)   /var/qmail/bin/qmail-qsheff;;
  esac
fi

[email protected]|[email protected]
gehe ich mal davon aus, dass ich die ja auf meinem Server mit entsprechenden anlege.

Was jedoch ist mit dieser
[email protected]

Muss man sich bei Spamcop registrieren um Spams dorthin melden zu können?

An sonsten danke für die promte Hilfe.
 
Last edited by a moderator:
Diese Adressen sind speziell für das SpamCop-Handling bzw. Test-Adressen. Es sind einfach Adressen, für die eben (warum auch immer) kein SA-Run erfolgen soll (und ggf. auch kein qsheff-Run).

Also

Code:
case $Domain in
    [email protected]|[email protected]) /var/qmail/bin/qmail-queue.orig;;
    [email protected]) /var/qmail/bin/qmail-qsheff;;
  esac

Also: für test und test1 werden Spamassassin und qsheff übergangen (bspw. um erkannten Spam zu melden). Bei test3 wird nur Spamassassin nicht aufgerufen (bspw. weil der Nutzer das eben nicht möchte).
 
Last edited by a moderator:
Back
Top