robertdebock.postfix

Ansible-Rolle Postfix

Installieren und konfigurieren Sie Postfix auf Ihrem System.

GitHub GitLab Downloads Version
github gitlab downloads Version

Beispiel-Playbook

Dieses Beispiel stammt aus molecule/default/converge.yml und wird bei jedem Push, Pull Request und Release getestet.

---
- name: Konvergenz
  hosts: alle
  become: true
  gather_facts: true

  roles:
    - role: robertdebock.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.example.com"
      postfix_mydomain: "example.com"
      postfix_myorigin: "example.com"
      postfix_mynetworks:
        - 127.0.0.0/8
        - 192.168.0.0/16
      postfix_aliases:
        - name: root
          destination: [email protected]
      # Ziggo-Einstellungen: ("email-address" und "email-password" sind Platzhalter)
      postfix_relayhost: "[smtp.ziggo.nl]:587"
      postfix_smtp_sasl_auth_enable: true
      postfix_smtp_sasl_password_map: "/etc/postfix/relay_pass"
      postfix_smtp_sasl_security_options: ""
      postfix_smtp_tls_wrappermode: false
      postfix_smtp_tls_security_level: may
      postfix_smtp_sasl_password_map_content: |
        [smtp.ziggo.nl]:587 email-address:email-password

Die Maschine muss vorbereitet werden. In CI erfolgt dies mit molecule/default/prepare.yml:

---
- name: Vorbereiten
  hosts: alle
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.core_dependencies

Siehe auch eine vollständige Erklärung und Beispiel zur Verwendung dieser Rollen.

Rollenvariablen

Die Standardwerte für die Variablen sind in defaults/main.yml festgelegt:

---
# Standardeinstellungen für Postfix

# Diese Einstellungen sind in Postfix erforderlich.
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# Um auf öffentlichen Schnittstellen "zuhören" zu können, setzen Sie inet_interfaces auf etwas wie
# "all" oder den Namen der Schnittstelle, wie "eth0".
postfix_inet_interfaces: "loopback-only"

# Aktivieren Sie IPv4 und IPv6, falls unterstützt - wenn nur IPv4, auf ipv4 setzen
postfix_inet_protocols: all

# Setzen Sie ein Banner
postfix_banner: "$myhostname ESMTP $mail_name"

# Das Ziel bestimmt, für welche Mails Postfix akzeptieren soll.
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# Um E-Mails von anderen Maschinen zu akzeptieren, setzen Sie mynetworks auf etwas wie
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Diese Einstellungen ändern die Rolle des Postfix-Servers zu einem Relay-Host.
# postfix_relay_domains: "$mydestination"

# Wenn Sie E-Mails an einen anderen zentralen Relay-Server weiterleiten möchten, setzen Sie relayhost.
# Verwenden Sie Klammern, um zum A-Record des Relayhost zu senden.
# postfix_relayhost: "[relay.example.com]"

# Setzen Sie die Einschränkungen für den Empfang von Mails.
postfix_smtpd_recipient_restrictions:
  - permit_mynetworks
  - permit_sasl_authenticated
  - reject_unauth_destination
  - reject_invalid_hostname
  - reject_non_fqdn_hostname
  - reject_non_fqdn_sender
  - reject_non_fqdn_recipient
  - reject_unknown_sender_domain
  - reject_unknown_recipient_domain
  - reject_rbl_client sbl.spamhaus.org
  - reject_rbl_client cbl.abuseat.org
  - reject_rbl_client dul.dnsbl.sorbs.net
  - permit

postfix_smtpd_sender_restrictions:
  - reject_unknown_sender_domain

# Das Standard-SMTP-TLS-Sicherheitsniveau für den Postfix-SMTP-Client
# Gültige Werte sind: dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# Um SpamAssassin zu aktivieren, stellen Sie sicher, dass SpamAssassin installiert ist,
# (Hinweis: role: robertdebock.spamassassin) und setzen Sie diese beiden Variablen:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Um ClamAV zu aktivieren, stellen Sie sicher, dass ClamAV installiert ist,
# (Hinweis: role: robertdebock.clamav) und setzen Sie diese Variable:
# postfix_clamav: enabled

# Sie können hier Aliase konfigurieren. Typischerweise ist das Umleiten von `root` ein guter Plan.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# Sie können hier Senderzugriffssteuerungen konfigurieren.
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Sie können hier Empfängerzugriffssteuerungen konfigurieren.
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Sie können hier SSL/TLS-Versionen deaktivieren.
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# Sie können hier eine transport_maps Jinja2-Vorlage bereitstellen
# postfix_transport_maps_template: /path/to/transport.j2

# Sie können hier eine header_checks Jinja2-Vorlage bereitstellen
# postfix_header_checks_template: /path/to/header_checks.j2

# Ob den lokalen Biff-Dienst verwenden oder nicht.
# postfix_biff: true

# Bei lokal eingereichter Mail die Zeichenkette ".$mydomain" an Adressen anhängen, die keine ".domain" Informationen haben
# postfix_append_dot_mydomain: false

# Die Alias-Datenbanken, die für die lokale(8)-Zustellung verwendet werden
# postfix_alias_maps: "hash:/etc/aliases"

# Ein Präfix, das der virtual(8)-Zustellagent allen Pfadnamens Ergebnissen aus $virtual_mailbox_maps Tabellenabfragen voranstellt.
# postfix_virtual_mailbox_base: /var/mail

# Optionale Nachschlagetabellen mit allen gültigen Adressen in den Domains, die `$virtual_mailbox_domains` entsprechen.
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix ist das endgültige Ziel für die angegebene Liste von Domains; Mail wird über den $virtual_transport Zustelltransport zugestellt
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix ist das endgültige Ziel für die angegebene Liste von virtuellen Alias-Domains, das sind Domains, für die alle Adressen in andere lokale oder entfernte Domains umgeleitet werden.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Optionale Nachschlagetabellen, die bestimmte E-Mail-Adressen oder Domains an andere lokale oder entfernte Adressen aliasieren.
# postix_virtual_alias_maps: "$virtual_maps"

# Nachschlagetabellen mit der Benutzer-ID pro Empfänger, die der virtual(8)-Zustellagent beim Schreiben in das Postfach des Empfängers verwendet.
# postfix_virtual_uid_maps: "static:2000"

# Nachschlagetabellen mit der Gruppen-ID pro Empfänger zur virtuellen(8) Zustellung.
# postfix_virtual_gid_maps: "static:2000"

# Aktivieren Sie die SASL-Authentifizierung im Postfix-SMTP-Server.
# postfix_smtpd_sasl_auth_enable: true

# Der Name des lokalen SASL-Authentifizierungsbereichs des Postfix-SMTP-Servers.
# postfix_smtpd_sasl_local_domain: $myhostname

# Postfix-SMTP-Server-SASL-Sicherheitsoptionen; seit Postfix 2.3 hängt die Liste der verfügbaren Funktionen von der SASL-Serverimplementierung ab, die mit smtpd_sasl_type ausgewählt wird.
# postfix_smtpd_sasl_security_options: noanonymous

# Melden Sie den SASL-authentifizierten Benutzernamen im smtpd(8) Received-Nachrichthdr.
# postfix_smtpd_sasl_authenticated_header: true

# Aktivieren Sie die Interoperabilität mit entfernten SMTP-Clients, die eine veraltete Version des AUTH-Befehls implementieren (RFC 4954).
# postfix_broken_sasl_auth_clients: false

# Eine Datei mit (PEM-Format) CA-Zertifikaten von Root-CA, die vertrauenswürdig sind, um entweder entfernte SMTP-Client-Zertifikate oder Zwischen-CA-Zertifikate zu signieren.
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Datei mit dem RSA-Zertifikat des Postfix-SMTP-Servers im PEM-Format.
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Lokale Datei mit dem RSA-Zertifikat des Postfix-SMTP-Servers im PEM-Format, die auf das Ziel-Host kopiert werden soll.
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Datei mit dem RSA-Privatschlüssel des Postfix-SMTP-Servers im PEM-Format.
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Lokale Datei mit dem RSA-Privatschlüssel des Postfix-SMTP-Servers im PEM-Format, die auf das Ziel-Host kopiert werden soll.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Fordern Sie den Postfix-SMTP-Server auf, empfangene Nachrichtenheader zu erzeugen, die Informationen über das verwendete Protokoll und die verwendete Verschlüsselung sowie den CommonName des entfernten SMTP-Clients und den CommonName des Zertifikatsausstellers enthalten.
# postfix_smtpd_tls_received_header: true

# Das Standard-SMTP-TLS-Sicherheitsniveau für den Postfix-SMTP-Client; wenn ein nicht leerer Wert angegeben wird, überschreibt dies die veralteten Parameter smtp_use_tls, smtp_enforce_tls und smtp_tls_enforce_peername.
# postfix_smtpd_tls_security_level: may

# Fragen Sie einen entfernten SMTP-Client nach einem Client-Zertifikat.
# postfix_smtpd_tls_ask_ccert: true

# Aktivieren Sie zusätzliche Protokollierung von TLS-Aktivitäten im Postfix-SMTP-Server.
# postfix_smtpd_tls_loglevel: 1

# Name der Datei mit dem optionalen TLS-Sitzungscache des Postfix-SMTP-Servers.
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# Eine Datei mit CA-Zertifikaten von Root-CA, die vertrauenswürdig sind, um entweder entfernte SMTP-Serverzertifikate oder Zwischen-CA-Zertifikate zu signieren.
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Datei mit dem RSA-Zertifikat des Postfix-SMTP-Clients im PEM-Format.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Datei mit dem RSA-Privatschlüssel des Postfix-SMTP-Clients im PEM-Format.
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Name der Datei mit dem optionalen TLS-Sitzungscache des Postfix-SMTP-Clients.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# Die externe Entropiequelle für den tlsmgr(8) Pseudo-Zufallszahlengenerator (PRNG) Pool im Speicher.
# postfix_tls_random_source: dev:/dev/urandom

# TLS-Protokolle, die vom Postfix-SMTP-Server mit obligatorischer TLS-Verschlüsselung akzeptiert werden.
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# TLS-Protokolle, die der Postfix-SMTP-Client mit obligatorischer TLS-Verschlüsselung verwenden wird.
# postfix_smtp_tls_mandatory_protocols: TLSv1

# Der Standard-Zustelltransport für die genaue Zustellung an Domains, die mit $virtual_mailbox_domains aufgelistet sind.
# postfix_virtual_transport: maildrop1

# Optionale Pfadangabe einer Postfachdatei relativ zum Home-Verzeichnis eines lokalen(8) Benutzers.
# postfix_home_mailbox: Maildir/

# Die maximale Größe in Bytes einer Nachricht, einschließlich Umschlaginformationen.
# postfix_message_size_limit: 10240000

# Fordern Sie, dass ein entfernter SMTP-Client sich mit dem HELO- oder EHLO-Befehl vorstellt, bevor er den MAIL-Befehl oder andere Befehle sendet, die eine EHLO-Verhandlung erfordern.
# postfix_smtpd_helo_required: false

# Die Zeiteinheit, über die die Verbindungsraten von Clients und andere Raten berechnet werden.
# postfix_anvil_rate_time_unit: 60s

# Die maximale Anzahl von Verbindungsversuchen, die ein Client innerhalb einer Zeiteinheit zu diesem Dienst unternehmen darf.
# postfix_smtpd_client_connection_rate_limit: 10

# Wie viele gleichzeitige Verbindungen ein Client zu diesem Dienst unternehmen darf.
# postfix_smtpd_client_connection_count_limit: 10

# Betrachten Sie eine Rücklaufnachricht als nicht zustellbar, wenn die Zustellung mit einem vorübergehenden Fehler fehlschlägt und die Zeit in der Warteschlange die Grenze bounce_queue_lifetime erreicht hat.
# postfix_bounce_queue_lifetime: 5d

# Der Standort der README-Dateien von Postfix, die beschreiben, wie ein spezifisches Postfix-Subsystem oder eine Funktion erstellt, konfiguriert oder betrieben wird.
# postfix_readme_directory: /usr/share/doc/postfix

# Der Standort der HTML-Dateien von Postfix, die beschreiben, wie ein spezifisches Postfix-Subsystem oder eine Funktion erstellt, konfiguriert oder betrieben wird.
# postfix_html_directory: /usr/share/doc/postfix/html

# Sie können den Port ändern, auf dem Postfix hört.
# Postfix verwendet `/etc/services`, um Dienstnamen in Portnummern wie `2525` zuzuordnen.
# Geben Sie also entweder eine Portnummer oder einen Dienstnamen wie `smtp` an.
postfix_smtp_listen_port: smtp

postfix_smtp_sasl_auth_enable: false
postfix_smtp_sasl_password_map: ""
postfix_smtp_sasl_security_options: ""
postfix_smtp_tls_wrappermode: false
postfix_smtp_sasl_password_map_content: ""

Anforderungen

Zustand der verwendeten Rollen

Die folgenden Rollen werden verwendet, um ein System vorzubereiten. Sie können Ihr System auf andere Weise vorbereiten.

Anforderung GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.core_dependencies Build Status GitHub Build Status GitLab

Kontext

Diese Rolle ist Teil vieler kompatibler Rollen. Schauen Sie sich die Dokumentation dieser Rollen für weitere Informationen an.

Hier ist eine Übersicht über verwandte Rollen: dependencies

Kompatibilität

Diese Rolle wurde auf diesen Container-Images getestet:

Container Tags
EL 9
Debian alle
Fedora alle
Ubuntu alle

Die Mindestversion von Ansible, die erforderlich ist, beträgt 2.12, Tests wurden durchgeführt auf:

  • Die vorherige Version.
  • Die aktuelle Version.
  • Die Entwicklungsversion.

Wenn Sie Probleme finden, registrieren Sie bitte diese in GitHub.

Lizenz

Apache-2.0.

Autoreninformation

robertdebock

Bitte überlegen Sie, mir finanziell zu unterstützen.

Über das Projekt

Install and configure postfix on your system.

Installieren
ansible-galaxy install robertdebock.postfix
Lizenz
apache-2.0
Downloads
145k
Besitzer
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.