E-Mail Sicherheit · 5 min read · Jan 03, 2026

Mailscanner/Exim Gateway Mit Communigate PRO Anleitung - Seite 2

Anti Spam

Wenn Sie Nachrichten von Servern ohne Reverse-DNS ablehnen möchten, fügen Sie dies unter acl_check_rcpt: hinzu. Es gibt eine Ausnahmeliste, zu der Sie Domains hinzufügen können, auf die die ACL nicht angewendet werden soll, und es versucht, eine Testnachricht an die sendende Adresse zuzustellen, um zu überprüfen, ob der Absender gültig ist.

drop  message   = REJECTED - Wir akzeptieren keine Nachrichten von Hosts ohne Reverse-DNS
        log_message = Kein Reverse-DNS
        domains = ! lsearch;/etc/exim/checks_exempt_hosts
        !verify = reverse_host_lookup
        !verify = sender/callout=2m,defer_ok
        !condition =  ${if eq{$sender_verify_failure}{} }

Um Nachrichten von Clients abzulehnen, die kein HELO/EHLO bereitstellen, fügen Sie dies zu acl_check_rcpt hinzu:

drop  message  = REFUSED - kein HELO/EHLO Gruß
        log_message = Remote-Host hat keinen Gruß präsentiert
        condition = ${if def:sender_helo_name {false}{true}}

Sie können die Verbindungen zu Ihrem Server ebenfalls drosseln. Fügen Sie dies zu acl_check_connect: hinzu, um dies zu tun (lesen Sie die Exim-Dokumentation zu den Parametern, wenn Sie es für Ihre Seite feinabstimmen möchten).

deny ratelimit = 250 / 15m / strict
       message = Sie können nur $sender_rate pro $sender_rate_period senden
       log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
accept

Stoppen Sie bösartige Spam-Bots, die Ihre Maschine verwüsten.

smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1

Erlauben Sie Pipelining nur vom localhost, um Ihnen später zu ermöglichen, Mailfeeder zu verwenden, um E-Mails freizugeben.

pipelining_advertise_hosts = 127.0.0.1

Adressüberprüfung

Dies verwendet den Router check_backend, um über LDAP mit Ihrem Communigate PRO-System zu kommunizieren, um sicherzustellen, dass eine Adresse existiert, bevor E-Mails für diese Adresse akzeptiert werden.

Fügen Sie Ihre Standard-LDAP-Server zur Exim-Konfiguration hinzu.

ldap_default_servers = xxx.xxx.xxx.xxx

Konfigurieren Sie Domains, die ein Catchall-Konto haben (keine Überprüfung, ob die Adresse existiert, bevor E-Mails akzeptiert werden).

# Beispiel /etc/exim/catchall_domains
somedomain.com

Geben Sie dies in der Exim-Konfiguration an.

domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domains

Erstellen und fügen Sie die LDAP-aktivierten CGP-Domains zur Datei /etc/exim/ldap-domains hinzu. Die erste Spalte ist das Domain-Alias oder die Domain und die zweite ist die tatsächliche Domain, wie sie in LDAP existiert, da beim Synchronisieren von CGP-Domains mit LDAP die Domain-Aliase nicht mitkopiert werden.

# Beispiel /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.com

Erstellen Sie den check_backend-Router. Dies sollte der erste Router in Ihrer Konfiguration sein.

check_backend:
 driver = redirect
 domains = ! +domains_with_catchall : +relay_to_domains
 allow_fail
 allow_defer
 forbid_file
 forbid_pipe
 data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Unbekannter Benutzer}}
 #version 5.x verwenden Sie dies stattdessen
 #data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: Benutzer Unbekannt}}

Saubere Zustellung Exim

Dies ist die Konfiguration, die verwendet wird, um die saubere Mail zuzustellen, die MailScanner bereits gescannt hat. Die Konfigurationsdatei ist /etc/exim/exim_out.conf. Dafür können Sie die Standardkonfiguration mit allen Prüfungen und ACLs verwenden, die entfernt wurden.

Sie müssen diesen Router hinzufügen, um die gereinigte Mail an die tatsächlichen CGP-Server zuzustellen. Wenn Sie einen Cluster betreiben, ist dieser Router in der Lage, die Zustellungen auf die Server zu verteilen, die Sie in /etc/exim/mail-routes konfiguriert haben, wodurch er vollständig redundant wird.

deliver_clean:
  driver = manualroute
  domains = +relay_to_domains
  transport = remote_smtp
  hosts_randomize = true
  route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}

MySQL konfigurieren

Fügen Sie dies zur Konfigurationsdatei /etc/my.cnf hinzu:

socket=/var/lib/mysql/mysql.sock
skip-networking

Dies konfiguriert MySQL so, dass es nur über den Socket und nicht über TCP kommuniziert, was besser für die Sicherheit und die Leistung ist.

Starten Sie MySQL, dies initialisiert die Standarddatenbanken.

service mysqld start

Setzen Sie das Passwort des Root-Benutzers:

mysqladmin -u root password NEUESPASSWORT

Erstellen Sie die Mailwatch-Datenbank und fügen Sie Tabellen hinzu:

mysql -p < /usr/local/src/mailwatch-1.0.4/create.sql

Erstellen Sie den MySQL-Benutzer für Mailwatch und MailScanner-Logging:

mysql  
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'passwort';

Erstellen Sie den Mailwatch-Admin-Benutzer:

mysql mailscanner -u mailwatch -p  
Passwort eingeben: ******  
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); 

MailScanner konfigurieren

Einführung

MailScanner hat mehrere Konfigurationsoptionen. Ich werde mich nur auf die konzentrieren, die benötigt werden, um das System zum Laufen zu bringen. Um das System weiter anzupassen, lesen Sie bitte die MailScanner-Dokumentation oder sehen Sie sich die Beispielkonfigurationsdateien an, die ich bereitgestellt habe.

Grundkonfiguration

Bitte bearbeiten Sie die folgenden Konfigurationsvariablen in /etc/MailScanner/MailScanner.conf:

Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
  • Berechtigungen setzen
chown exim.exim -R /var/spool/MailScanner/incoming  
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}  
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}

Antivirus

Wenn Sie einen zweiten Virenscanner haben, setzen Sie

Virus Scanning = yes
Virus Scanners = "Name des Virenscanners"

Blacklists und Whitelists

Wir werden SQL (MySQL)-basierte Whitelisting- und Blacklisting verwenden, um die Integration mit der Mailwatch-Frontend zu erleichtern, damit Benutzer Absender über die Weboberfläche auf die Whitelist und Blacklist setzen können.

Bearbeiten Sie die MailScanner-Konfigurationsdatei und fügen Sie hinzu:

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20

Bearbeiten Sie die Datei /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

sub CreateList {
  my($type, $BlackWhite) = @_;
  my($dbh, $sth, $sql, $to_address, $from_address, $count);
  my($db_name) = 'mailscanner';
  my($db_host) = 'localhost';
  my($db_user) = 'mailwatch';
  my($db_pass) = 'passwort';

Mailwatch-Integration

Bearbeiten Sie die MailScanner-Konfigurationsdatei und fügen Sie hinzu:

Always Looked Up Last = &MailWatchLogging

Bearbeiten Sie die Datei /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm:

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'passwort';

Spamassassin konfigurieren

Diese Konfiguration verwendet eine MySQL-Datenbank, um die Bayes-Informationen zu speichern. Daher werden wir eine Datenbank und einen Benutzer erstellen, die verwendet werden, um eine Verbindung zur Datenbank herzustellen. Wir werden auch zusätzliche Regeln (SARE, gehostet von Daryl C. W. O’Shea http://www.dostech.ca/) verwenden, sodass wir sa-update so konfigurieren, dass sie automatisch heruntergeladen werden.

MySQL-Datenbank erstellen

mysqladmin -p create bayes

Datenbank befüllen:

mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sql

Benutzer erstellen:

mysql -p  
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'passwort';

Konfigurieren, um DB zu verwenden

Bearbeiten Sie die Datei /etc/mail/spamassassin/local.cf und fügen Sie hinzu:

bayes_store_module  Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn       DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username  bayes
bayes_sql_password  passwort

SARE-Regel-Updates

Importieren Sie den GPG-Schlüssel, der zum Signieren der Regeln verwendet wird:

wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY

Erstellen Sie die Kanäle-Datei /etc/mail/spamassassin/sare-sa-update-channels.txt:

updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net

Erstellen Sie ein Update-Skript /usr/local/bin/update-sa:

#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A

Machen Sie es ausführbar und fügen Sie es zu cron hinzu:

chmod +x /usr/local/bin/update-sa  
ln -s /usr/local/bin/update-sa /etc/cron.daily/  
ln -s /usr/local/bin/update-sa /etc/cron.hourly
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.