IPFire mit Mail-Proxyfunktion

Anregungen & Feature Requests
User avatar
gocart
Posts: 559
Joined: December 16th, 2013, 4:43 pm
Location: Germany

Re: IPFire mit Mail-Proxyfunktion

Post by gocart » September 18th, 2019, 4:21 pm

@5p9
Findest du es praktikabel - jetzt so ausserhalb der IPFire?
Das XtremeShok Script ist ein einfacher weg mit Autoupdate ein paar interessante Datenbanken mit einzubinden. Das nutzt dazu noch rsync und führt eine Datei/Signaturprüfung gleich mit durch und benachrichtigt clamav über die neuen Datenbanken. An der Stelle ein sehr nettes Paket/Script. :)

Grüße, gocart

5p9
Mentor
Mentor
Posts: 1865
Joined: May 1st, 2011, 3:27 pm

Re: IPFire mit Mail-Proxyfunktion

Post by 5p9 » April 28th, 2020, 7:48 am

Morgen gocart du altes Haus :D

Vielen Dank für die aktuellste Version von SMTP-Proxy ! Hast mich auch gleich dazu genötigt die x64 Version zu installieren, was nach über 6 Jahren eh mal fällig war ;)

Eine Frage zu deinen Paketen, du hast hier auch guardian dabei, warum ist der denn da enthalten und wie setzt man das dann ein?

Eine Kleinigkeit die mir noch aufgefallen ist, könntest du in der master.cf folgenden Wert hinzu fügen, dieser wird benötigt um "Verzögerungsmails" an die Versender zu schicken:

Code: Select all

retry     unix  -       -       n       -       -       error

Code: Select all

#
# Postfix master process configuration file.  For details on the format
# of the file, see the Postfix master(5) manual page.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n      -       n       -       -       smtpd
#       -o smtpd_etrn_restrictions=reject
#       -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps    inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_etrn_restrictions=reject
#  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
   -o canonical_classes=envelope_recipient,header_recipient
   -o canonical_maps=regexp:/etc/postfix/batv.regexp
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Ein weiterer Punkt wäre in der main.cf unter ender_restrictions den permit_mynetworks etwas höher zu setzten da der smarthost, je nach setting, sonst sich selber blockeriert mit dem HELO error:

Code: Select all

smtpd_sender_restrictions =
    reject_non_fqdn_sender,
    check_helo_access hash:$maps_dir/helo_access,
    reject_unknown_sender_domain,
    permit_mynetworks,
    check_sender_access btree:$maps_dir/sender_access,
    check_sender_access btree:$maps_dir/sld_access,
    check_sender_access btree:$maps_dir/tld_access,
    check_sender_access btree:$maps_dir/tld_new_access,
    check_sender_access pcre:$conf_dir/spamphrases-white.pcre,
    check_sender_access pcre:$conf_dir/spamphrases-block.pcre,
    # activate sender address verification (care, blocks autoresponder and other addresses)
    # add the needed addresses to the whitelist (sender_access)
    #reject_unverified_sender,
    permit
So nun noch eine Optimierungsmöglichkeit, wäre eine helo_access & db zu hinterlegen:

Code: Select all

    check_helo_access hash:$maps_dir/helo_access,
da es doch vorkommen kann, dass Sendesystem nicht gleich Absender ist. In der mpup.sh ist der Wert auch nicht hinterlegt, daher müsste es dort evtl auch noch eingepflegt werden für Updates der helo_access - ansonsten reicht je auch ein postmap auf die helo_access, aber schöner wäre es in der mpup.sh.

Hinzu kommt, für den spamassassin könnte man noch die freie Version des malware patrol hinterlegen.
Unter dem Punk SpamAssassin zu finden:
https://www.malwarepatrol.net/tech-supp ... figuration

Coole Arbeit, danke dir und eine schönen Tag & bleibt gesund!
5p9

UPDATE: Für Interessenten habe ich ein kleines Logscript für die Mails gebastelt, damit es farblich schöner wirkt, diese einfach in die Bashrc als alias hinterlegen und hier habt nen schöneren Überblick:

Code: Select all

#!/bin/bash
# Script tail color for smtp proxy logs
## FEEL FREE ##
# $author: 5p9 ; $date: 28.04.20
#############################################
shopt -s expand_aliases

alias grey-grep="GREP_COLOR='1;30' grep -E --color=always --line-buffered"
alias red-grep="GREP_COLOR='1;31' grep -E --color=always --line-buffered"
alias green-grep="GREP_COLOR='1;32' grep -E --color=always --line-buffered"
alias yellow-grep="GREP_COLOR='1;33' grep -E --color=always --line-buffered"
alias cyan-grep="GREP_COLOR='1;36' grep -E --color=always --line-buffered"
alias blue-grep="GREP_COLOR='1;34' grep -E --color=always --line-buffered"

tail -1000f /var/log/mail | grey-grep ".*ipfire-NAME.*|$" | cyan-grep "postfix|$" | yellow-grep "amavis|$" | red-grep "NOQUEUE.*|$" | green-grep "Anonymous.*| to=.*|$" | blue-grep "disconnect.*|$" | red-grep "Connection refused|$" | red-grep "refused to talk to me.*|$" | red-grep "Passed SPAM|$" | red-grep "lost connection after AUTH from unknown.*|$" | red-grep "INFECTED.*|$" | red-grep "warning.*|$" | red-grep "reject.*|$" | red-grep "spam.*|$" | red-grep "connect from unknown|$" | yellow-grep "Untrusted TLS connection established to|$"

Passt folgenden Wert entsprechend noch an:

Code: Select all

 grey-grep ".*ipfire-NAME.*
Mail Gateway: mail proxy

Image

Image

5p9
Mentor
Mentor
Posts: 1865
Joined: May 1st, 2011, 3:27 pm

Re: IPFire mit Mail-Proxyfunktion

Post by 5p9 » May 13th, 2020, 7:29 am

Morgen,

ich habe noch die /etc/fcron.daily/clamav_install_3rdps.sh etwas überarbeitet mit URLHAUS (Emotet & Co.) und zwei optionale Bereiche für MalwarePatrol Spamassassin und SecuriteInfo ClamAV Free Accounts Signaturen:

Code: Select all

#!/bin/bash
#set -x
# Download (and working) dir is ...
RDPDIR=/tmp/clamav-rdpdir
SANESECURL=http://ftp.swin.edu.au/sanesecurity

#You need < YOUR-SIGNATURE-NUMBER > before use!
#https://www.securiteinfo.com/clients/customers/signup
#SECURITEINFO=http://www.securiteinfo.com/get/signatures/<SET YOUR-SIGNATURE-NUMBER HERE!>

URLHAUS=https://urlhaus.abuse.ch/downloads

DATABASES1=(
 'bofhland_malware_attach.hdb'
 'bofhland_malware_URL.ndb'
 'bofhland_cracked_URL.ndb'
 'bofhland_phishing_URL.ndb'
 'winnow_extended_malware.hdb'
 'winnow_malware.hdb'
 'winnow_malware_links.ndb'
 'winnow_spam_complete.ndb'
 'rogue.hdb'
 'phish.ndb'
 'porcupine.ndb'
 'phishtank.ndb'
 'spamimg.hdb'
 'scam.ndb'
 'blurl.ndb'
 'malware.expert.ndb'
 'junk.ndb'
)

# Before enable SECURITEINFO DBs you neet SIGNATURE-NUMBER in download section!

#DATABASES2=(
# 'securiteinfoascii.hdb'
# 'javascript.ndb'
# 'securiteinfohtml.hdb'
# 'spam_marketing.ndb'
#)

DATABASES3=(
 'urlhaus.ndb'
)

# Prepare dir
if [ -d "${RDPDIR}" ]; then
   rm -rf ${RDPDIR};
   mkdir ${RDPDIR};
else
   mkdir ${RDPDIR};
fi

# Load SANESECU lists and check md5sum
for i in ${DATABASES1[@]}; do
  logger -t ipfire "Download ${i}";
  echo -en "Download \033[32m${i}\033[0m and check MD5 sum: ";
  wget -T 30 -q --directory-prefix=${RDPDIR} ${SANESECURL}/${i} ${SANESECURL}/${i}.md5;
  
  # Check if .md5 file exist
  if [ -e ${RDPDIR}/${i}.md5 ]; then

    # Check md5 sum
    if [ ! $(cat ${RDPDIR}/${i}.md5 |awk '{ print $1 }') = $(md5sum ${RDPDIR}/${i} |awk '{ print $1 }') ]; then
      rm -f ${RDPDIR}/${i} ${RDPDIR}/${i}.md5;
      echo -e "\033[91mfailed, removing db file...\033[0m";
      logger -t ipfire "Update of ${i} failed,  MD5 sum error";
    else
      echo -e "\033[92mOK\033[0m"
      rm -f ${RDPDIR}/${i}.md5;
    fi;

  else
    echo -e "\033[91mNo MD5 file found! removing db file...\033[0m";
    logger -t ipfire "Update of ${i} failed, no MD5 file found";
    rm -f ${RDPDIR}/${i};
  fi;
  sleep 1

done

# Before enable SECURITEINFO DBs you neet SIGNATURE-NUMBER in downlaod section!
# Load lists SECURITYINFO
#for i in ${DATABASES2[@]}; do
#  logger -t ipfire "Download ${i}";
#  echo -en "Download \033[32m${i}\033[0m lists: ";
#  wget -T 30 -q --directory-prefix=${RDPDIR} ${SECURITEINFO}/${i};

# sleep 1

# done

# Load lists URLHAUS
for i in ${DATABASES3[@]}; do
  logger -t ipfire "Download ${i}";
  echo -en "Download \033[32m${i}\033[0m lists: ";
  wget -T 30 -q --directory-prefix=${RDPDIR} ${URLHAUS}/${i};

 sleep 1

done

# Set owner
chown clamav:clamav $RDPDIR/*.?db

# Set rights
chmod 0644 $RDPDIR/*.?db

# Move files
mv -f $RDPDIR/*.?db /var/lib/clamav/

# Clean up
rm -rf ${RDPDIR};

# Clean vars
unset RDPDIR DATABASES SANESECURL i
# Before enable SECURITYINFO DBs you neet SIGNATURE-NUMBER in downlaod section!
# unset RDPDIR DATABASES SECURITEINFO i
unset RDPDIR DATABASES URLHAUS i

# Write log entry
logger -t ipfire "ClamAV: 3rd-Party-Sanesecurity lists updated";

clamdscan --reload

# Before enable MalwarePatrol SA you must need a SIGNATURE-NUMBER!
# https://www.malwarepatrol.net/spamassassin-configuration-guide/
# spamassassin malware patrol update
# wget --no-check-certificate -O /var/lib/spamassassin/3.004004/70_malware_patrol_blocklist.cf 'https://lists.malwarepatrol.net/cgi/getfile?receipt= < YOUR-SIGNATURE-NUMBER > &product=32&list=spamassassin'

#	sleep 1

exit 0

Mail Gateway: mail proxy

Image

Image

5p9
Mentor
Mentor
Posts: 1865
Joined: May 1st, 2011, 3:27 pm

Re: IPFire mit Mail-Proxyfunktion

Post by 5p9 » May 13th, 2020, 7:53 am

Und hier habe ich die amavisd.conf angepasst, damit spams mit Score über 6.3 bis kill Score 20 (vorerst sehen damit meine checks gut aus da die meisten "spams" zwischen 7 und 14 Punkten liegen) auch benachrichtigt werden. Dazu muss folgendes angegeben werden:

Code: Select all

$spam_admin		   = "virusalert\@$mydomain";  # notifi spamadmin
Hier in diesem Bereich:

Code: Select all


$virus_admin               = "virusalert\@$mydomain";  # notifications recip.
$spam_admin		   = "virusalert\@$mydomain";  # notifi spamadmin

$mailfrom_notify_admin     = "virusalert\@$mydomain";  # notifications sender
$mailfrom_notify_recip     = "virusalert\@$mydomain";  # notifications sender
$mailfrom_notify_spamadmin = "spam.police\@$mydomain"; # notifications sender
#$mailfrom_notify_spamadmin = "virusalert\@$mydomain";
$mailfrom_to_quarantine = ''; # null return path; uses original sender if undef
Wichtig ist hier kein D_REJECT da sonst die Bouncemeldung an den Versender geht, sondern D_DISCARD;

Code: Select all

$final_spam_destiny       = D_DISCARD;  #!!!  D_DISCARD / D_REJECT
Meine SA Gewichtung der Scores sieht so aus:

Code: Select all

$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 5.8;  # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.3;  # triggers spam evasive actions (e.g. blocks mail)
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent
$sa_crediblefrom_dsn_cutoff_level = 15; # likewise, but for a likely valid From
$sa_quarantine_cutoff_level = 20; # spam level beyond which quarantine is off
$penpals_bonus_score = 8;    # (no effect without a @storage_sql_dsn database)
$penpals_threshold_high = $sa_kill_level_deflt;  # don't waste time on hi spam
$bounce_killer_score = 100;  # spam score points to add for joe-jobbed bounces
Meine CLAMAV Scores sehen so aus:

Code: Select all

@virus_name_to_spam_score_maps = (new_RE(
  [ qr'^Phishing\.'                                             => 6.1 ],
  [ qr'^(Heuristics\.)?Phishing\.'                       	=> 6.1 ],
  [ qr'^Structured\.(SSN|CreditCardNumber)\b'                   => 6.1 ],
  [ qr'^(?:Email|HTML|Sanesecurity)\.(?:Phishing|SpearL?)\.'i   => 6.1 ],
  [ qr'^(?:Email|HTML|Sanesecurity)\.(?:Spam|Scam)[a-z0-9]?\.'i => 6.1 ],
  [ qr'^Sanesecurity\.(Malware|Rogue|Badmacro|Trojan)\.'        => undef ],
#  [ qr'^Email\.Spam.*-SecuriteInfo\.com(\.|\z)'          => 6.1 ], # NUR WENN SECURITEINFO Signaturen vorhanden sind
#  [ qr'^SecuriteInfo\.com\.Spam\.'                       => 6.1 ], # NUR WENN SECURITEINFO Signaturen vorhanden sind
  [ qr'^winnow\.(?:botnets?|phish|complex|mailer)\.'x           => 6.1 ],
  [ qr'^winnow\.spam(?:domain)?\.'x                             => 6.1 ],
  [ qr'^winnow\.(?:malware|trojan|compromised)\.'x              => undef ],
  [ qr'^winnow\.'x                                              => 6.1 ],
  [ qr'^PhishTank\.Phishing\.'                           => 6.1 ],
  [ qr'^Bofhland\.Malware\.'                             => undef ],
  [ qr'^Porcupine\.(Malware|JS|Java|Win32|MSIL|VBS)\.'   	=> undef ],
  [ qr'^Porcupine\.'                                     	=> 6.1 ],
#  [ qr'^MBL_'							=> 5.8 ], # NUR WENN MALWARE PATROL Signaturen vorhanden sind
  [ qr'^URLhaus\.'                                     	=> undef ]
));
Mail Gateway: mail proxy

Image

Image

5p9
Mentor
Mentor
Posts: 1865
Joined: May 1st, 2011, 3:27 pm

Re: IPFire mit Mail-Proxyfunktion

Post by 5p9 » May 15th, 2020, 8:11 am

interessante SA-Rules die es noch gibt.

Mein Fav. ist: http://sa.zmi.at/

Code: Select all

sa.zmi.at 
und diese hier :

Code: Select all

sa.schaal-it.net
jedoch ist in den URI keine Discription dabei - den passenden Sed befehl habe ich noch nicht gefunden.

eine Alternative SA-Customlist ist diese hier:
https://gist.github.com/jult/9bfdc4d07b ... aaf25b7c39

Hier sollten aber "RBL using softened mailspike scores" (ganz unten) mit Vorsicht aktiviert / verwendet werden. Hab die auskommentiert da ich nicht weiß ob es so funktionieren würde.
Mail Gateway: mail proxy

Image

Image

5p9
Mentor
Mentor
Posts: 1865
Joined: May 1st, 2011, 3:27 pm

Re: IPFire mit Mail-Proxyfunktion

Post by 5p9 » May 26th, 2020, 6:14 am

Hallo,

hier noch ein Hinweis zu dnsbl.inps.de, dnswl.inps.de und frombl.inps.de - Abschaltung meines Filterlistenangebotes zum 25.05.2020
(My black and white list services will be terminated on 2020-05-25)

Bitte nicht mehr verwenden!
Mail Gateway: mail proxy

Image

Image

Post Reply