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)
acceptStoppen Sie bösartige Spam-Bots, die Ihre Maschine verwüsten.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1Erlauben 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.1Adressü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.xxxKonfigurieren 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.comGeben Sie dies in der Exim-Konfiguration an.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsErstellen 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.comErstellen 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-networkingDies 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 startSetzen Sie das Passwort des Root-Benutzers:
mysqladmin -u root password NEUESPASSWORTErstellen Sie die Mailwatch-Datenbank und fügen Sie Tabellen hinzu:
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlErstellen 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 = 20Bearbeiten 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 = &MailWatchLoggingBearbeiten 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 bayesDatenbank befüllen:
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sqlBenutzer 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 passwortSARE-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.KEYErstellen 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.netErstellen Sie ein Update-Skript /usr/local/bin/update-sa:
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88AMachen 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.hourlyErhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.