trombik.opensmtpd

ansible-role-opensmtpd

Konfiguracja smtpd(8), znanej również jako OpenSMTPD.

Wymagania

Gdy opensmtpd_include_x509_certificate jest ustawione na yes, trombik.x509-certificate musi być dostępny, zazwyczaj poprzez requirements.yml.

Jeśli zainstalowano opensmtpd-extras, wersja API opensmtpd musi odpowiadać wersji opensmtpd-extras.

Zmienne roli

Zmienna Opis Domyślna wartość
opensmtpd_user nazwa użytkownika smtpd(8) {{ __opensmtpd_user }}
opensmtpd_group nazwa grupy smtpd(8) {{ __opensmtpd_group }}
opensmtpd_service nazwa usługi smtpd(8) {{ __opensmtpd_service }}
opensmtpd_conf_dir ścieżka do katalogu konfiguracyjnego {{ __opensmtpd_conf_dir }}
opensmtpd_conf_file ścieżka do smtpd.conf(5) {{ opensmtpd_conf_dir }}/smtpd.conf
opensmtpd_flags opcjonalne flagi dla smtpd(8) ""
opensmtpd_package_name nazwa pakietu OpenSMTPD {{ __opensmtpd_package_name }}
opensmtpd_extra_packages lista dodatkowych pakietów do zainstalowania []
opensmtpd_config zawartość smtpd.conf(5) ""
opensmtpd_makemap_bin ścieżka do makemap(8) {{ __opensmtpd_makemap_bin }}
opensmtpd_virtual_user Wirtualny użytkownik do dostarczania maili do wirtualnych użytkowników. Zobacz poniżej. {}
opensmtpd_extra_groups Dodatkowa lista grup, do których dodany zostanie użytkownik smtpd(8) []
opensmtpd_tables lista tabel. Zobacz poniżej. []
opensmtpd_include_x509_certificate Dołącz rolę trombik.x509-certificate podczas wykonywania no

opensmtpd_virtual_user

Ta zmienna typ jest używana do definiowania wirtualnego użytkownika do utworzenia. Klucze są opisane poniżej. Gdy jest to niepusta zmienna, użytkownik i jego katalog domowy zostaną utworzone.

Klucz Opis Obowiązkowe?
comment Pole komentarza w passwd(5) nie
group Nazwa grupy głównej użytkownika tak
groups Dodatkowe grupy użytkownika nie
home Katalog domowy użytkownika tak
name Nazwa użytkownika tak
uid UID użytkownika nie
mode Tryb katalogu home. Jeśli pominięty, tryb jest ustawiany przez domyślne wartości systemowe nie

opensmtpd_tables

Ta lista zmiennych definiuje listę słowników dla table(5).

Klucz Opis Obowiązkowe?
name Nazwa tabeli używana w smtpd.conf(5) tak
path Ścieżka do pliku tak
type Jeden z obsługiwanych typów backendu, domyślnie instalacja akceptuje tylko file lub db. Zainstaluj OpenSMTPD-extra dla innych typów tak
owner Właściciel pliku nie
group Grupa pliku nie
dbtype Jeden z obsługiwanych formatów bazy danych, domyślnie to hash. Ignorowane, chyba że type to db nie
format Format wynikowego pliku mapy, zobacz -t type w makemap(8) dla możliwych wartości. Ignorowane, chyba że type to db nie
mode Łańcuch trybu pliku. Zauważ, że prawie zawsze powinieneś go cytować. nie
values Lista zawartości pliku. Zobacz table(5). tak
no_log Gdy yes, włącz no_log w zadaniu szablonu. Ustawienie tego na no powoduje, że wszystko w zmiennej jest logowane, w tym dane uwierzytelniające. Domyślnie jest yes nie

opensmtpd_include_x509_certificate

Ta include_role trombik.x509-certificate jest rolą podczas wykonywania. Zobacz przykład w tests/serverspec/x509.yml.

Debian

Zmienna Domyślna wartość
__opensmtpd_user opensmtpd
__opensmtpd_group opensmtpd
__opensmtpd_service opensmtpd
__opensmtpd_conf_dir /etc
__opensmtpd_package_name opensmtpd
__opensmtpd_makemap_bin /usr/sbin/makemap

FreeBSD

Zmienna Domyślna wartość
__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

Zmienna Domyślna wartość
__opensmtpd_user _smtpd
__opensmtpd_group _smtpd
__opensmtpd_service smtpd
__opensmtpd_conf_dir /etc/mail
__opensmtpd_package_name ""
__opensmtpd_makemap_bin /usr/sbin/makemap

RedHat

Zmienna Domyślna wartość
__opensmtpd_user smtpd
__opensmtpd_group smtpd
__opensmtpd_service opensmtpd
__opensmtpd_conf_dir /etc/opensmtpd
__opensmtpd_package_name opensmtpd
__opensmtpd_makemap_bin /sbin/makemap

Zależności

Brak

Przykład playbooka

---

- 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 w pakiecie Ubuntu generuje błąd, gdy pole UID lub GID jest
    # puste
    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: Wirtualny użytkownik poczty
      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
        # XXX Pakiet Ubuntu nie pozwala na nietypową ścieżkę do smtpd.conf(5)
        # dlatego wszystkie pliki są w opensmtpd_conf_dir. użyj smtpd_passwd,
        # zamiast spójnej nazwy pliku `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 w momencie (2018/05/20), wersja opensmtpd-extras jest
      # w tyle za opensmtpd, powodując "table-api: bad API version".
      # https://packages.ubuntu.com/bionic/opensmtpd-extras
      #
      # pomiń tabelę passwd, aż do wydania zsynchronizowanej wersji
      #
      # również, opensmtpd-extras dla ubuntu 14.04 zostało usunięte
      {% else %}
      table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
      {% endif %}

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

      {% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
      # nowy 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 %}
      # stary 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 %}

Licencja

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

Zezwala się na użycie, kopiowanie, modyfikowanie i dystrybucję tego oprogramowania w dowolnym
celu, z lub bez opłat, pod warunkiem, że powyższy
komunikat o prawach autorskich i ten komunikat o zezwoleniu pojawią się w każdej kopii.

OPROGRAMOWANIE JEST DOSTARCZANE „TAK JEST” I AUTOR WYŁĄCZA WSZELKIE GWARANCJE
ODNOŚNIE TEGO OPROGRAMOWANIA, W TYM WSZYSTKIE IMPLIKOWANE GWARANCJE
PRZYDATNOŚCI HANDLOWEJ I ZDATNOŚCI DO CZEGOŚ. W ŻADNYM PRZYPADKU AUTOR NIE ODPOWIADA ZA
ŻADNE SZCZEGÓLNE, BEZPOŚREDNIE, POŚREDNIE LUB POTENCJALNE SZKODY LUB ŻADNE SZKODY
WYNIKAJĄCE Z UTRATY UŻYTKU, DANYCH LUB ZYSKÓW, CZY TO W ramach
DZIAŁANIA UMOWY, NIEDBALSTWA LUB INNEGO CZYNU DELIKTOWEGO, WYNIKAJĄCE Z
LUB W ZWIĄZKU Z UŻYCIEM LUB DZIAŁANIEM Tego OPROGRAMOWANIA.

Informacje o autorze

Tomoyuki Sakurai y@trombik.org

Ten plik README został utworzony przez qansible

O projekcie

Configures OpenSMTPD

Zainstaluj
ansible-galaxy install trombik.opensmtpd
Licencja
isc
Pobrania
237
Właściciel
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/