Postfix/Extras: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 182: Zeile 182:


  [http://postfixadmin.sourceforge.net/ http://postfixadmin.sourceforge.net/] || [https://archlinux.org/packages/?name=postfixadmin postfixadmin]
  [http://postfixadmin.sourceforge.net/ http://postfixadmin.sourceforge.net/] || [https://archlinux.org/packages/?name=postfixadmin postfixadmin]
=== Postgrau  ===
Dieser Artikel oder Abschnitt benötigt Sprach-, Wiki-Syntax- oder Stilverbesserungen.
* Siehe [https://wiki.archlinux.org/title/Help:Style Hilfe:Stil] als Referenz.
Grund: Siehe [https://wiki.archlinux.org/title/Help:Style Help:Style] (Diskutieren in [https://wiki.archlinux.org/title/Talk:Postfix Talk:Postfix] )
[https://postgrey.schweikert.ch/ Postgrey] kann verwendet werden, um [https://en.wikipedia.org/wiki/Greylisting_(email) Greylisting] für einen Postfix-Mailserver zu aktivieren.
==== Installation  ====
[https://wiki.archlinux.org/title/Install Installieren Sie] das [https://archlinux.org/packages/?name=postgrey 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 [https://wiki.archlinux.org/title/Start/enable starten/aktivieren Sie] die <tt>postgrey</tt>Service.
* Laden Sie anschließend die <tt>postfix</tt>Service.
* Jetzt sollte Greylisting aktiviert sein.
==== Aufbau  ====
Konfiguration erfolgt durch [https://wiki.archlinux.org/title/Extend_the_unit Erweiterung der Einheit] <tt>postgrey.service</tt>.
==== 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 <tt>--auto-whitelist-clients=N</tt>Option und ersetzen <tt>N</tt>um 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 <tt>/etc/postfix/whitelist_clients.local</tt>und geben Sie einen Host oder eine Domäne pro Zeile ein und starten Sie dann neu <tt>postgrey.service</tt>damit die Änderungen wirksam werden.
==== Fehlerbehebung  ====
Wenn Sie angeben <tt>--unix=/path/to/socket</tt>und die Socket-Datei nicht erstellt wird, stellen Sie sicher, dass Sie die Standardeinstellung entfernt haben <tt>--inet=127.0.0.1:10030</tt>aus der Servicedatei.
Eine vollständige Dokumentation möglicher Optionen finden Sie unter <tt>perldoc postgrey</tt>.


=== SpamAssassin  ===
=== SpamAssassin  ===

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.

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

Mail-Server