Postfix/Extras: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
= | === Konfiguration === | ||
== Konfiguration == | |||
Siehe [http://www.postfix.org/BASIC_CONFIGURATION_README.html Postfix-Basiskonfiguration]. | Siehe [http://www.postfix.org/BASIC_CONFIGURATION_README.html Postfix-Basiskonfiguration]. | ||
Version vom 5. Juni 2022, 13:07 Uhr
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
Postgrau
Dieser Artikel oder Abschnitt benötigt Sprach-, Wiki-Syntax- oder Stilverbesserungen.
- Siehe Hilfe:Stil als Referenz.
Grund: Siehe Help:Style (Diskutieren in Talk:Postfix )
Postgrey kann verwendet werden, um Greylisting für einen Postfix-Mailserver zu aktivieren.
Installation
Installieren Sie das postgrey -Paket.
- Um es schnell zum Laufen zu bringen, bearbeiten Sie die Postfix-Konfigurationsdatei und fügen Sie diese Zeilen hinzu:
- /etc/postfix/main.cf
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10030
Dann starten/aktivieren Sie die postgreyService.
- Laden Sie anschließend die postfixService.
- Jetzt sollte Greylisting aktiviert sein.
Aufbau
Konfiguration erfolgt durch Erweiterung der Einheit postgrey.service.
Weiße Liste
Um eine automatische Whitelist hinzuzufügen (erfolgreiche Zustellungen werden auf die Whitelist gesetzt und müssen nicht mehr warten), fügen Sie die hinzu --auto-whitelist-clients=NOption und ersetzen Num eine angemessen kleine Zahl (oder belassen Sie es auf dem Standardwert von 5).
- /etc/systemd/system/postgrey.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/bin/postgrey --inet=127.0.0.1:10030 \ --pidfile=/run/postgrey/postgrey.pid \ --group=postgrey --user=postgrey \ --daemonize \ --greylist-text="Für %%s Sekunden auf der Greylist" \ --auto-whitelist-clients
Erstellen Sie die Datei, um zusätzlich zu den Standardclients Ihre eigene Liste mit Whitelist-Clients hinzuzufügen /etc/postfix/whitelist_clients.localund geben Sie einen Host oder eine Domäne pro Zeile ein und starten Sie dann neu postgrey.servicedamit die Änderungen wirksam werden.
Fehlerbehebung
Wenn Sie angeben --unix=/path/to/socketund die Socket-Datei nicht erstellt wird, stellen Sie sicher, dass Sie die Standardeinstellung entfernt haben --inet=127.0.0.1:10030aus der Servicedatei.
Eine vollständige Dokumentation möglicher Optionen finden Sie unter perldoc postgrey.
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