======= Konfiguration von Postfix ======= Die Hauptkonfiguration befindet sich in ''/etc/postfix/main.cf'', eine ausführlich kommentierte Beispiel-Konfiguration liegt unter ''/usr/share/postfix/main.cf.dist''. * Das utility postconf und die man-Datei (Aufruf: ''man postconf'') helfen weiter. * allgemeine Regel: wenn ein konkreter Rechner gemeint ist immer in eckigen Klammern angeben, andernfalls wird für diese Adresse eine [[netzwerke:DNS]]-Anfrage (nach dem zuständigen Rechner) generiert. * **Konfigurationsdateien** in ''/etc/postfix'': * master.cf - Aufrufe u.a. der Contentfilter * main.cf - Hauptkonfiguration * **nur Einstellungen anzeigen die von den Standardeinstellungen abweichen**: postconf -n * Aktuell gültige Einstellungen: postconf * Standardeinstellungen: postconf -d * Datenbank ''btree:/etc/postfix/relay_domains'' nach Schlüssel ''domain.tld'' durchsuchen: postmap -q domain.tld btree:/etc/postfix/relay_domains ===== oft benutzte Einstellungen ===== Oft benutzte Einstellungen in der ''main.cf'': * maximale **Nachrichtenlänge** (aktuelle Einstellung überprüfen mit: ''postconf | grep message_size''): message_size_limit = 52428800 # default is: 10240000 * **Deutsche Meldungstexte**: - [[http://postfix.state-of-mind.de/bounce-templates/bounce.de-DE.cf|deutscher Text (template) für Benachrichtigung über Verzögerungen, Nichtzustellbarkeit]] etc. herunterladen:cd /etc/postfix/ && wget http://postfix.state-of-mind.de/bounce-templates/bounce.de-DE.cf - folgenden Text in der ''main.cf'' hinzufügen # deutsche Nachrichten für bounces/Verzögerungen etc. bounce_template_file=/etc/postfix/bounce.de-DE.cf * **nur bestimmte IPs zu Empfang/Versand benutzen** ("binden") # IP for outgoing connections: smtp_bind_address= 1.2.3.4 # IPs for incoming connections: inet_interfaces = 1.2.3.4 127.0.0.1 * Einige **Statuscodes verschärfen** (bei Standeinstellung, Fehlercode 450, würde es der andere Server immer wieder probieren) # reject non-existent user (verified against target systems) with a fatal error (they won't try again) # standard is: 450 # normaly 550 would be used here, i use 577 to find it easier in logs. unverified_recipient_reject_code = 577 # text for this error is available since 2.6.x: "unverified_recipient_reject_reason" # rejct non-existent/unresolveable domains with a fatal error (they won't try again) # standard is: 450 # normaly 550 would be used here, i use 576 to find it easier in logs. unknown_address_reject_code = 576 ===== Adressumschreibung des Empfängers ===== ==== Aliase ==== :!: Aliase gelten nur für lokale Benutzer dessen Empfänger durch Aliase umgeschrieben werden kann. Benutzer fremder Systeme (=dessen Ziel wir nicht sind) können über virtuelle Benutzer umgeschrieben werden. * Datei editieren: ''/etc/aliases'' (Schema ist ''Benutzer: Zielbenutzer'') * **Aliase** neu einlesen : newaliases ==== virtuelle Benutzer ==== Mit virtuellen Benutzern können externe Zieladressen umgeschrieben werden. Dazu benötigt es - eine Datei (z.B. "''/etc/postfix/virtual''") - in der die Umschreibungen nach dem Schema alte@adresse.de neue@adresse.de definiert werden und - einen Konfigurationseintrag virtual_maps = hash:/etc/postfix/virtual - zuletzt eine Umwandlung als Datenbank mit ''postmap'' anstoßen: postmap /etc/postfix/virtual ===== Relayhost oder Smarthost ===== ==== Relay sein ==== Konfiguration wenn wir ein Relayhost für andere sind. * Variante 1: Andere Hosts über IP-Adresse authentifizieren (macht nur Sinn bei festen IPs und im lokalen LAN) mynetworks = 127.0.0.0/8, 192.168.0.0/24 * Variante 2: Andere Hosts über Zugangsdaten authentifizieren FIXME ==== Relay benutzen ==== Das Relay des Providers kümmert sich um den Versand der eMails. # do we use a relayhost/smarthost? relayhost = smtp-relay.of.my.provider.tld Ggf. mit SMTP-Auth (siehe unten). ==== transports ==== Transports geben konkrete Routen/Ziele für bestimmte domains an, dies benötigt man bei Zielen die nicht im [[netzwerke:DNS]]-gelistet sind, z.B. [[software:Groupware]]-Server. Eleganterweise lassen sich die Einträge für relay-Domains und transports in der gleichen Datei verwalten: - Datei ''/etc/postfix/relay_domains'': Domain1.de :[ziel-server1.de] - mit postmap umwandeln: postmap /etc/postfix/relay_domains - Einträge in der main.cf relay_domains = hash:/etc/postfix/relay_domains transport_maps = hash:/etc/postfix/relay_domains :!: Bei dieser Lösung dürfen aber reinen keine transports für externe Domains enthalten sein, da man sonst zum offenen Relay für diese Domains wird. ==== Absenderadressen maskieren ==== masquerade_domains = mydomain.tld Ausnahmen für bestimmte Benutzer: masquerade_exceptions = root ===== smtp_auth ===== - Datei anlegen: ''/etc/postfix/smtp_auth'' - Inhalt nach Schema: FQDN_MX_Gateway USER:PASSWORT - postmap /etc/postfix/smtp_auth ==== LOGIN / AUTH nur mit PLAIN möglich ==== Fehlermeldung: : SASL authentication failed; cannot authenticate to server SMTP-SERVERXYZ.tld[1.2.3.4]: no mechanism available oder warning: SASL authentication failure: No worthy mechs found smtp_sasl_auth_enable=yes smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth # allow plain/login: (standard contains: noplaintext) smtp_sasl_security_options = noanonymous ===== Postfix - SSL Konfiguration und debugging ===== Verschlüsselung ist (leider) bei [[netzwerke:SMTP]] lt. RFC immer optional, d.h. es muss immer erlaubt sein mails unverschlüsselt einzuliefern. Dennoch sollte sollte man sie anbieten und nutzen wo immer möglich auch wenn das Sicherheitsniveau durch viele Server mit selbst-signierten Zertifkate gesenkt wird. Die Anschaffung eines wildcard-Zertifikates für alle MTAs (mx1.DOMAIN.TLD, mx2.DOMAIN.TLD) ist auch eine sinnvolle Ausgabe, ggf. kann man gleich alle Server damit abdecken wenn alles unterhalb einer Domain statt findet. Kommentierter Auschnitt aus ''/etc/postfix/main.cf'': # === SSL/TLS Einstellungen ============= # STARTTLS abgehend nutzen (aber nicht erzwingen): smtp_tls_security_level=may # STARTTLS eingehend anbieten (aber nicht erzwingen): smtpd_tls_security_level=may # Systemzertifikate zur Verifizierung heranziehen: smtpd_tls_CApath = /etc/ssl/certs smtp_tls_CApath = /etc/ssl/certs # Headereinträge zur Transportverschlüsselung hinzufügen smtpd_tls_received_header = yes # SSL-Debug: # smtpd_tls_loglevel = 1 # Eigene Zertifikate (certs/keys im pem-Format) smtpd_tls_key_file = /etc/postfix/DOMAIN.TLD.key smtpd_tls_cert_file = /etc/postfix/DOMAIN.TLD.cert # wahrscheinloch nötige Zwischenzertifikate (Intermediate) smtpd_tls_CAfile = /etc/postfix/DOMAIN.TLD-plus-zwischenzertifikate.crt # === SSL/TLS Einstellungen ENDE ============= ==== SSL/TLS debugging ==== Kommentierter Auschnitt aus ''/etc/postfix/main.cf'': smtpd_tls_received_header = yes smtpd_tls_loglevel = 3 # 0 (none) to 4 (full data) ===== Einbindung externer Filtersysteme ===== Die Einbindung externer Filtersysteme ist problemlos möglich, da diese auf einem lokalen Port lauschen: # policyd-weight check_policy_service inet:127.0.0.1:12525, # greylisting check_policy_service inet:127.0.0.1:60000, ==== Spamassassin mit Postfix ==== [[server:Spamassassin]] kann grundsätzlich über zwei Wege zur Spamfilterung benutzt werden: * smptd_proxy_filter innerhalb amavis-new (empfohlen) * [[http://www.akadia.com/services/postfix_spamassassin.html|als eigener content_filter]]: Keine Blockierung gleich beim Empfang möglich, aber für filterung lokaler (versendender) Benutzer nötig.