/etc/postfix/main.cf
zu erstellen.
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.
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.
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.
procmail
zugestellt werden. Dieses Programm ermöglicht es Benutzern, ihre ankommende E-Mail nach Regeln, die in der Datei ~/.procmailrc
gespeichert sind, zu sortieren.
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
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
/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
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.
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
/etc/postfix/vmailbox
file is quite straightforward: two fields separated with whitespace. The first field is an email address within one of the virtual domains, and the second field is the location of the associated mailbox (relative to the directory specified in virtual_mailbox_base). If the mailbox name ends with a slash (/
), the emails will be stored in the maildir format; otherwise, the traditional mbox format will be used. The maildir format uses a whole directory to store a mailbox, each individual message being stored in a separate file. In the mbox format, on the other hand, the whole mailbox is stored in one file, and each line starting with “From
” (From
followed by a space) signals the start of a new message.
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
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
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.
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.
/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.
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
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.
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.
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.
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
/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.
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.
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.
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.
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
.
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.
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.
RCPT TO
.
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.
Beispiel 11.11. Inhaltsbezogene Filter aktivieren
header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks
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
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.
check_policy_service
als zusätzliche Bedingung hinzugefügt wird:
smtpd_recipient_restrictions = permit_mynetworks, [...] check_policy_service inet:127.0.0.1:10023
postgrey
-Daemon und schickt ihm Informationen über die entsprechende Nachricht. 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. Wenn 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.
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
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.
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.
dpkg-reconfigure clamav-milter
. Wenn die Frage nach dem "Communication interface with Sendmail" gestellt wird geben Sie “inet:10002@127.0.0.1
” ein.
dpkg-reconfigure clamav-base
angepasst werden.
/etc/postfix/main.cf
:
# Virus check with clamav-milter smtpd_milters = inet:[127.0.0.1]:10002
service postfix reload
should be run so that this change is taken into account.
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 ...]
/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
.
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, [...]