Postfix besteht aus dem Startdienst postfix und einer Reihe von Unterdiensten
Postfix nimmt Mails für alle Domains an, die mit dem Parameter mydestination definiert wurden, diese werden standardmäßig in die mbox (/var/mail) des jeweiligen Benutzers eingespeist.
Alternativ kann postfix die Mails auch an einen anderen Dienst weiterleiten, das kann über den Parameter mailbox_transport definiert werden.
Letzteres kann sinnvoll sein wenn Dienste wie Cyrus imap benutzt werden.
Mails weiterleiten macht postfix nur für die unter mynetworks angegebenen Netze (vertraute Netze)(Hinweis: smtp_recipient_restriction beachten, wenn gesetzt ist, das deaktiviert das unter Umständen), oder für alle Domains unter relayhosts angegeben sind.
Alternativ kann man per smtp_recipient_restrictions und der Option permit_sasl_authenticated zusätzlich die Benutzer freischalten die sich per sasl authentifiziert haben.
Hinweis: Auch Mailclients zählen zu den relayenden Stationen - wenn nicht in mynetworks müssen sie authentifizieriert werden und die Authentifizierungsmethode (zum Beispiel sasl_authenticated) in smtpd_recipient_restrictions freigeschaltet werden.
Welche Benutzer existieren prüft postfix gegen /etc/alias und /etc/passwd. Mails an Benutzer die in diesen nicht vorkommen werden abgelehnt.
Um auch Postfächer verwalten zu können für Benutzer die auf dem System nicht existieren, kann per local_recipient_list eine Liste der zusätzlichen (nicht im System angelegten) Benutzer angegeben werden.
Achtung: Diese Liste muss per postmap in eine Hashmap umgewandelt werden - Außerdem müssen im Parameter local_recipient_list (wenn dieser definiert wird) auch die /etc/aliasas und /etc/passwd angegeben werden → sonst keine lokale Mailzustellung innerhalb des Systems mehr. Für Detials siehe Liste der Parameter im folgenden.
Name | Beschreibung | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mydestination | Alle Domains für die das lokale System zuständig ist (die auf dem lokalen System gehostet werden - ihre Postfächer haben) Die Einträge werden mit Komma getrennt |
||||||||||||||||
mynetworks | Netzwerke die relayen dürfen (Mails an andere Server über den lokalen Server versenden). Alle Hosts die eine IP-Adresse aus diesem Bereich haben können Mails über den Server senden (und nicht nur an den Server als Ziel). Die einzelnen Bereiche werden durch Leerzeichen getrennt. Achtung: Im Parameter (wenn er gesetzt wird) smtp_recipient_restrictions muss permit_mynetworks als Option gesetzt sein. Achtung: Hier sollte mindestens immer 127.0.0.1 und die IPv6-Entsprechung eingetragen sein - sonst geht der lokale Mailversand nicht |
||||||||||||||||
relayhost | Full Qualified Names (Domains) für die der Server immer relayed (wenn diese als To angegeben sind) (auch wenn sie nicht in mynetworks oder anderweitig berechtigt sind) - in der Regel leer | ||||||||||||||||
myhostname | Optional - Hostname - wird ansonsten vom System ausgelesen Parameter wird an verschiedenen Stellen genutzt Achtung: Das wird für den Host und Domain im HELO-Befehl genutzt und muss im DNS über die IP-Adresse Reverse-Lookup-Fähig sein - sonst lehnen einige Mailserver die Verbindung ab Achtung: Wird bei SALS-Authentification als Realm benutzt wenn hinter dem Benutzernamen für die Authentification kein @Realm kommt. Die Benutzer in der saslpasswd müsen mit dem gleichen Realm angelegt werden. Dieser Verhalten kann durch den Parameter smtpd_sasl_local_domain geändert werden (kann optional ein andere Default-Realm für die AUthentifizierung gesetzt werden |
||||||||||||||||
mydomain | Optional - Domainname - wird ansonsten vom System ausgelesen Parameter wird an verschiedenen Stellen genutzt |
||||||||||||||||
inet_interface | Netzwerk-Interfaces an denen auf eingehende Mails gelauscht werden soll Interfacenamen oder all für alle. Achtung: Wird hier nicht „all“ angegeben, muss lo angegeben werden, sonst können intern (System) keine Mails mehr versendet werden |
||||||||||||||||
smtpd_recipient_restrictions | Liste anhand derer die Weiterverarbeitung der Mail zugelassen wird oder abgelehnt werden kann. Wird nach smtp_client_restrictions, smtp_helo_restrictions, smtp_sender_restrictions ausgeführt. Ist sozusagen eine Black- und Whitelist in einem. Eigenschaften des Senders/der Mail die zu einem weitertransport führen sollen werden permit_Eigenschaft geschrieben, Eigenschaften die zu einer Ablehnung der Mail führen sollen mit einem deny_Eigenschaft. Sobald eine permit_ oder deny_-Regel gegriffen hat, wird der Rest der Regeln nicht mehr durchlaufen. Das bedeutet auch, das Ausnahmen von deny_-Regeln in Form von permit-Regeln vor den deny_-Regeln stehen müssen. Beispiel: smtpd_recipient_restrictions = permit_mynetworks, reject_unlisted_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, permit_sasl_authenticated, reject_unauth_destination Da permit_mynetworks als erstes kommt, dürfen Hosts die in mynetworks stehen unter Angabe beliebiger Domains an alle anderen beibigen Domains Mails senden - es gibt also keine Verbote die hier greifen würden, da der Parameter vor allen anderen kommt. Mails an Ziele auf dem lokalen System die nicht existieren (reject_unlisted_recipient) werden verworfen (das dient dazu die Mailwarteschlange nicht blockieren zu lassen), das gleiche gilt für Mails bei denen im Absender keine komplette Domain steht (reject_non_fqdn_sender) oder die Absender-Domain nicht im DNS existiert (sich nicht in einen MX-Eintrag oder Host-Eintrag auflösen lässt). Anschließend werden Hosts die sich per SASL-Authentifzierung authentifiziert haben für das Senden von Mails über diesen Rechner freigeschaltet (permit_sasl_authenticated). Allerdings unterliegen diese bereits den Restriktionen die durch die reject_-Parameter ergeben. Denn sobald ein Parameter in der Liste matcht, wird der Rest nicht mehr überprüft. Ist also bei einem Sasl-Auhentifizierten Sender die Prüfung ob die Domain von der er sendet existiert (reject_unknown_sender_domain) zutreffend, dann wird die Mail von ihm nicht transportiert. Trifft hingegen keine der Regeln vor dem Parameter zu, dann wird die permit_sasl_authenticated-Regel ausgeführt und die Mail transportiert, auch wenn Regeln die nach dem Parameter stehen dies vielleicht unterbinden würden. Der letzte Parameter verweigert das relayen (weitertransportieren an einen anderen Host) von allen Systemen die nicht authentifiziert sind und deren Ziel nicht in relay_hosts steht oder das System selbst ist. Dieser Parameter steht am Ende der Liste, da wenn er am Anfang der Liste stehen würde und dahinter permit_sasl_authenticated und permit_mynetworks diese Parameter gar nicht mehr zum tragen kommen würden, sondern alle Mails die nicht an Ziele in relay_hosts oder das System selbst gerichtet sind grundsätzlich abgelehent werden würden. Dieser Parameter ist wichtig, da sonst beliebige Server/Clients unauthentifiziert Mails an beliebige Ziele senden können, auch über relay_hosts hinaus. Einige Mögliche Werte:
|
||||||||||||||||
local_recipient_maps | Liste mit Dateien/Datenbanken in denen die lokalen Epfänger gelistet sind Insebsondere wichtig wenn in smtpd_recipient_restrictions reject_unlisted_recipients gestezt ist. Sollte mindestens die Aliases-Tabelle und /etc/passwd für den lokalen Mailtransport enthalten. In der Regel wird mindestens eine eitere Datei benötigt für Benutzer die auf dem System nicht angelegt sind (also nicht in /etc/passwd) die aber als Mailkonto auf dem System existieren. Beispiel: local_recipient_maps = proxy:unix:passwd.byname, $alias_maps,hash:/etc/postfix/recipient_list Erste Argument ist das Einbinden der passwd, das Zweite der alias_maps (in der Regel unter /etc/aliases) und der letzte das Einbinden einer benutzerdefinierten Liste zusätzlicher Empfänger die nicht in den beiden anderen beiden Dateien vorhanden sind, weil im System nicht angelegt. Private Listen (zusätzliche Listen mit lokalen Empfängern) müssen wie folgt aufgebaut sein: Empfänger OK Empfänger2 OK
Prinzipiell ist nur wichtig das vorne der Empfänger steht, dann ein oder mehrere Leerzeichen und ein weiteres beliebiges Wort. |
||||||||||||||||
alias_database und alias_maps | Verweise auf Alias-Datenbanken/-Dateien Alias-Datenbanken mappen Benutzernamen auf andere Postfächer - sozusagen wie Umleitungen Der Benutzer admin kann auf den Benutzer root gemappt werden, so das alle Mails an admin in das Postfach von root geschrieben werden. Beispiel: aliash_database=hash:/etc/aliases bzw. alias_maps=hash:/etc/aliases Aufbau der Datei: Empfänger: Neuer Empfänger Empfänger2: Neuer Emfänger
Es ist dabei möglich das der neue Empfänger in einem weiter unten folgenden Auftrag wieder an ein anderes Postfach umgeleitet wird. |
||||||||||||||||
smtpd_sasl_auth_enable | yes - aktiviere sasl-Auth für die Authentifizierung von Clients/Servern per SASL Per SASL authentifizierte Benutzer können Mails über den Server relayen (aus Clientsicht einfach versenden) - allerdings muss smtpd_recipient_restrictions permit_sasl_autneticated enthalten. Sasl steht für Simple Authentication and Security Layer - ein Framework zum Authentifizieren von Benutzern und verschlüsselter Übertragung von Passwörtern |
||||||||||||||||
smtpd_sasl_path | Pfad zur Date in der die sasl-Konfiguration für den smtpd hinterlegt ist. In der Regel genügt der Dateiname. Die Datei mus dann unter /etc/postfix/sasl mit dem entsprechenden Namen angelegt werden. In der Datei wird festgelegt auf welche Weise die (pwcheck_method) die Authentifizierung durchgeführt wird - letztendlich wo nach dem Benutzer und dem Passwort geguckt wird (in einer Textdatenbank, oder in einer Datenbank oder über den saslauthd oder per ldap, gegebenfalls welches Plugin eingesetzt werden soll. Außerdem welche Mechanismen zur Übertragung des Passworts verwendet werden dürfen (mech_list). Die Parameter und Werte werden durch : getrennt - Parameter:Wert Beispieldatei: pwcheck_method: auxprop auxprop_plugin:sasldb mech_list:CRAM-MD5 DIGEST-MD5 NTLM
Das Beispiel zeigt die Authentifizierung über sasldb (liegt gewöhnlich unter /etc/sasldb2 → Hash-Textdatei) und die Freischaltung der Übertragungsmechanismen für das Passwort CRAM-MD5,DIGEST-MD5,NTLM
|
||||||||||||||||
broken_sasl_auth_clients | Aktiviert die Unterstützung eines obsoleten Standards für ältere Clients | ||||||||||||||||
smtp_sasl_security_options | Sciherheitsoptionen für sasl-Authentifizierung noanonymous → Verbiete alle Methoden die eine anonyme Authentizierung erlauben An sich sollte bei richtiger Konfiguration alles was hier einstellbar ist auf anderen Wegen bereits konfigriert sein - es dient letztendlich nur als zusätzlicher Schutz um gefährliche Optionen die eventuell unebwusst gesetzt wurden noch einmal explizit zu unterbinden |
||||||||||||||||
smtpd_sasl_local_domain | Optional - Definiert den Default-Realm für Benutzer die keinen mitsenden Benutzer die sich authentifizieren können einen Realm angeben → iwan-iwanowitsch@bar.foo.de → wäre der Realm bar.foo.de und es würde in den Sasl-Authentification-Mechanismen nachdiesme Benutzer gesucht werden (inkl- Realm). Alternativ kann man den Realm weglassen und als Benutzernamen nur iwan-iwanowitsch angeben. In diesem Fall wird der Realm aus der Variabele myhostname gesetzt. Der Benutzer sendet zwar nur iwan-iwanowitsch, für die Authentifizierung innerhalb SASL wird dann aber iwan-iwanowitsch@$myhostname, also zum Beispiel iwan-iwanowitsch@bla.de benutzt. Da myhostname für verschiedenen Sachen benutzt wird (u.a. als Hostname in der helo-Nachricht) kann der Default-Realm abweichend sein. Diesen kann man dann über smtpd_sasl_local_domain ändern. |
||||||||||||||||
mailbox_transport | Transportweg der genutzt werden soll um Mails an lokale Mailboxen zuzustellen Normalerweise werden Mails von postfix in die unix-Posfächer gespeichert. Wenn die Mails durch andere Dienste wie Cyrus imap weiterverarbeitet werden sollen bzw. durch diese gespeichert werden sollen, kann man hier einen Transport angeben. Bei Cyrus Imap: mailbox_transport=lmtp:unix:/var/run/cyrus/socket/lmtp lmtp → Lokal mail transport protocol (eine vereinfachte Form von smtp) unix: → Unix-Socket Pfad: Der Pfad zum Unix-Socket von Cyrus imap. Achtung: Gegebenfalls müssen die Rechte für den Socket angepasst werden, so das postfix in diesen schrieben kann. |
||||||||||||||||
myorigin | Domain die an die Adressen für lokal versendete Mails angehängt wird und an die Mails gehen die keine Domain als Ziel angegeben haben Muss in der Regel nicht gesetzt werden, wird auf $myhostname gesetzt per Default Achtung:append_dot_domain entscheidet letztendlich ob das was unter myorigin angegeben ist tatsächlich an die Absenderadresse angehängt wird |
||||||||||||||||
append_dot_domain | Entscheidet ob myorigin an Abesenderadressen von Mails die von lokal versendet werden angehängt wird oder nicht Braucht nicht geändert werden, ist per Default yes. |
||||||||||||||||
smtpd_banner | Text der in der 202-Status-Nachricht gesendet werden soll Wird an sich automatisch gesetzt, kann aber geändert werden |
||||||||||||||||
mailbox_size_limit | Maximale größe lokaler Mailboxen bzw. allen Dateien in die Postfix Mails schreibt
|
||||||||||||||||
notify_classes | Definiert Klassen von Fehlern die geloggt werden sollen Für mich sinnvoll: notify_classes=delay,software,resource,2bounce |
||||||||||||||||
readme_directory | Sinn erschließt sich mir nicht - soll ein Dokumentationsverzeichnis zur Verfügung stellen (wem ist unklar und wie auch) | ||||||||||||||||
message_size_limit | Maximale Nachrichtengröße (inkl. Anhänge) die durch Postfix akzeptiert wird Wert gilt für eingehende und ausgehende Nachrichten. Angabe ist in IbiByte (1024 als Basis, nichgt 1000) und als Byte-Wert → 50 MB → 52428800) |