robertdebock.postfix

Rôle Ansible postfix

Installez et configurez postfix sur votre système.

GitHub GitLab Téléchargements Version
github gitlab downloads Version

Exemple de Playbook

Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque push, pull request et release.

---
- name: Converger
  hosts: all
  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]
      # Paramètres Ziggo : ("adresse e-mail" et "mot de passe e-mail" sont des espaces réservés)
      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 adresse-email:mot-de-passe-email

La machine doit être préparée. Dans CI, ceci est fait en utilisant molecule/default/prepare.yml:

---
- name: Préparer
  hosts: all
  become: true
  gather_facts: false

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

Voir aussi une explication complète et un exemple sur l'utilisation de ces rôles.

Variables de rôle

Les valeurs par défaut des variables sont définies dans defaults/main.yml:

---
# fichier par défaut pour postfix

# Ces paramètres sont obligatoires dans postfix.
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# Pour "écouter" sur des interfaces publiques, définissez inet_interfaces sur quelque chose comme
# "all" ou le nom de l'interface, tel que "eth0".
postfix_inet_interfaces: "loopback-only"

# Activez IPv4, et IPv6 si supporté - si uniquement IPV4 mettez ipv4
postfix_inet_protocols: all

# Définir une bannière
postfix_banner: "$myhostname ESMTP $mail_name"

# La destination indique à Postfix quels courriers accepter.
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# Pour accepter des e-mails d'autres machines, définissez mynetworks sur quelque chose comme
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Ces paramètres changent le rôle du serveur postfix en un relais.
# postfix_relay_domains: "$mydestination"

# Si vous souhaitez transférer des e-mails vers un autre serveur de relais central, définissez relayhost.
# utilisez des crochets pour envoyer à l'enregistrement A du relais.
# postfix_relayhost: "[relay.example.com]"

# Définir les restrictions pour recevoir des courriers.
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

# Le niveau de sécurité SMTP TLS par défaut pour le client SMTP Postfix
# Les valeurs valides sont : dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# Pour activer spamassassin, assurez-vous que spamassassin est installé,
# (indice : role: robertdebock.spamassassin) et définissez ces deux variables :
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Pour activer clamav, assurez-vous que clamav est installé,
# (indice : role: robertdebock.clamav) et définissez cette variable :
# postfix_clamav: enabled

# Vous pouvez configurer des alias ici. Rediriger typiquement `root` est un bon plan.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# Vous pouvez configurer des contrôles d'accès pour les expéditeurs ici.
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Vous pouvez configurer des contrôles d'accès pour les destinataires ici.
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Vous pouvez désactiver les versions SSL/TLS ici.
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# Vous pouvez fournir un modèle Jinja2 pour transport_maps ici
# postfix_transport_maps_template: /path/to/transport.j2

# Vous pouvez fournir un modèle Jinja2 pour header_checks ici
# postfix_header_checks_template: /path/to/header_checks.j2

# Que ce soit ou non d'utiliser le service local biff.
# postfix_biff: true

# Avec le mail soumis localement, ajoutez la chaîne ".$mydomain" aux adresses qui n'ont pas d'informations ".domain"
# postfix_append_dot_mydomain: false

# Les bases de données d'alias utilisées pour la livraison locale(8)
# postfix_alias_maps: "hash:/etc/aliases"

# Un préfixe que l'agent de livraison virtual(8) ajoute à tous les résultats de chemin obtenus à partir de la table $virtual_mailbox_maps.
# postfix_virtual_mailbox_base: /var/mail

# Tables de consultation optionnelles avec toutes les adresses valides dans les domaines qui correspondent à $virtual_mailbox_domains.
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix est la destination finale pour la liste de domaines spécifiée ; le mail est livré via le transport de livraison $virtual_transport
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix est la destination finale pour la liste spécifiée de domaines d'alias virtuels, c'est-à-dire des domaines pour lesquels toutes les adresses sont aliasées à des adresses dans d'autres domaines locaux ou distants.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Tables de consultation optionnelles qui aliasent des adresses ou des domaines spécifiques à d'autres adresses locales ou distantes.
# postix_virtual_alias_maps: "$virtual_maps"

# Tables de consultation avec l'ID utilisateur par destinataire que l'agent de livraison virtual(8) utilise lors de l'écriture dans la boîte aux lettres du destinataire.
# postfix_virtual_uid_maps: "static:2000"

# Tables de consultation avec l'ID de groupe par destinataire pour la livraison de boîtes aux lettres virtual(8).
# postfix_virtual_gid_maps: "static:2000"

# Activer l'authentification SASL dans le serveur SMTP Postfix.
# postfix_smtpd_sasl_auth_enable: true

# Le nom du domaine local d'authentification SASL du serveur SMTP Postfix.
# postfix_smtpd_sasl_local_domain: $myhostname

# Options de sécurité SASL pour le serveur SMTP Postfix ; à partir de Postfix 2.3, la liste des fonctionnalités disponibles dépend de l'implémentation du serveur SASL qui est sélectionnée avec smtpd_sasl_type.
# postfix_smtpd_sasl_security_options: noanonymous

# Signaler le nom d'utilisateur authentifié SASL dans l'en-tête du message reçu smtpd(8).
# postfix_smtpd_sasl_authenticated_header: true

# Activer l'interopérabilité avec des clients SMTP distants qui mettent en œuvre une version obsolète de la commande AUTH (RFC 4954).
# postfix_broken_sasl_auth_clients: false

# Un fichier contenant des certificats CA (format PEM) des CA racines de confiance pour signer soit les certificats de client SMTP distants ou les certificats CA intermédiaires.
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Fichier avec le certificat RSA du serveur SMTP Postfix au format PEM.
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Fichier local avec le certificat RSA du serveur SMTP Postfix au format PEM qui doit être copié vers l'hôte cible.
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Fichier avec la clé privée RSA du serveur SMTP Postfix au format PEM.
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Fichier local avec la clé privée RSA du serveur SMTP Postfix au format PEM qui doit être copié vers l'hôte cible.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Demandez au serveur SMTP Postfix de produire des en-têtes de message Received : qui incluent des informations sur le protocole et le cipher utilisé, ainsi que le nom commun du client SMTP distant et le nom commun de l'émetteur du certificat client.
# postfix_smtpd_tls_received_header: true

# Le niveau de sécurité SMTP TLS par défaut pour le client SMTP Postfix ; lorsqu'une valeur non vide est spécifiée, cela override les paramètres obsolètes smtp_use_tls, smtp_enforce_tls et smtp_tls_enforce_peername.
# postfix_smtpd_tls_security_level: may

# Demandez à un client SMTP distant de fournir un certificat client.
# postfix_smtpd_tls_ask_ccert: true

# Activez la journalisation supplémentaire de l'activité TLS du serveur SMTP Postfix.
# postfix_smtpd_tls_loglevel: 1

# Nom du fichier contenant le cache de session TLS optionnel du serveur SMTP Postfix.
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# Un fichier contenant des certificats CA des CA racines de confiance pour signer soit les certificats de serveur SMTP distants ou les certificats CA intermédiaires.
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Fichier avec le certificat RSA du client SMTP Postfix au format PEM.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Fichier avec la clé privée RSA du client SMTP Postfix au format PEM.
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Nom du fichier contenant le cache de session TLS optionnel du client SMTP Postfix.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# La source d'entropie externe pour le générateur de nombres aléatoires pseudo-aléatoires (PRNG) tlsmgr(8) en mémoire.
# postfix_tls_random_source: dev:/dev/urandom

# Protocoles TLS acceptés par le serveur SMTP Postfix avec chiffrement TLS obligatoire.
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Protocoles TLS que le client SMTP Postfix utilisera avec chiffrement TLS obligatoire.
# postfix_smtp_tls_mandatory_protocols: TLSv1

# Le transport de livraison de courrier par défaut et la destination suivante pour la livraison finale vers les domaines répertoriés avec $virtual_mailbox_domains.
# postfix_virtual_transport: maildrop1

# Chemin optionnel d'un fichier de boîte aux lettres relatif au répertoire home d'un utilisateur local(8).
# postfix_home_mailbox: Maildir/

# La taille maximale en octets d'un message, y compris les informations sur l'enveloppe.
# postfix_message_size_limit: 10240000

# Exiger qu'un client SMTP distant se présente avec la commande HELO ou EHLO avant d'envoyer la commande MAIL ou d'autres commandes nécessitant la négociation EHLO.
# postfix_smtpd_helo_required: false

# L'unité de temps sur laquelle les taux de connexion des clients et d'autres taux sont calculés.
# postfix_anvil_rate_time_unit: 60s

# Le nombre maximal de tentatives de connexion qu'un client est autorisé à effectuer à ce service par unité de temps.
# postfix_smtpd_client_connection_rate_limit: 10

# Combien de connexions simultanées un client est autorisé à faire à ce service.
# postfix_smtpd_client_connection_count_limit: 10

# Considérer un message de bounce comme non livrable lorsque la livraison échoue avec une erreur temporaire, et que le temps dans la file d'attente a atteint la limite bounce_queue_lifetime.
# postfix_bounce_queue_lifetime: 5d

# L'emplacement des fichiers README de Postfix qui décrivent comment construire, configurer ou opérer un sous-système ou une fonctionnalité de Postfix spécifique.
# postfix_readme_directory: /usr/share/doc/postfix

# L'emplacement des fichiers HTML de Postfix qui décrivent comment construire, configurer ou opérer un sous-système ou une fonctionnalité de Postfix spécifique.
# postfix_html_directory: /usr/share/doc/postfix/html

# Vous pouvez changer le port sur lequel Postfix écoute.
# Postfix utilise `/etc/services` pour mapper les noms de service aux numéros de port comme `2525`.
# Spécifiez soit un numéro de port soit un nom de service comme `smtp`.
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: ""

Exigences

État des rôles utilisés

Les rôles suivants sont utilisés pour préparer un système. Vous pouvez préparer votre système d'une autre manière.

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

Contexte

Ce rôle fait partie de nombreux rôles compatibles. Consultez la documentation de ces rôles pour plus d'informations.

Voici un aperçu des rôles connexes : dépendances

Compatibilité

Ce rôle a été testé sur ces images de conteneur:

conteneur tags
EL 9
Debian tous
Fedora tous
Ubuntu tous

La version minimale d'Ansible requise est 2.12, des tests ont été réalisés sur :

  • La version précédente.
  • La version actuelle.
  • La version de développement.

Si vous trouvez des problèmes, veuillez les signaler sur GitHub.

Licence

Apache-2.0.

Informations sur l'auteur

robertdebock

Veuillez envisager de me soutenir.

À propos du projet

Install and configure postfix on your system.

Installer
ansible-galaxy install robertdebock.postfix
Licence
apache-2.0
Téléchargements
145k
Propriétaire
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.