trombik.opensmtpd

ansible-role-opensmtpd

Configurer smtpd(8), également connu sous le nom de OpenSMTPD.

Exigences

Lorsque opensmtpd_include_x509_certificate est oui, trombik.x509-certificate doit être disponible, généralement via requirements.yml.

Si opensmtpd-extras est installé, la version API de opensmtpd doit correspondre à celle de opensmtpd-extras.

Variables du rôle

Variable Description Par défaut
opensmtpd_user nom de l'utilisateur de smtpd(8) {{ __opensmtpd_user }}
opensmtpd_group nom du groupe de smtpd(8) {{ __opensmtpd_group }}
opensmtpd_service nom du service de smtpd(8) {{ __opensmtpd_service }}
opensmtpd_conf_dir chemin vers le répertoire de configuration {{ __opensmtpd_conf_dir }}
opensmtpd_conf_file chemin vers smtpd.conf(5) {{ opensmtpd_conf_dir }}/smtpd.conf
opensmtpd_flags options facultatives pour smtpd(8) ""
opensmtpd_package_name nom du paquet OpenSMTPD {{ __opensmtpd_package_name }}
opensmtpd_extra_packages liste des paquets supplémentaires à installer []
opensmtpd_config contenu de smtpd.conf(5) ""
opensmtpd_makemap_bin chemin vers makemap(8) {{ __opensmtpd_makemap_bin }}
opensmtpd_virtual_user Utilisateur virtuel pour la livraison de courriers. Voir ci-dessous. {}
opensmtpd_extra_groups Liste supplémentaire de groupes à ajouter à l'utilisateur smtpd(8) []
opensmtpd_tables liste des tables. Voir ci-dessous. []
opensmtpd_include_x509_certificate Inclure le rôle trombik.x509-certificate pendant le jeu non

opensmtpd_virtual_user

Cette variable dictionnaire définit un utilisateur virtuel à créer. Ses clés sont expliquées ci-dessous. Lorsqu'il s'agit d'un dictionnaire non vide, l'utilisateur et son répertoire personnel sont créés.

Clé Description Obligatoire ?
comment Le champ commentaire dans passwd(5) non
group Le nom du groupe principal de l'utilisateur oui
groups Groupes supplémentaires de l'utilisateur non
home Répertoire personnel de l'utilisateur oui
name Nom de l'utilisateur oui
uid UID de l'utilisateur non
mode Le mode du répertoire home. S'il est omis, le mode est défini par la valeur par défaut du système non

opensmtpd_tables

Cette variable liste définit une liste de dictionnaires de table(5).

Clé Description Obligatoire ?
name Le nom de la table utilisée dans smtpd.conf(5) oui
path Le chemin vers le fichier oui
type Un des types de back-end pris en charge, l'installation par défaut n'accepte que file ou db. Installez OpenSMTPD-extra pour d'autres types oui
owner Propriétaire du fichier non
group Groupe du fichier non
dbtype Un des formats pris en charge de la base de données, le par défaut est hash. Ignoré à moins que type soit db non
format Le format du fichier de carte résultant, voir -t type dans makemap(8) pour les valeurs possibles. Ignoré à moins que type soit db non
mode Chaîne du mode de fichier du fichier. Notez que vous devez presque toujours l'encadrer. non
values Liste de contenu du fichier. Voir table(5). oui
no_log Lorsque oui, active no_log dans la tâche de modèle. Le fait de définir cela sur non entraîne tout dans la variable journalisée, y compris les identifiants. La valeur par défaut est oui non

opensmtpd_include_x509_certificate

Cela inclut le rôle trombik.x509-certificate durant le jeu. Voir un exemple dans tests/serverspec/x509.yml.

Debian

Variable Par défaut
__opensmtpd_user opensmtpd
__opensmtpd_group opensmtpd
__opensmtpd_service opensmtpd
__opensmtpd_conf_dir /etc
__opensmtpd_package_name opensmtpd
__opensmtpd_makemap_bin /usr/sbin/makemap

FreeBSD

Variable Par défaut
__opensmtpd_user _smtpd
__opensmtpd_group _smtpd
__opensmtpd_service smtpd
__opensmtpd_conf_dir /usr/local/etc/mail
__opensmtpd_package_name mail/opensmtpd
__opensmtpd_makemap_bin /usr/local/libexec/opensmtpd/makemap

OpenBSD

Variable Par défaut
__opensmtpd_user _smtpd
__opensmtpd_group _smtpd
__opensmtpd_service smtpd
__opensmtpd_conf_dir /etc/mail
__opensmtpd_package_name ""
__opensmtpd_makemap_bin /usr/sbin/makemap

RedHat

Variable Par défaut
__opensmtpd_user smtpd
__opensmtpd_group smtpd
__opensmtpd_service opensmtpd
__opensmtpd_conf_dir /etc/opensmtpd
__opensmtpd_package_name opensmtpd
__opensmtpd_makemap_bin /sbin/makemap

Dépendances

Aucune

Exemple de Playbook

---

- hosts: localhost
  roles:
    - name: trombik.redhat_repo
      when: ansible_os_family == 'RedHat'
    - role: trombik.freebsd_pkg_repo
      when:
        - ansible_os_family == 'FreeBSD'
    - role: ansible-role-opensmtpd
  vars:
    os_default_group:
      FreeBSD: wheel
      OpenBSD: wheel
      Debian: root
      RedHat: root
    freebsd_pkg_repo:
      FreeBSD:
        enabled: "false"
        state: present
      FreeBSD_latest:
        enabled: "true"
        state: present
        url: pkg+https://pkg.FreeBSD.org/${ABI}/latest
        mirror_type: srv
        signature_type: fingerprints
        fingerprints: /usr/share/keys/pkg
        priority: 100
    redhat_repo:
      epel:
        mirrorlist: "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-{{ ansible_distribution_major_version }}&arch={{ ansible_architecture }}"
        gpgcheck: yes
        enabled: yes

    test_user: [email protected]
    # smtpctl encrypt PassWord
    test_password: "$2b$08$LT/AdE2YSHb19d3hB27.4uXd1/Cj0qQIWc4FdfLlcuqnCUGbRu2Mq"
    # XXX table_passwd dans le paquet Ubuntu génère une erreur lors de l'utilisation d'un champ UID ou GID vide
    os_passwd_postfix:
      FreeBSD: ":::::"
      OpenBSD: ":::::"
      Debian: ":12345:12345:::"
      RedHat: ":12345:12345:::"
    passwd_postfix: "{{ os_passwd_postfix[ansible_os_family] }}"

    os_opensmtpd_extra_packages:
      FreeBSD:
        - opensmtpd-extras-table-passwd
      OpenBSD:
        - opensmtpd-extras
      Debian: []
      RedHat: []
    opensmtpd_extra_packages: "{{ os_opensmtpd_extra_packages[ansible_os_family] }}"

    os_opensmtpd_extra_groups:
      FreeBSD:
        - nobody
      OpenBSD:
        - nobody
      Debian:
        - games
      RedHat:
        - games
    opensmtpd_extra_groups: "{{ os_opensmtpd_extra_groups[ansible_os_family] }}"
    opensmtpd_virtual_user:
      name: vmail
      group: vmail
      home: /var/vmail
      comment: Utilisateur de courrier virtuel
      mode: "0755"
    opensmtpd_tables:
      - name: aliases
        path: "{{ opensmtpd_conf_dir }}/aliases"
        type: file
        format: aliases
        mode: "644"
        no_log: no
        values:
          - "MAILER-DAEMON: postmaster"
          - "postmaster: root"
          - "daemon: root"
          - "ftp-bugs: root"
          - "operator: root"
          - "www:    root"
          - "foo: error:500 no such user"
          - "bar: | cat - >/dev/null"
      - name: secrets
        path: "{{ opensmtpd_conf_dir }}/secrets"
        type: file
        owner: root
        group: "{{ opensmtpd_group }}"
        mode: "0640"
        no_log: no
        values:
          - "{{ test_user }} {{ test_password }}"
      - name: passwd
        path: "{{ opensmtpd_conf_dir }}/smtpd_passwd"
        type: passwd
        owner: root
        group: "{{ opensmtpd_group }}"
        mode: "0640"
        no_log: no
        values:
          - "{{ test_user }}:{{ test_password }}{{ passwd_postfix }}"
      - name: domains
        path: "{{ opensmtpd_conf_dir }}/domains"
        type: file
        owner: root
        group: "{{ os_default_group[ansible_os_family] }}"
        mode: "0644"
        no_log: no
        values:
          - example.org
          - example.net
      - name: virtuals
        path: "{{ opensmtpd_conf_dir }}/virtuals"
        type: db
        dbtype: hash
        format: aliases
        owner: root
        group: vmail
        mode: "0444"
        no_log: no
        values:
          - [email protected] [email protected]
          - [email protected] [email protected]
          - [email protected] {{ opensmtpd_virtual_user.name }}
          - [email protected] [email protected]
          - [email protected] [email protected]
          - [email protected] {{ opensmtpd_virtual_user.name }}
      - name: mynetworks
        path: "{{ opensmtpd_conf_dir }}/mynetworks"
        type: db
        format: set
        no_log: no
        values:
          - 192.168.21.0/24

    opensmtpd_flags: -v
    os_listen_on_interface:
      FreeBSD: lo0
      OpenBSD: lo0
      Debian: lo
      RedHat: lo
    opensmtpd_config: |
      {% for list in opensmtpd_tables %}
      {% if list.type == 'passwd' and (ansible_os_family == 'Debian' or ansible_os_family == 'RedHat') %}
      # XXX actuellement (2018/05/20), la version de opensmtpd-extras est
      # en retard par rapport à opensmtpd, provoquant "table-api: mauvaise version API".
      #
      # sautez la table passwd jusqu'à ce qu'une version synchronisée soit publiée
      #
      # de plus, opensmtpd-extras pour ubuntu 14.04 a été supprimé
      {% else %}
      table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
      {% endif %}

      {% endfor %}
      listen sur {{ os_listen_on_interface[ansible_os_family] }} port 25

      {% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
      # nouveau format
      action "local_mail" maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
      action "outbound" relay
      match from any for domain <domains> action "local_mail"
      match from src <mynetworks> action "outbound"
      {% else %}
      # ancien format
      accept from any for domain <domains> virtual <virtuals> \
        deliver to maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
      accept from any for domain <domains> \
        deliver to mbox
      {% endif %}

Licence

Copyright (c) 2017 Tomoyuki Sakurai <[email protected]>

La permission d'utiliser, de copier, de modifier et de distribuer ce logiciel pour toute
finalité, avec ou sans frais, est accordée, à condition que l'avis de copyright ci-dessus et cet avis de permission apparaissent dans toutes les copies.

LE LOGICIEL EST FOURNI "EN L'ÉTAT" ET L'AUTEUR REJETTE TOUTE GARANTIE
RELATIVE À CE LOGICIEL, Y COMPRIS TOUTES LES GARANTIES IMPLICITES DE
COMMERCIALISATION ET D'ADÉQUATION À UN USAGE PARTICULIER. EN AUCUN CAS L'AUTEUR NE PEUT ÊTRE TENUE RESPONSABLE DE TOUS DOMMAGES SPÉCIAUX, DIRECTS, INDIRECTS OU CONSÉCUTIFS OU DE TOUS DOMMAGES
QUELS QU'ILS SOIENT RÉSULTANT DE LA PERTE D'UTILISATION, DE DONNÉES OU DENÉFICES, QUE CE SOIT DANS UNE ACTION DE CONTRAT, DE NÉGLIGENCE OU AUTRE RESPONSABILITÉ, DÉCOULANT DE OU EN RELATION AVEC L'UTILISATION OU LA PERFORMANCE DE CE LOGICIEL.

Informations sur l'auteur

Tomoyuki Sakurai y@trombik.org

Ce README a été créé par qansible

À propos du projet

Configures OpenSMTPD

Installer
ansible-galaxy install trombik.opensmtpd
Licence
isc
Téléchargements
237
Propriétaire
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/