Postfix/Extras
Konfiguration
Siehe Postfix-Basiskonfiguration.
Konfigurationsdateien sind unter /etc/postfix abgelegt. Die beiden wichtigsten Dateien sind:
- master.cf, definiert, welche Postfix-Dienste aktiviert sind und wie sich Clients mit ihnen verbinden, siehe master(5)
- main.cf, die Hauptkonfigurationsdatei, siehe postconf(5)
Konfigurationsänderungen erfordern a postfix.service laden , um wirksam zu werden.
Lokaler Mailserver
Um E-Mails nur an lokale Systembenutzer aus der /etc/passwd zu versenden
/etc/postfix/main.cf
um die folgende Konfiguration widerzuspiegeln.
Entkommentieren, ändern oder fügen Sie die folgenden Zeilen hinzu:
myhostname = localhost mydomain = localdomain mydestination = $myhostname, localhost.$mydomain, localhost inet_interfaces = $myhostname, localhost mynetworks_style = host default_transport = error: outside mail is not deliverable
Alle anderen Einstellungen können unverändert bleiben.
Nachdem Sie die obige Konfigurationsdatei eingerichtet haben, möchten Sie vielleicht einige #Aliasnamen einrichten und dann #Postfix starten.
Virtuelle Mailserver
Virtuelle Mail ist Mail, die keinem Benutzerkonto zugeordnet ist (/etc/passwd).
Siehe Mailsystem für virtuelle Benutzer mit Postfix, Dovecot und Roundcube für eine umfassende Anleitung zur Einrichtung.
Konfiguration prüfen
Führen Sie die aus postfix checkBefehl.
- Es sollte alles ausgeben, was Sie möglicherweise in einer Konfigurationsdatei falsch gemacht haben.
Geben Sie Folgendes ein, um alle Ihre Konfigurationen anzuzeigen postconf.
- Um zu sehen, wie Sie sich von den Standardeinstellungen unterscheiden, versuchen Sie es postconf -n.
Postfix starten
Hinweis: Sie müssen laufen newaliasesmindestens einmal, damit Postfix ausgeführt wird, auch wenn Sie keine #Aliases.
Starten/aktivieren Sie die postfix.service.
Tipps und Tricks
Eingehende E-Mails auf die schwarze Liste setzen
Das manuelle Blacklisting eingehender E-Mails nach Absenderadresse ist mit Postfix problemlos möglich.
Erstellen und öffnen /etc/postfix/blacklist_incomingDatei und E-Mail-Adresse des Absenders anhängen:
user@example.com ABLEHNEN
Dann nutzen Sie die postmapBefehl zum Erstellen einer Datenbank:
# Postmap-Hash: blacklist_incoming
Fügen Sie den folgenden Code vor der ersten Zulassungsregel ein main.cf:
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/blacklist_incoming
Endlich neu starten postfix.service.
Blenden Sie die IP des Absenders und den Benutzeragenten im Received-Header aus
Dies ist vor allem ein Datenschutzproblem, wenn Sie Thunderbird verwenden und eine E-Mail senden.
- Der empfangene Header enthält Ihre LAN- und WAN-IP und Informationen über den von Ihnen verwendeten E-Mail-Client. (Originalquelle: AskUbuntu ) Wir möchten den Received-Header aus ausgehenden E-Mails entfernen.
- Dies kann durch die folgenden Schritte erfolgen:
Fügen Sie die folgende Zeile hinzu main.cf: smtp_header _checks = regulärer Ausdruck:/etc/postfix/smtp_header_checks
Erstellen /etc/postfix/smtp_header_checksmit diesem Inhalt:
/^Empfangen:. */ IGNORIEREN /^User-Agent:. */ IGNORIEREN
Zum Schluss neu starten postfix.service.
Postfix in einem Chroot-Gefängnis
Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt.
- Die Postfix-Dokumentation [1] liefert Details darüber, wie man ein solches Jail bewerkstelligen kann.
- Die Schritte sind unten beschrieben und basieren auf dem chroot-setup-Skript, das im Postfix-Quellcode bereitgestellt wird.
Gehen Sie zuerst in die master.cfDatei im Verzeichnis /etc/postfixund ändern Sie alle Chroot-Einträge auf 'yes' (y) mit Ausnahme der Dienste qmgr, proxymap, proxywrite, local, und virtual
Erstellen Sie zweitens zwei Funktionen, die uns später beim Kopieren von Dateien in das Chroot-Gefängnis helfen (siehe letzter Schritt).
CP="cp -p"
cond_copy() { # Dateien nach Muster in $1 finden # Falls vorhanden, in Verzeichnis $2 kopieren dir=`dirname "$1"` pat=`Basisname "$1"` lr=`find "$dir" -maxdepth 1 -name "$pat"` wenn testen! -d "$2" ; dann Ausfahrt 1 ; fi if test "x$lr" != "x" ; dann $CP $1 "$2" ; fi }
Erstellen Sie als Nächstes die neuen Verzeichnisse für das Gefängnis:
setze -e Maske 022
POSTFIX_DIR=${POSTFIX_DIR-/var/spool/postfix} cd ${POSTFIX_DIR}
mkdir -p etc lib usr/lib/zoneinfo test -d /lib64 && mkdir -p lib64
Suchen Sie die localtime-Datei
lt=/etc/localtime wenn testen! -f $lt ; dann lt=/usr/lib/zoneinfo/localtime ; fi wenn testen! -f $lt ; dann lt=/usr/share/zoneinfo/localtime ; fi wenn testen! -f $lt ; then echo "cannot find localtime" ; Ausgang 1 ; fi rm -f etc/Ortszeit
Kopieren Sie localtime und einige andere Systemdateien in die Chroots etc
$CP -f $lt /etc/services /etc/resolv.conf /etc/nsswitch.conf usw $CP -f /etc/host.conf /etc/hosts /etc/passwd usw ln -s -f /etc/localtime usr/lib/zoneinfo
Stellen Sie sicher, dass resolv.conf root gehört:
chown root /var/spool/postfix/etc/resolv.conf
Kopieren Sie die erforderlichen Bibliotheken mit der zuvor erstellten Funktion in die Chroot cond_copy
cond_copy '/usr/lib/libnss_*.so*' lib cond_copy '/usr/lib/libresolv.so*' lib cond_copy '/usr/lib/libdb.so*' lib
Und vergessen Sie nicht, laden Postfix
DANE (DNSSEC)
Ressourceneintrag
Warnung Dies ist kein trivialer Abschnitt.
- Seien Sie sich bewusst, dass Sie sicherstellen, dass Sie wissen, was Sie tun.
- Lesen Sie besser Häufige Fehler vorher DANE unterstützt mehrere Arten von Datensätzen, jedoch sind nicht alle für Postfix geeignet.
Zertifikatsverwendung 0 wird nicht unterstützt, 1 wird 3 zugeordnet und 2 ist optional, daher wird empfohlen, einen „3“-Eintrag zu veröffentlichen.
- Mehr zu Resource Records.
Aufbau
Dieser Artikel oder Abschnitt muss erweitert werden. Begründung: Was bedeutet tempfail ? (Diskutieren Sie im Talk: Postfix )
Opportunistic DANE ist folgendermaßen konfiguriert:
- /etc/postfix/main.cf
smtpd_use_tls = ja smtp_dns_support_level = dnssec smtp_tls_security_level = Däne
;/etc/postfix/master.cf dane unix - - n - - smtp -o smtp_dns_support_level=dnssec -o smtp_tls_security_level=dane
Um domänenspezifische Richtlinien zu verwenden, z. B.
- opportunistisches DANE für example.org und obligatorisches DANE für example.com, verwende so etwas:
- /etc/postfix/main.cf
indexed = ${default_database_type}:${config_directory}/
# TLS-Richtlinie pro Ziel # smtp_tls_policy_maps = ${indexed}tls_policy
# default_transport = smtp, aber einige Ziele sind speziell: # transport_maps = ${indexed}transport Transport example.com-Daten example.org-Daten
tls_policy example.com nur für Dänen
Hinweis Für global obligatorisches DANE ändern smtp_tls_security_levelzu dane-only.
- Beachten Sie, dass dadurch Postfix tempfail wird (antworten Sie mit a 4.X.XFehlercode) auf alle Lieferungen, die überhaupt kein DANE verwenden!
Die vollständige Dokumentation finden Sie hier.
Extras
- PostfixAdmin — Eine webbasierte Verwaltungsschnittstelle für Postfix.
http://postfixadmin.sourceforge.net/ || postfixadmin
SpamAssassin
Dieser Abschnitt beschreibt, wie Sie SpamAssassin.
Eigenständiges generisches SpamAssassin-Setup
Hinweis Wenn Sie SpamAssassin und Dovecot Mail Filtering kombinieren möchten, ignorieren Sie die nächsten beiden Zeilen und fahren Sie stattdessen weiter unten fort.
Bearbeiten /etc/postfix/master.cfund fügen Sie den Inhaltsfilter unter smtp hinzu.
smtp inet n - n - - smtpd -o content_filter=Spamassassin
Fügen Sie außerdem den folgenden Diensteintrag für SpamAssassin hinzu
spamassassin unix - nn - - pipe flags=R user=spamd argv=/usr/bin/vendor_perl/spamc -e /usr/bin/sendmail -oi -f ${sender} ${recipient}
Jetzt können Sie starten und aktivieren spamassassin.service.
SpamAssassin kombiniert mit Dovecot LDA / Sieve (Mailfilterung)
Richten Sie LDA und das Sieve-Plugin wie in Dovecot#Sieve.
- Aber ignoriere die letzte Zeile mailbox_command... .
Fügen Sie stattdessen ein Rohr hinzu /etc/postfix/master.cf:
dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/bin/vendor_perl/spamc -u spamd -e /usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
Und aktivieren Sie es in /etc/postfix/main.cf:
virtual_transport = Taubenschlag
Wenn Sie keine virtuellen Transporte verwenden möchten, können Sie alternativ die verwenden mailbox_command. Das läuft mit dem lokalen Benutzer und der lokalen Gruppe, während die Pipe mit dem angegebenen Benutzer unter Verwendung von läuft userEinstellung.
mailbox_command = /usr/bin/vendor_perl/spamc -u spamd -e /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$EMPFÄNGER"
SpamAssassin kombiniert mit Dovecot LMTP / Sieve
Richten Sie das LMTP und Sieb wie in Dovecot#Sieve.
- /etc/dovecot/conf.d/90-plugin.conf
sieve_before = /etc/dovecot/sieve.before.d/ sieve_extensions = +vnd.dovecot.filter sieve_plugins = sieve_extprogramme sieve_filter_bin_dir = /etc/dovecot/sieve-filter sieve_filter_exec_timeout = 120s #dies wird oft für lange laufende Spamassassin-Scans benötigt, Standard ist ansonsten 10s
Erstellen Sie das Verzeichnis und fügen Sie spamassassin als Binärdatei ein, die von dovecot ausgeführt werden kann:
# mkdir /etc/dovecot/sieve-filter # ln -s /usr/bin/vendor_perl/spamc /etc/dovecot/sieve-filter/spamc
Erstellen Sie eine neue Datei, /etc/dovecot/sieve.before.d/spamassassin.sievewas beinhaltet:
require [ "vnd.dovecot.filter"] ; filter "spamc" [ "-d", "127.0.0.1", "--no-safe-fallback"] ;
Stellen Sie die Siebregeln zusammen spamassassin.svbin:
# cd /etc/dovecot/sieve.before.d # sievec spamassassin.sieve
Zum Schluss neu starten dovecot.service.
Regelbasierte Mailverarbeitung
Mit Richtliniendiensten kann man das Postfix-Verhalten bei der Zustellung von E-Mails leicht anpassen. postfwd und policyd ( policyd-mysql AUR , policyd-pgsql AUR oder policyd-sqlite AUR ) stellen dafür Dienste bereit.
- Damit können Sie zB zeitbewusstes Grey- und Blacklisting von Sendern und Empfängern sowie SPF Policy-Checking implementieren.
Richtliniendienste sind eigenständige Dienste und wie folgt mit Postfix verbunden:
- /etc/postfix/main.cf
smtpd_recipient_restrictions = . .. check_policy_service unix:/run/policyd.sock check_policy_service inet:127.0.0.1:10040
Das Platzieren von Richtliniendiensten am Ende der Warteschlange reduziert die Last, da nur legitime E-Mails verarbeitet werden.
- Achten Sie darauf, es vor der ersten Erlaubnisanweisung zu platzieren, um alle eingehenden Nachrichten abzufangen.
Sender Policy Framework
Um das Sender Policy Framework mit Postfix zu verwenden, können Sie spf -engine AUR , python-postfix-policyd-spf AUR oder postfix-policyd-spf-perl AUR.
Mit spf-engine oder python-postfix-policyd-spf
Bearbeiten /etc/python-policyd-spf/policyd-spf.confzu Ihren Bedürfnissen.
- Eine ausführlich kommentierte Version finden Sie unter /etc/python-policyd-spf/policyd-spf.conf.commented.
- Achten Sie besonders auf die HELO-Prüfrichtlinie, da die Standardeinstellungen HELO-Fehler strikt ablehnen.
In main.cfDatei, fügen Sie ein Timeout für die Richtlinie hinzu:
- /etc/postfix/main.cf
policy-spf_time_limit = 3600s
Fügen Sie dann einen Transport hinzu
- /etc/postfix/master.cf
policy-spf unix - nn - 0 spawnen user=nobody argv=/usr/bin/policyd-spf
Zuletzt müssen Sie die Policy zu der hinzufügen smtpd_recipient_restrictions.
- Um die Belastung zu minimieren, legte man am Ende der Beschränkungen aber vor reject_rbl_clientDNSBL-Zeile:
- /etc/postfix/main.cf
smtpd_recipient_restrictions= . .. permission_sasl_authenticated permission_mynetworks abgelehnt_unauth_destination check_policy_service unix:private/policy-spf
Laden Sie nun die neu postfixService.
Sie können Ihr Setup wie folgt testen:
- /etc/python-policyd-spf/policyd-spf.conf
defaultSeedOnly = 0
Mit postfix-policyd-spf-perl
Gehen Sie mit postfix genauso mit python-postfix-policyd-spf , jedoch mit den folgenden Unterschieden:
Zeitüberschreitung für die Richtlinie main.cfDatei:
- /etc/postfix/main.cf
policy_time_limit = 3600
Transport:
- /etc/postfix/master.cf
policy unix - nn - 0 spawnen user=nobody argv=/usr/lib/postfix/postfix-policyd-spf-perl
Fügen Sie die Richtlinie zu der hinzu smtpd_recipient_restrictions:
Warnung angeben check_policy_servicegemäß reject_unauth_destinationAndernfalls kann Ihr System zu einem offenen Relais werden.
- /etc/postfix/main.cf
smtpd_recipient_restrictions= . .. abgelehnt_unauth_destination check_policy_service unix:private/policy . ..
Sender Rewriting Scheme
Um das Sender Rewriting Scheme mit Postfix zu verwenden, installieren Sie postsrsd AUR und passen Sie die Einstellungen an:
- /etc/postsrsd/postsrsd
SRS_DOMAIN=ihredomain.tld SRS_EXCLUDE_DOMAINS=ihreanderedomain.tld,noch.eineanderedomain.tld SRS_SEPARATOR== SRS_SECRET=/etc/postsrsd/postsrsd.secret SRS_FORWARD_PORT=10001 SRS_REVERSE_PORT=10002 RUN_AS=postsrsd CHROOT=/usr/lib/postsrsd
Aktivieren und starten Sie den Daemon und stellen Sie sicher, dass er auch nach dem Neustart ausgeführt wird.
- Konfigurieren Sie dann Postfix entsprechend, indem Sie die folgenden Zeilen anpassen:
- /etc/postfix/main.cf
sender_canonical_maps = tcp:localhost:10001 sender_canonical_classes = Umschlag_Absender receiver_canonical_maps = tcp:localhost:10002 receiver_canonical_classes= Umschlag_Empfänger,Header_Empfänger
Starten Sie Postfix neu und starten Sie die Weiterleitung von E-Mails.
Fehlerbehebung
Warnung: "Datenbank /etc/postfix/*.db ist älter als Quelldatei. ."
Wenn Sie eine oder beide Warnungen mit journalctl erhalten :
Warnung: Die Datenbank /etc/postfix/virtual.db ist älter als die Quelldatei /etc/postfix/virtual Warnung: Die Datenbank /etc/postfix/transport.db ist älter als die Quelldatei /etc/postfix/transport
Dann können Sie es mit diesen Befehlen beheben, je nachdem, welche Meldungen Sie erhalten:
postmap /etc/postfix/transport postmap /etc/postfix/virtual
Und neu starten postfix.service.
Host- oder Domänenname nicht gefunden. Namensdienstfehler für name=...
Wenn Sie mit journalctl:
Host- oder Domänenname nicht gefunden. Namensdienstfehler für name=...
Es könnte sein, dass Sie Postfix in einem ausführen chrootund /etc/resolv.confwird vermisst.
Wenn ja, können Sie dies beheben, indem Sie:
mkdir -p /var/spool/postfix/etc cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf
Und neu starten postfix.service.
Siehe auch
Zum Thema passende Artikel