trombik.opensmtpd

ansible-role-opensmtpd

Konfigurieren von smtpd(8), auch bekannt als OpenSMTPD.

Anforderungen

Wenn opensmtpd_include_x509_certificate auf ja gesetzt ist, muss trombik.x509-certificate bereitgestellt werden, normalerweise über requirements.yml.

Wenn opensmtpd-extras installiert ist, muss die API-Version von opensmtpd mit der von opensmtpd-extras übereinstimmen.

Rollenvariablen

Variable Beschreibung Standard
opensmtpd_user Benutzername von smtpd(8) {{ __opensmtpd_user }}
opensmtpd_group Gruppenname von smtpd(8) {{ __opensmtpd_group }}
opensmtpd_service Service-Name von smtpd(8) {{ __opensmtpd_service }}
opensmtpd_conf_dir Pfad zum Konfigurationsverzeichnis {{ __opensmtpd_conf_dir }}
opensmtpd_conf_file Pfad zur smtpd.conf(5) {{ opensmtpd_conf_dir }}/smtpd.conf
opensmtpd_flags optionale Flags für smtpd(8) ""
opensmtpd_package_name Paketname von OpenSMTPD {{ __opensmtpd_package_name }}
opensmtpd_extra_packages Liste zusätzlicher Pakete zur Installation []
opensmtpd_config Inhalt von smtpd.conf(5) ""
opensmtpd_makemap_bin Pfad zu makemap(8) {{ __opensmtpd_makemap_bin }}
opensmtpd_virtual_user Virtueller Benutzer für die Zustellung von E-Mails an virtuelle Benutzer. Siehe unten. {}
opensmtpd_extra_groups Zusätzliche Liste von Gruppen, zu denen der smtpd(8)-Benutzer hinzugefügt wird []
opensmtpd_tables Liste von Tabellen. Siehe unten. []
opensmtpd_include_x509_certificate Einbinden der trombik.x509-certificate Rolle während des Playbooks nein

opensmtpd_virtual_user

Diese Dictionary-Variable definiert einen virtuellen Benutzer, der erstellt werden soll. Ihre Schlüssel werden unten erklärt. Bei einem nicht leeren Dictionary werden der Benutzer und sein Home-Verzeichnis erstellt.

Schlüssel Beschreibung Pflicht?
comment Das Kommentarfeld in passwd(5) nein
group Der Hauptgruppenname des Benutzers ja
groups Zusätzliche Gruppen des Benutzers nein
home Home-Verzeichnis des Benutzers ja
name Name des Benutzers ja
uid UID des Benutzers nein
mode Der Modus des Home-Verzeichnisses. Wenn weggelassen, wird der Modus durch das Systemstandard gesetzt nein

opensmtpd_tables

Diese Listenvariable definiert eine Liste von Dictionaries für table(5).

Schlüssel Beschreibung Pflicht?
name Der Name der Tabelle, der in smtpd.conf(5) verwendet wird ja
path Der Pfad zur Datei ja
type Ein unterstützter Back-End-Typ, standardmäßig akzeptiert die Installation nur file oder db. Installieren Sie OpenSMTPD-extra für andere Typen ja
owner Besitzer der Datei nein
group Gruppe der Datei nein
dbtype Ein unterstütztes Format der Datenbank, das Standardformat ist hash. Wird ignoriert, es sei denn, type ist db nein
format Das Format der resultierenden Map-Datei, siehe -t type in makemap(8) für mögliche Werte. Wird ignoriert, es sei denn, type ist db nein
mode Zeichenfolge des Dateimodus der Datei. Beachten Sie, dass Sie sie fast immer in Anführungszeichen setzen sollten. nein
values Liste des Inhalts der Datei. Siehe table(5) ja
no_log Wenn ja, aktivieren Sie no_log in der Template-Aufgabe. Wenn dies auf nein gesetzt wird, wird alles in der Variablen protokolliert, einschließlich Anmeldeinformationen. Der Standardwert ist ja nein

opensmtpd_include_x509_certificate

Dieses include_role sorgt dafür, dass die Rolle trombik.x509-certificate während des Playbooks einbezogen wird. Siehe ein Beispiel in tests/serverspec/x509.yml.

Debian

Variable Standard
__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 Standard
__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 Standard
__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 Standard
__opensmtpd_user smtpd
__opensmtpd_group smtpd
__opensmtpd_service opensmtpd
__opensmtpd_conf_dir /etc/opensmtpd
__opensmtpd_package_name opensmtpd
__opensmtpd_makemap_bin /sbin/makemap

Abhängigkeiten

Keine

Beispiel 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 verschlüsseln PassWord
    test_password: "$2b$08$LT/AdE2YSHb19d3hB27.4uXd1/Cj0qQIWc4FdfLlcuqnCUGbRu2Mq"
    # XXX table_passwd im Ubuntu-Paket führt zu einem Fehler, wenn UID oder GID-Feld leer ist
    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: Virtueller Mail-Benutzer
      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 kein solcher Benutzer"
          - "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 im Moment (2018/05/20) ist die Version von opensmtpd-extras hinter der von opensmtpd und verursacht "table-api: falsche API-Version".
      # https://packages.ubuntu.com/bionic/opensmtpd-extras
      #
      # überspringe die passwd-Tabelle, bis die synchronisierte Version veröffentlicht wird
      #
      # außerdem wurde opensmtpd-extras für ubuntu 14.04 entfernt
      {% else %}
      table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
      {% endif %}

      {% endfor %}
      lauschen auf {{ os_listen_on_interface[ansible_os_family] }} Port 25

      {% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
      # neues Format
      aktion "local_mail" maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
      aktion "outbound" relay
      match von beliebigem Absender für die Domain <domains> aktion "local_mail"
      match von src <mynetworks> aktion "outbound"
      {% else %}
      # altes Format
      akzeptieren von jedem Absender für die Domain <domains> virtuell <virtuals> \
        liefern an maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
      akzeptieren von jedem Absender für die Domain <domains> \
        liefern an mbox
      {% endif %}

Lizenz

Copyright (c) 2017 Tomoyuki Sakurai <y@trombik.org>

Die Erlaubnis zur Nutzung, Vervielfältigung, Änderung und Verbreitung dieser Software für jeden Zweck, mit oder ohne Gebühr, wird hiermit erteilt, vorausgesetzt, dass der oben genannte urheberrechtliche Hinweis und dieser Erlaubnisschein in allen Kopien enthalten sind.

DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, UND DER AUTOR LEHNT ALLE GARANTIEN IM HINSICHT AUF DIESE SOFTWARE AB, EINSCHLIESSLICH ALLER IMPLIZIERTEN GARANTIEN DER MARKTFÄHIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. IN KEINEM FALL HAFTET DER AUTOR FÜR BESONDERE, DIREKTE, INDIREKTE ODER FOLGESCHÄDEN ODER FÜR BELIEBIGE SCHÄDEN, DIE AUS DEM VERLUST VON NUTZUNG, DATEN ODER GEWINNEN RESULTIEREN, UNABHÄNGIG DAVON, OB IN EINER KLAGE AUF VERTRAG, FAHRLÄSSIGKEIT ODER ANDERER RECHTSGRUNDLAGE, DIE AUS DER NUTZUNG ODER DER LEISTUNG DIESER SOFTWARE RESULTIERT.

Autoreninformationen

Tomoyuki Sakurai y@trombik.org

Dieses README wurde von qansible erstellt.

Über das Projekt

Configures OpenSMTPD

Installieren
ansible-galaxy install trombik.opensmtpd
GitHub Repository
Lizenz
isc
Downloads
237
Besitzer
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/