Product SiteDocumentation Site

Kapitel 11. Network Services: Postfix, Apache, NFS, Samba, Squid, LDAP, SIP, XMPP, TURN

11.1. Mail-Server
11.1.1. Postfix installieren
11.1.2. Virtuelle Domains konfigurieren
11.1.3. Einschränkungen beim Empfangen und Senden
11.1.4. Greylisting einrichten
11.1.5. Filter anhand des Empfängers einstellen
11.1.6. Einen Virenschutz integrieren
11.1.7. Authentifiziertes SMTP
11.2. Webserver (HTTP)
11.2.1. Apache installieren
11.2.2. Virtuelle Hosts konfigurieren
11.2.3. Gebräuchliche Anweisungen
11.2.4. Protokoll-Analysatoren
11.3. FTP-Dateiserver
11.4. NFS-Dateiserver
11.4.1. NFS absichern
11.4.2. NFS-Server
11.4.3. NFS-Client
11.5. Einrichten von Windows-Freigaben mit Samba
11.5.1. Samba-Server
11.5.2. Samba-Client
11.6. HTTP/FTP-Proxy
11.6.1. Installieren
11.6.2. Einen Cache konfigurieren
11.6.3. Einen Filter konfigurieren
11.7. LDAP-Verzeichnis
11.7.1. Installieren
11.7.2. Das Verzeichnis ausfüllen
11.7.3. Konten mit LDAP verwalten
11.8. Real-Time Communication Services
11.8.1. DNS settings for RTC services
11.8.2. TURN Server
11.8.3. SIP Proxy Server
11.8.4. XMPP Server
11.8.5. Running services on port 443
11.8.6. Adding WebRTC
Network services are the programs that users interact with directly in their daily work. They are the tip of the information system iceberg, and this chapter focuses on them; the hidden parts they rely on are the infrastructure we already described.
Many modern network services require encryption technology to operate reliably and securely, especially when used on the public Internet. X.509 Certificates (which may also be referred to as SSL Certificates or TLS Certificates) are frequently used for this purpose. A certificate for a specific domain can often be shared between more than one of the services discussed in this chapter.

11.1. Mail-Server

Die Falcot Corp. Administratoren haben Postfix wegen seiner Zuverlässigkeit und seiner leichten Konfigurierbarkeit als elektronischen Mail-Server gewählt. Sein Design zwingt dazu, jede Aufgabe als Prozess mit dem geringstmöglichen Satz an Berechtigungen umzusetzen, eine gute Vorbeugungsmaßnahme gegen Sicherheitsprobleme.

11.1.1. Postfix installieren

Das Paket postfix enthält den Kern des SMTP-Daemons. Andere Pakete (wie postfix-ldap und postfix-pgsql) fügen weitere Funktionsmerkmale zu Postfix hinzu, einschließlich des Zugangs zu Zuordnungsdatenbanken. Sie sollten sie nur installieren, wenn Sie wissen, dass Sie sie benötigen.
Während der Installation des Pakets werden mehrere Debconf-Fragen gestellt. Die Antworten ermöglichen es, eine erste Version der Konfigurationsdatei /etc/postfix/main.cf zu erstellen.
Die erste Frage bezieht sich auf die Art der Aufbaus. Nur zwei der vorgeschlagenen Antworten sind im Falle eines mit dem Internet verbundenen Servers relevant, „Internet site“ und „Internet with smarthost“. Die erste ist für einen Server richtig, der eingehende E-Mails empfängt und ausgehende E-Mails direkt an ihre Empfänger verschickt, und ist daher für die Situation der Falcot Corp. gut geeignet. Die zweite ist für einen Server angebracht, der eingehende E-Mails normal empfängt, aber ausgehende E-Mails über einen zwischengeschalteten SMTP-Server - den „smarthost“ - verschickt, statt direkt an den Server des Empfängers. Dies ist meistens für Personen mit einer dynamischen IP-Adresse sinnvoll, da viele E-Mail-Server Nachrichten, die direkt von einer derartigen IP-Adresse kommen, zurückweisen. In diesem Fall ist der Smarthost gewöhnlich der SMTP-Server des ISPs, der stets so konfiguriert ist, dass er E-Mails annimmt, die von den Kunden des ISP kommen, und sie in geeigneter Weise weiterleitet. Dieser Aufbau (mit einem Smarthost) ist auch für Server relevant, die nicht ständig mit dem Internet verbunden sind, da es so nicht erforderlich ist, eine Warteschlange nicht zustellbarer Nachrichten zu verwalten, für die später ein neuer Zustellversuch unternommen werden muss.
Die zweite Frage bezieht sich auf die vollständige Bezeichnung des Rechners, die zur Erstellung von E-Mail-Adressen aus einem lokalen Benutzernamen verwendet wird; die vollständige Bezeichnung des Rechners wird zu dem Teil hinter dem at-Zeichen („@“). Im Falle von Falcot sollte die Antwort mail.falcot.com lauten. Dies ist die einzige standardmäßig gestellte Frage, aber die Konfigurierung, zu der sie führt, ist für die Bedürfnisse von Falcot nicht vollständig genug, weshalb die Administratoren dpkg-reconfigure postfix aufrufen, um so weitere Parameter einstellen zu können.
Eine der zusätzlichen Fragen erkundigt sich nach allen Domain-Namen, die mit diesem Rechner in Zusammenhang stehen. Die Standardliste umfasst seine vollständige Bezeichnung sowie einige Synonyme für localhost, jedoch muss die Hauptdomain falcot.com von Hand hinzugefügt werden. Allgemeiner gesagt sollte diese Frage normalerweise mit allen Domain-Namen beantwortet werden, für die dieser Rechner als MX-Server dienen soll; mit anderen Worten, allen Domain-Namen, für die der DNS angibt, dass dieser Rechner E-Mails annimmt. Diese Information geht in die Variable mydestination der Hauptkonfigurationsdatei von Postfix — /etc/postfix/main.cf — ein.
Rolle des DNS-MX-Eintrags beim Versenden einer E-Mail

Abbildung 11.1. Rolle des DNS-MX-Eintrags beim Versenden einer E-Mail

In manchen Fällen kann während der Installation auch gefragt werden, welchen Netzwerken es erlaubt sein soll, E-Mails über den Rechner zu verschicken. In seiner Standard-Konfiguration akzeptiert Postfix nur E-Mails, die von diesem Rechner selbst kommen; das lokale Netzwerk wird gewöhnlich hinzugefügt. Die Falcot Corp. Administratoren haben 192.168.0.0/16 zur Standardantwort hinzugefügt. Falls diese Frage nicht gestellt wird, ist mynetworks die relevante Variable in der Konfigurationsdatei, wie in unten stehendem Beispiel zu sehen ist.
Lokale E-Mail kann auch durch procmail zugestellt werden. Dieses Programm ermöglicht es Benutzern, ihre ankommende E-Mail nach Regeln, die in der Datei ~/.procmailrc gespeichert sind, zu sortieren.
Nach diesem ersten Schritt verfügen die Administratoren über die folgende Konfigurationsdatei; sie wird als Ausgangspunkt verwendet, um in den nächsten Abschnitten einige weitere Funktionsmerkmale hinzuzufügen.

Beispiel 11.1. Anfängliche /etc/postfix/main.cf-Datei

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.falcot.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.falcot.com, falcot.com, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/16
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

11.1.2. Virtuelle Domains konfigurieren

Der Mail-Server kann außer E-Mails, die an die Hauptdomain adressiert sind, auch solche entgegennehmen, die an andere Domains gerichtet sind. Diese werden dann virtuelle Domains genannt. In den meisten derartigen Fällen sind die E-Mails letztlich nicht für lokale Benutzer bestimmt. Postfix stellt für die Verwendung virtueller Domains zwei interessante Leistungsmerkmale bereit.

11.1.2.1. Virtuelle Alias-Domains

Eine virtuelle Alias-Domain enthält nur Aliasse, das heißt Adressen, die nur E-Mails an andere Adressen weiterleiten.
Eine derartige Domain wird durch das Hinzufügen ihres Namens zur Variablen virtual_alias_domains und das Eintragen eines Verweises auf eine Adressen-Bezugsdatei in die Variable virtual_alias_maps aktiviert.

Beispiel 11.2. In die Datei /etc/postfix/main.cf einzufügende Anweisungen

virtual_alias_domains = falcotsbrand.com
virtual_alias_maps = hash:/etc/postfix/virtual
The /etc/postfix/virtual file describes a mapping with a rather straightforward syntax: each line contains two fields separated by whitespace; the first field is the alias name, the second field is a list of email addresses where it redirects. The special @domain.com syntax covers all remaining aliases in a domain.

Beispiel 11.3. Beispiel der Datei /etc/postfix/virtual

webmaster@falcotsbrand.com  jean@falcot.com
contact@falcotsbrand.com    laure@falcot.com, sophie@falcot.com
# The alias below is generic and covers all addresses within 
# the falcotsbrand.com domain not otherwise covered by this file.
# These addresses forward email to the same user name in the
# falcot.com domain.
@falcotsbrand.com           @falcot.com

11.1.2.2. Virtuelle Postfach-Domains

An ein virtuelles Postfach adressierte Nachrichten werden in Postfächern gespeichert, die keinem lokalen Systembenutzer zugeordnet sind.
Um eine virtuelle Postfach-Domain zu aktivieren, ist es erforderlich, diese Domain in der Variablen virtual_mailbox_domains einzutragen und in virtual_mailbox_maps einen Verweis auf eine Mailbox-Bezugsdatei anzugeben. Der Parameter virtual_mailbox_base enthält das Verzeichnis, in dem die Postfächer gespeichert werden.
Der Paramater virtual_uid_maps (beziehungsweise virtual_gid_maps) verweist auf die Datei, die den Bezug zwischen der E-Mail-Adresse und dem Systembenutzer (beziehungsweise der Gruppe) enthält, dem das entsprechende Postfach „gehört“. Um alle Postfächer zusammen fassen zu können, die dem selben Benutzer beziehungsweise der selben Gruppe gehören, weist man mittels der Syntax static:5000 eine feste UID/GID (hier mit dem Wert 5000) zu.

Beispiel 11.4. In die Datei /etc/postfix/main.cf einzufügende Anweisungen

virtual_mailbox_domains = falcot.org
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_mailbox_base = /var/mail/vhosts
Auch die Syntax der Datei /etc/postfix/vmailbox ist recht einfach: zwei durch Leerzeichen getrennte Felder. Das erste Feld ist eine E-Mail-Adresse innerhalb einer der virtuellen Domains, und das zweite ist der Ort des dazugehörigen Postfachs (relativ zum Verzeichnis, das in virtual_mailbox_base angegeben ist). Falls die Bezeichnung des Postfachs mit einem Schrägstrich (/) endet, werden die E-Mails im maildir-Format gespeichert; anderenfalls wird das traditionelle mbox-Format benutzt. Das maildir-Format verwendet ein ganzes Verzeichnis zur Speicherung eines Postfachs, wobei jede individuelle Nachricht in einer eigenen Datei gespeichert wird. Dagegen ist beim mbox-Format das gesamte Postfach in einer einzigen Datei gespeichert, wobei jede Zeile, die mit „From “ beginnt (From gefolgt von einem Leerzeichen), den Beginn einer neuen Nachricht anzeigt.

Beispiel 11.5. Die Datei /etc/postfix/vmailbox

# Jeans E-Mail ist als maildir gespeichert mit
# einer Datei je E-Mail in einem gesonderten Verzeichnis
jean@falcot.org falcot.org/jean/
# Sophies E-Mail ist in einer traditionellen „mbox“-Datei gespeichert
# mit allen Mails zu einer einzigen Datei verkettet
sophie@falcot.org falcot.org/sophie

11.1.3. Einschränkungen beim Empfangen und Senden

Die wachsende Zahl unerwünschter Massen-E-Mails (spam) macht es erforderlich, bei der Entscheidung, welche E-Mails ein Server annehmen sollte, in zunehmendem Maße strikt zu sein. Dieser Abschnitt zeigt einige der in Postfix enthaltenen Strategien.

11.1.3.1. IP-basierte Zugangsbeschränkungen

Die Anweisung smtpd_client_restrictions bestimmt, welchen Rechnern es erlaubt ist, mit dem E-Mail-Server zu kommunizieren.

Beispiel 11.6. Beschränkungen aufgrund von Client-Adressen

smtpd_client_restrictions = permit_mynetworks,
    warn_if_reject reject_unknown_client,
    check_client_access hash:/etc/postfix/access_clientip,
    reject_rbl_client sbl-xbl.spamhaus.org,
    reject_rbl_client list.dsbl.org
When a variable contains a list of rules, as in the example above, these rules are evaluated in order, from the first to the last. Each rule can accept the message, reject it, or leave the decision to a following rule. As a consequence, order matters, and simply switching two rules can lead to a widely different behavior.
Die Anweisung permit_mynetworks, die als erste Regel verwendet wurde, akzeptiert alle E-Mails, die von einem Rechner im lokalen Netzwerk (wie in der Konfigurationsvariablen mynetworks festgelegt) kommen.
Die zweite Direktive würde normalerweise alle E-Mails zurückweisen, die von Rechnern ohne vollständig gültige DNS-Konfiguration kommen. Solch eine gültige Konfiguration bedeutet, dass die IP-Adresse einem Namen zugeordnet werden kann, und dass dieser Name wiederum der IP-Adresse zugeordnet ist. Diese Beschränkung ist häufig zu strikt, da manche E-Mail-Server keinen umgekehrten DNS für ihre IP-Adresse haben. Dies erklärt, warum die Falcot Administratoren der Direktive reject_unknown_client den Modifikator warn_if_reject vorangestellt haben: dieser Modifikator wandelt die Zurückweisung in eine einfache Warnung um, die in den Protokollen aufgezeichnet wird. Die Administratoren können dann die Anzahl der Nachrichten im Blick behalten, die zurückgewiesen würden, wenn die Regel tatsächlich durchgesetzt würde und später aufgrund dieser Informationen eine Entscheidung treffen, ob sie die Durchsetzung aktivieren wollen.
The third directive allows the administrator to set up a blacklist and a whitelist of email servers, stored in the /etc/postfix/access_clientip file. Servers in the whitelist are considered as trusted, and the emails coming from there therefore do not go through the following filtering rules.
The last two rules reject any message coming from a server listed in one of the indicated blacklists. RBL is an acronym for Remote Black List; there are several such lists, but they all list badly configured servers that spammers use to relay their emails, as well as unexpected mail relays such as machines infected with worms or viruses.

11.1.3.2. Die Gültigkeit der Befehle EHLO und HELO überprüfen

Jeder SMTP-Austausch beginnt mit einem HELO- oder EHLO-Befehl, gefolgt vom Namen des sendenden E-Mail-Servers; es kann interessant sein, die Gültigkeit dieses Namens zu überprüfen.

Beispiel 11.7. Beschränkungen für den in EHLO genannten Namen

smtpd_helo_restrictions = permit_mynetworks,
    reject_invalid_hostname,
    check_helo_access hash:/etc/postfix/access_helo,
    reject_non_fqdn_hostname,
    warn_if_reject reject_unknown_hostname
Die erste Anweisung, permit_mynetworks, erlaubt es allen Rechnern des lokalen Netzwerks, sich ungehindert einzuführen. Dies ist wichtig, da einige E-Mail-Programme diesen Teil des SMTP-Protokolls nicht in ausreichendem Maße beachten und sich mit unsinnigen Namen einführen können.
Die Regel reject_invalid_hostname weist E-Mails zurück, wenn die EHLO-Angabe einen syntaktisch unkorrekten Rechnernamen enthält. Die Regel reject_non_fqdn_hostname weist Nachrichten zurück, wenn der angegebene Rechnername kein vollständig ausgewiesener Domain-Name ist (dies schließt einen Domain-Namen wie auch einen Rechnernamen ein). Die Regel reject_unknown_hostname weist Nachrichten zurück, falls es den angegebenen Namen im DNS nicht gibt. Da diese letzte Regel leider zu viele Zurückweisungen zur Folge hat, haben die Administratoren ihre Wirkung mit Hilfe des Modifikators warn_if_reject bis auf Weiteres in eine einfache Warnung umgewandelt; sie können entscheiden, diesen Modifikator später zu entfernen, nachdem sie die Ergebnisse dieser Regel überprüft haben.
Using permit_mynetworks as the first rule has an interesting side effect: the following rules only apply to hosts outside the local network. This allows blacklisting all hosts that announce themselves as part of the falcot.com, for instance by adding a falcot.com REJECT You are not in our network! line to the /etc/postfix/access_helo file.

11.1.3.3. Annahme oder Ablehnung aufgrund des angegebenen Absenders

Jede Nachricht hat einen Absender, der durch den Befehl MAIL FROM des SMTP-Protokolls angegeben wird; auch diese Information kann auf verschiedene Weise überprüft werden.

Beispiel 11.8. Überprüfung des Absenders

smtpd_sender_restrictions = 
    check_sender_access hash:/etc/postfix/access_sender,
    reject_unknown_sender_domain, reject_unlisted_sender,
    reject_non_fqdn_sender
Die Tabelle /etc/postfix/access_sender ordnet einigen Absendern eine besondere Behandlung zu. Dies bedeutet für gewöhnlich, dass einige Absender in eine Positivliste oder eine schwarze Liste aufgenommen werden.
Die Regel reject_unknown_sender_domain verlangt eine gültige Absenderdomain, da sie für eine gültige Adresse benötigt wird. Die Regel reject_unlisted_sender weist lokale Absender zurück, falls die Adresse nicht existiert; hierdurch wird vermieden, dass E-Mails von einer ungültigen Adresse in der falcot.com-Domain verschickt werden, und Nachrichten, die von joe.bloggs@falcot.com ausgehen, werden nur akzeptiert, wenn eine solche Adresse tatsächlich existiert.
Schließlich weist die Regel reject_non_fqdn_sender E-Mails zurück, die vorgeben, von Adressen ohne einen vollständig ausgewiesenen Domain-Namen zu kommen. In der Praxis bedeutet dies, dass E-Mails, die von benutzer@rechner kommen, zurückgewiesen werden: die Adresse muss entweder als benutzer@rechner.beispiel.com oder benutzer@beispiel.com angegeben werden.

11.1.3.4. Annehmen oder zurückweisen aufgrund des Empfängers

Jede E-Mail hat wenigstens einen Empfänger, der im SMTP-Protokoll mit dem Befehl RCPT TO angegeben wird. Diese Adressen erfordern ebenfalls eine Gültigkeitsprüfung, selbst wenn dies weniger wichtig sein sollte als die Überprüfung des Absenders.

Beispiel 11.9. Überprüfung des Empfängers

smtpd_recipient_restrictions = permit_mynetworks, 
    reject_unauth_destination, reject_unlisted_recipient, 
    reject_non_fqdn_recipient
reject_unauth_destination is the basic rule that requires outside messages to be addressed to us; messages sent to an address not served by this server are rejected. Without this rule, a server becomes an open relay that allows spammers to send unsolicited emails; this rule is therefore mandatory, and it will be best included near the beginning of the list, so that no other rules may authorize the message before its destination has been checked.
Die Regel reject_unlisted_recipient weist Nachrichten zurück, die an nicht existierende lokale Benutzer geschickt werden, was natürlich Sinn macht. Schließlich weist die Regel reject_non_fqdn_recipient nicht vollständig ausgewiesene Adressen zurück; dies macht es unmöglich, eine E-Mail an jean oder jean@rechner zu schicken, und erfordert stattdessen, die vollständige Adresse zu verwenden, wie jean@rechner.falcot.com or jean@falcot.com.

11.1.3.5. Beschränkungen in Verbindung mit dem Befehl DATA

SMTPs Befehl DATA wird vor dem Inhalt der Nachricht verschickt. An sich stellt er keine Information bereit, außer anzukündigen, was als nächstes kommt.Dennoch kann er Überprüfungen unterworfen werden.

Beispiel 11.10. Überprüfungen von DATA

smtpd_data_restrictions = reject_unauth_pipelining
Die Anweisung reject_unauth_pipelining bewirkt, dass die Nachricht zurückgewiesen wird, falls die aussendende Partei einen Befehl verschickt, bevor die Antwort auf den vorhergehenden Befehl gesendet worden ist. Dies schützt vor einer häufig von Spam-Robotern benutzten Optimierung, da sie sich gewöhnlich keinen Deut um Antworten scheren und sich nur darauf konzentrieren, in möglichst kurzer Zeit möglichst viele E-Mails zu verschicken.

11.1.3.6. Beschränkungen anwenden

Obwohl die oben stehenden Befehle Informationen in verschiedenen Phasen des SMTP-Austauschs überprüfen, verschickt Postfix die eigentliche Zurückweisung nur als Antwort auf den Befehl RCPT TO.
Dies bedeutet, dass selbst wenn die Nachricht aufgrund eines ungültigen EHLO-Befehls zurückgewiesen wird, Postfix den Absender und den Empfänger kennt, wenn es die Zurückweisung bekanntgibt. Es kann dann eine eindeutigere Nachricht protokollieren, als möglich gewesen wäre, falls die Übertragung gleich zu Anfang abgebrochen worden wäre. Außerdem erwarten manche SMTP-Clients keine Störungen bei den frühen SMTP-Befehlen, und diese Clients werden durch die späte Zurückweisung weniger gestört.
Ein letzter Vorteil dieser Vorgehensweise ist, dass die Regeln im Verlauf der verschiedenen SMTP-Stadien Informationen sammeln können; dies ermöglicht es, feinkörnigere Berechtigungen zu formulieren, wie zum Beispiel eine nicht-lokale Verbindung zurückzuweisen, wenn sie sich als lokaler Absender ausgibt.

11.1.3.7. Filtern aufgrund des Nachrichteninhalts

The validation and restriction system would not be complete without a way to apply checks to the message contents. Postfix differentiates the checks applying to the email headers from those applying to the email body.

Beispiel 11.11. Inhaltsbezogene Filter aktivieren

header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
Beide Dateien enthalten eine Liste regulärer Ausdrücke (gewöhnlich als regexps oder regexes bezeichnet) und damit zusammenhängender Aktionen, die ausgelöst werden, wenn die E-Mail-Kopfzeilen (oder der Inhalt) einem Ausdruck entsprechen.

Beispiel 11.12. Beispiel einer Datei /etc/postfix/header_checks

/^X-Mailer: GOTO Sarbacane/ REJECT I fight spam (GOTO Sarbacane)
/^Subject: *Your email contains VIRUSES/ DISCARD virus notification
Der erste überprüft die Kopfzeile, die die E-Mail-Software nennt; falls GOTO Sarbacane gefunden wird (ein Programm zum Versenden von Massen-E-Mails), wird die Nachricht zurückgewiesen. Der zweite Ausdruck überprüft den Nachrichtenbetreff; falls er eine Virenmeldung nennt, können wir entscheiden, die Nachricht nicht zurückzuweisen, sondern stattdessen sofort zu löschen.
Die Verwendung dieser Filter ist ein zweischneidiges Schwert, da die Regeln leicht zu allgemein formuliert werden können und als Folge seriöse E-Mails verloren gehen. In diesen Fällen sind nicht nur die Nachrichten verloren, sondern ihre Absender erhalten zudem unerwünschte (und störende) Fehlermeldungen.

11.1.4. Greylisting einrichten

“Greylisting” is a filtering technique according to which a message is initially rejected with a temporary error code, and only accepted on a further try after some delay. This filtering is particularly efficient against spam sent by the many machines infected by worms and viruses, since this software rarely acts as a full SMTP agent (by checking the error code and retrying failed messages later), especially since many of the harvested addresses are really invalid and retrying would only mean losing time.
Postfix stellt Greylisting nicht von Haus aus zur Verfügung, jedoch gibt es eine Funktion, mit der die Entscheidung, eine bestimmte Nachricht anzunehmen oder zurückzuweisen, an ein externes Programme delegiert werden kann. Das Paket postgrey enthält genau solch ein Programm, das dafür ausgelegt ist, sich in diesen Dienst zur Delegierung der Zugangsrichtlinien einzubinden.
Sobald postgrey installiert ist, läuft es als Daemon und nimmt an Port 10023 Verbindungen an. Postfix kann dann auf seine Verwendung eingestellt werden, indem der Parameter check_policy_service als zusätzliche Bedingung hinzugefügt wird:
smtpd_recipient_restrictions = permit_mynetworks,
    [...]
    check_policy_service inet:127.0.0.1:10023
Jedes Mal, wenn Postfix diese Regel in seinem Regelsatz erreicht, verbindet es sich mit dem postgrey-Daemon und schickt ihm Informationen über die entsprechende Nachricht. Wenn Postgrey überprüft seinerseits die Dreiergruppe aus IP-Adresse, Absender und Empfänger und sieht in seiner Datenbank nach, ob dieselbe Dreiergruppe vor kurzem bereits aufgetreten ist. n dies der Fall ist, antwortet Postgrey, dass die Nachricht angenommen werden sollte; anderenfalls zeigt die Antwort an, dass die Nachricht vorübergehend zurückgewiesen werden soll, und die Dreiergruppe wird in die Datenbank eingetragen.
Der Hauptnachteil des Greylistings besteht darin, dass seriöse Nachrichten verzögert werden, was nicht immer akzeptabel ist. Es erhöht außerdem die Belastung von Servern, die zahlreiche seriöse E-Mails versenden.

11.1.5. Filter anhand des Empfängers einstellen

Abschnitt 11.1.3, „Einschränkungen beim Empfangen und Senden“ and Abschnitt 11.1.4, „Greylisting einrichten“ reviewed many of the possible restrictions. They all have their use in limiting the amount of received spam, but they also all have their drawbacks. It is therefore more and more common to customize the set of filters depending on the recipient. At Falcot Corp, greylisting is interesting for most users, but it hinders the work of some users who need low latency in their emails (such as the technical support service). Similarly, the commercial service sometimes has problems receiving emails from some Asian providers who may be listed in blacklists; this service asked for a non-filtered address so as to be able to correspond.
Postfix bietet eine derartige Filteranpassung mit dem Konzept einer „restriction class“ an. Diese Klassen werden in dem Parameter smtpd_restriction_classes angegeben und in der gleichen Weise wie smtpd_recipient_restrictions festgelegt. Die Anweisung check_recipient_access bezeichnet dann eine Tabelle, die einem bestimmten Empfänger den richtigen Satz von Beschränkungen zuordnet.

Beispiel 11.13. Beschränkungsklassen in main.cf festlegen

smtpd_restriction_classes = greylisting, aggressive, permissive

greylisting = check_policy_service inet:127.0.0.1:10023
aggressive = reject_rbl_client sbl-xbl.spamhaus.org,
        check_policy_service inet:127.0.0.1:10023
permissive = permit

smtpd_recipient_restrictions = permit_mynetworks,
        reject_unauth_destination,
        check_recipient_access hash:/etc/postfix/recipient_access

Beispiel 11.14. Die Datei /etc/postfix/recipient_access

# Unfiltered addresses
postmaster@falcot.com  permissive
support@falcot.com     permissive
sales-asia@falcot.com  permissive

# Aggressive filtering for some privileged users
joe@falcot.com         aggressive

# Special rule for the mailing-list manager
sympa@falcot.com       reject_unverified_sender

# Greylisting by default
falcot.com             greylisting

11.1.6. Einen Virenschutz integrieren

Die zahlreichen als E-Mail-Anhänge umlaufenden Viren erfordern das Einrichten eines Virenschutzes am Eingang des Firmennetzwerks, da einige Benutzer trotz einer Aufklärungskampagne weiterhin Anhänge von offensichtlich fragwürdigen Nachrichten öffnen.
Die Falcot Administratoren haben clamav als ihren kostenlosen Virenschutz ausgewählt. Das Hauptpaket ist clamav, aber sie haben auch einige Zusatzpakete wie arj, unzoo, unrar und lha installiert, da diese benötigt werden, damit der Virenschutz Anhänge analysieren kann, die in einem dieser Formate komprimiert sind.
Die Aufgabe, die Verbindung zwischen dem Virenschutz und dem E-Mail-Server bereitzustellen, fällt dem Programm clamav-milter zu. Ein Milter (kurz für Mailfilter) ist ein speziell für die Verbindung mit E-Mail-Servern ausgelegtes Programm. Ein Milter verwendet eine standardmäßige Programmierschnittstelle (API = application programming interface), die eine deutlich bessere Leistung aufweist als Filter außerhalb der E-Mail-Server. Milter wurden ursprünglich von Sendmail eingeführt, aber Postfix ist dem bald gefolgt.
Nachdem das Paket clamav-milter installiert ist, sollte milter umkonfiguriert werden um auf einen TCP-Port statt auf den Named Socket aufzusetzen. Das geht mit dpkg-reconfigure clamav-milter. Wenn die Frage nach dem "Communication interface with Sendmail" gestellt wird geben Sie “inet:10002@127.0.0.1” ein.
Die standardmäßige ClamAV-Konfiguration eignet sich für die meisten Situationen, aber einige wichtige Parameter können noch mit dpkg-reconfigure clamav-base angepasst werden.
Im letzten Schritt wird Postfix angewiesen, den neu konfigurierten Filter zu verwenden. Dies geschieht einfach durch das Hinzufügen der folgenden Anweisung zu /etc/postfix/main.cf:
# Virus check with clamav-milter
smtpd_milters = inet:[127.0.0.1]:10002
If the antivirus causes problems, this line can be commented out, and service postfix reload should be run so that this change is taken into account.
Alle Nachrichten, die von Postfix verarbeitet werden, laufen jetzt durch den Virenschutzfilter.

11.1.7. Authentifiziertes SMTP

Being able to send emails requires an SMTP server to be reachable; it also requires said SMTP server to send emails through it. For roaming users, this may need regularly changing the configuration of the SMTP client, since Falcot's SMTP server rejects messages coming from IP addresses apparently not belonging to the company. Two solutions exist: either the roaming user installs an SMTP server on their computer, or they still use the company server with some means of authenticating as an employee. The former solution is not recommended since the computer won't be permanently connected, and it won't be able to retry sending messages in case of problems; we will focus on the latter solution.
SMTP-Authentifizierung in Postfix ist auf SASL angewiesen (Simple Authentication and Security Layer). Hierzu ist es erforderlich, die Pakete libsasl2-modules und sasl2-bin zu installieren und dann für jeden Benutzer, der eine Authentifizierung beim SMTP-Server benötigt, ein Passwort in die SASL-Datenbank einzutragen. Dies geschieht mithilfe des Befehls saslpasswd2, der verschiedene Parameter akzeptiert. Die Option -u legt die Authentifizierungs-Domain fest, die mit dem Parameter smtpd_sasl_local_domain in der Postfix-Konfiguration übereinstimmen muss. Die Option -c ermöglicht das Anlegen eines Benutzers und -f gestattet es, die Datei zu bestimmen, die benutzt werden soll, wenn die SASL-Datenbank an einem anderen als dem standardmäßig vorgegebenen Ort (/etc/sasldb2) gespeichert werden muss.
# saslpasswd2 -u `postconf -h myhostname` -f /var/spool/postfix/etc/sasldb2 -c jean
[... geben Sie Jeans Passwort zweimal ein ...]
Beachten Sie, dass die SASL-Datenbank im Verzeichnis von Postfix erstellt worden ist. Um Konsistenz sicherzustellen, wandeln wir außerdem /etc/sasldb2 in einen symbolischen Verweis um, der auf die von Postfix verwendete Datenbank weist. Dies geschieht mit dem Befehl ln -sf /var/spool/postfix/etc/sasldb2 /etc/sasldb2.
Nun müssen wir Postfix so einstellen, dass es SASL benutzt. Zunächst muss der Benutzer postfix zur Gruppe sasl hinzugefügt werden, damit er auf die Datenbank des SASL-Kontos zugreifen kann. Einige zusätzliche Parameter sind erforderlich, um SASL zu aktivieren, und der Parameter smtpd_recipient_restrictions muss so eingestellt werden, dass Benutzer, die für SASL authentifiziert sind, ungehindert E-Mails versenden können.

Beispiel 11.15. SASL in /etc/postfix/main.cf aktivieren

# Enable SASL authentication
smtpd_sasl_auth_enable = yes
# Define the SASL authentication domain to use
smtpd_sasl_local_domain = $myhostname
[...]
# Adding permit_sasl_authenticated before reject_unauth_destination
# allows relaying mail sent by SASL-authenticated users
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
[...]