Postfix/Extras: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 9: Zeile 9:
Konfigurationsänderungen erfordern a <tt>postfix.service</tt> [https://wiki.archlinux.org/title/Reload laden] , um wirksam zu werden.
Konfigurationsänderungen erfordern a <tt>postfix.service</tt> [https://wiki.archlinux.org/title/Reload laden] , um wirksam zu werden.


=== Lokale Post  ===
=== Lokaler Mailserver ===
Um E-Mails nur an lokale Systembenutzer aus der <tt>/etc/passwd</tt> zu versenden  
Um E-Mails nur an lokale Systembenutzer aus der <tt>/etc/passwd</tt> zu versenden  



Version vom 5. Juni 2022, 12:12 Uhr

Postfix

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 Post

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.

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.

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

Mail-Server