Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mailserver:grundabsicherung_von_postfix [16.02.2009 19:05. ] – gelöscht, da obsolete django | centos:mailserver:grundabsicherung_von_postfix [23.05.2012 14:01. ] (aktuell) – [header_checks zur SPAM-Abwehr] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Grundabsicherung von Postfix ====== | ||
+ | Das schlimmste, was uns passieren kann, wäre der Betrieb eines offenen Mailrelais bzw. ein Mailserver der sich beharrlich weigert mails zu versenden und zu empfangen. Mit unserer Grundinstallation haben wir schon mal den wichtigsten Part **Mailrelay** erschlagen und sichergestellt, | ||
+ | \\ | ||
+ | Auch wurde der Versand unserer eMail bereits entsprechend berücksichtigt. | ||
+ | ===== Absicherung mit Hilfe von Restrictions ===== | ||
+ | Damit aber nun unser Mailserver nicht jeden Dreck - aka SPAM & Co - definieren wir uns nun ein Regelwerk, mit Hilfe dessen wir festlegen, wann unser Server Mails annehmen oder ablehnen soll. Diese Festlegungen erfolgt mit Hilfe der **Restrictions**. | ||
+ | \\ | ||
+ | Der entscheidenste Moment, an dem wir nicht nur SPAM sondern auch all die anderen unerwünschten Nachrichten abzuwehren, ist der Einlieferungszeitpunkt! Was wir nicht annehmen brauchen wir auch später nicht weiterverarbeiten bzw. beachten. Analog dem Briefverkehr legen wir quasi fest, welche Sendungen überhaupt in unseren Briefkasten geworfen werden können und dürfen. | ||
+ | \\ | ||
+ | Wie bereits die Grundkonfiguration habe ich die wichtigsten Details mit Hilfe der [[http:// | ||
+ | < | ||
+ | # Schutz durch Restrictions für unser SOHO | ||
+ | # Eingetragen am 05.10.2008 | ||
+ | # | ||
+ | |||
+ | smtpd_recipient_restrictions = | ||
+ | # Postmaster, abuse und andere aufgaben- oder funktionsgebundene E-Mail-Adressen (Role-Accounts) whitelisten | ||
+ | check_recipient_access hash:/ | ||
+ | # Black- und Whitelisting | ||
+ | check_client_access hash:/ | ||
+ | check_helo_access hash:/ | ||
+ | check_sender_access hash:/ | ||
+ | check_recipient_access hash:/ | ||
+ | # Unsauberer eMails nicht annehmen | ||
+ | reject_non_fqdn_sender, | ||
+ | reject_non_fqdn_recipient, | ||
+ | reject_unknown_sender_domain, | ||
+ | reject_unknown_recipient_domain, | ||
+ | # Unsere eigenen Nutzer zulassen-/ | ||
+ | permit_sasl_authenticated, | ||
+ | permit_mynetworks, | ||
+ | # RBL überprüfen (Kapitel 10.11 Realtime Blackhole Lists) | ||
+ | reject_rbl_client zen.spamhaus.org, | ||
+ | reject_rbl_client ix.dnsbl.manitu.net, | ||
+ | reject_rbl_client bl.spamcop.net, | ||
+ | reject_rbl_client dnsbl.njabl.org, | ||
+ | reject_rhsbl_client multi.uribl.com, | ||
+ | # Dynamische Prüfung auf existente Relay-Empfänger | ||
+ | # | ||
+ | # Mackupserver (MX) erlauben | ||
+ | # | ||
+ | # alles andere an relaying verbieten | ||
+ | reject_unauth_destination, | ||
+ | # Zu guter Letzt alles durchlassen, | ||
+ | permit</ | ||
+ | ===== erweiterte Konfiguration unseres MXers ===== | ||
+ | An Hand der **Restrictions** können wir unseres Postfix-Servers nun mit folgender erweiterten Konfiguration betreiben. | ||
+ | < | ||
+ | |||
+ | alias_database = hash:/ | ||
+ | alias_maps = hash:/ | ||
+ | command_directory = /usr/sbin | ||
+ | config_directory = / | ||
+ | daemon_directory = / | ||
+ | debug_peer_level = 2 | ||
+ | header_checks = pcre:/ | ||
+ | html_directory = no | ||
+ | inet_interfaces = all | ||
+ | mail_owner = postfix | ||
+ | mailq_path = / | ||
+ | manpage_directory = / | ||
+ | masquerade_domains = nausch.org | ||
+ | mydestination = $myhostname, | ||
+ | myhostname = mx1.nausch.org | ||
+ | mynetworks = 192.168.1.0/ | ||
+ | mynetworks_style = subnet | ||
+ | myorigin = $mydomain | ||
+ | newaliases_path = / | ||
+ | queue_directory = / | ||
+ | readme_directory = / | ||
+ | sample_directory = / | ||
+ | sendmail_path = / | ||
+ | setgid_group = postdrop | ||
+ | smtpd_banner = $myhostname ESMTP $mail_name | ||
+ | smtpd_recipient_restrictions = check_recipient_access hash:/ | ||
+ | unknown_local_recipient_reject_code = 550</ | ||
+ | ===== header_checks zur SPAM-Abwehr ===== | ||
+ | Für die erweiterete SPAM-Abwehr haben wir bereits die Option **header_checks = pcre:/ | ||
+ | \\ | ||
+ | < | ||
+ | Voraussetzung hierzu (//Perl Compatible Regular Expressions// | ||
+ | btree | ||
+ | cidr | ||
+ | environ | ||
+ | hash | ||
+ | ldap | ||
+ | nis | ||
+ | pcre | ||
+ | proxy | ||
+ | regexp | ||
+ | static | ||
+ | unix</ | ||
+ | \\ | ||
+ | Trifft das gewählte Suchmuster bei unseren **// | ||
+ | * REJECT Nachricht mit einem fatalen Fehler 5xx ablehnen | ||
+ | * REJECT //MSG// Nachricht mit dem Text //MSG// ablehnen | ||
+ | * DISCARD Die Nachricht wird verworfen und zwar an **__alle__** Empfänger, sobald einer der Empfänger via //DISCARD// abgelehnt wird. Dem Einliefernden client wir eine erfolgreiche Zustellung mittels //**250 OK**// vorgegaukelt. | ||
+ | \\ | ||
+ | Wollen wir nun Nachrichten von bestimmten Absendern generell blocken, so tragen wir in unsere **/ | ||
+ | < | ||
+ | /^From: .*Euro Dice Casino.*/ | ||
+ | /^From: .*happydigits.de/ | ||
+ | Endif | ||
+ | </ | ||
+ | Nachrichten mit einem speziellem Betreff filter wir wie folgt: | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | Endif</ | ||
+ | \\ | ||
+ | Nachrichten mit einem absurden Datum im Mailheader verweigern wir durch folgende Zeilen: | ||
+ | < | ||
+ | /^Date: .* 19[0-9][0-9]/ | ||
+ | </ | ||
+ | ===== DSN abstellen ===== | ||
+ | DSN((Delivery Status Notification)) zu verbergen, kann ein wünschenswerter Zustand sein. Was geht schon einem externen der interne Aufbau unserer eMail-Infrastruktur an.\\ | ||
+ | \\ | ||
+ | Wir erlauben also beim abgehenden Verkehr die Möglichkeit für unsere eigenen User, nach außen schotten wir uns jedoch ab. Dazu tragen wir in unserer **/ | ||
+ | vim / | ||
+ | |||
+ | # DSN selectiv aktivieren, bzw. sperren | ||
+ | # Eingetragen am 21.11.2008 | ||
+ | | ||
+ | Die zugehörige **cidr-Tabelle** mit den Netzdefinitionen legen wir anschließend auch noch an. | ||
+ | vim / | ||
+ | |||
+ | # NDS requests werden nur aus dem eignen Netz erlaubt | ||
+ | | ||
+ | | ||
+ | ::/ | ||
+ | Abschließend starten wir den MX einmal durch. | ||
+ | | ||
+ | Bei Änderungen an der Datei ist lediglich ein **service postfix reload** notwendig. | ||