trombik.opensmtpd

ansible-role-opensmtpd

Configurar smtpd(8), también conocido como OpenSMTPD.

Requisitos

Cuando opensmtpd_include_x509_certificate es , trombik.x509-certificate debe estar disponible, generalmente a través de requirements.yml.

Si opensmtpd-extras está instalado, la versión de la API de opensmtpd debe coincidir con la de opensmtpd-extras.

Variables del Rol

Variable Descripción Predeterminado
opensmtpd_user nombre del usuario de smtpd(8) {{ __opensmtpd_user }}
opensmtpd_group nombre del grupo de smtpd(8) {{ __opensmtpd_group }}
opensmtpd_service nombre del servicio de smtpd(8) {{ __opensmtpd_service }}
opensmtpd_conf_dir ruta al directorio de configuración {{ __opensmtpd_conf_dir }}
opensmtpd_conf_file ruta a smtpd.conf(5) {{ opensmtpd_conf_dir }}/smtpd.conf
opensmtpd_flags opciones opcionales para smtpd(8) ""
opensmtpd_package_name nombre del paquete de OpenSMTPD {{ __opensmtpd_package_name }}
opensmtpd_extra_packages lista de paquetes adicionales a instalar []
opensmtpd_config contenido de smtpd.conf(5) ""
opensmtpd_makemap_bin ruta a makemap(8) {{ __opensmtpd_makemap_bin }}
opensmtpd_virtual_user Usuario virtual para entregar correos a usuarios virtuales. Ver más abajo. {}
opensmtpd_extra_groups Lista adicional de grupos para agregar al usuario smtpd(8) []
opensmtpd_tables lista de tablas. Ver más abajo. []
opensmtpd_include_x509_certificate Incluir el rol trombik.x509-certificate durante la ejecución no

opensmtpd_virtual_user

Esta variable dicta define un usuario virtual a crear. Sus claves se explican a continuación. Cuando es un diccionario no vacío, se crea el usuario y su directorio personal.

Clave Descripción ¿Obligatorio?
comment Campo de comentario en passwd(5) no
group Nombre del grupo principal del usuario
groups Grupos adicionales del usuario no
home Directorio personal del usuario
name Nombre del usuario
uid UID del usuario no
mode Modo del directorio home. Si se omite, el modo se establece por defecto del sistema no

opensmtpd_tables

Esta variable define una lista de diccionarios de table(5).

Clave Descripción ¿Obligatorio?
name Nombre de la tabla usada en smtpd.conf(5)
path Ruta al archivo
type Uno de los tipos de backend soportados, la instalación predeterminada solo acepta file o db. Instala OpenSMTPD-extra para otros tipos.
owner Propietario del archivo no
group Grupo del archivo no
dbtype Uno de los formatos soportados de la base de datos, el predeterminado es hash. Ignorado a menos que type sea db no
format Formato del archivo de mapa resultante, ver -t type en makemap(8) para valores posibles. Ignorado a menos que type sea db no
mode Cadena de modo de archivo del archivo. Nota que deberías casi siempre colocarlo entre comillas. no
values Lista de contenido del archivo. Ver table(5).
no_log Cuando , habilita no_log en la tarea de plantilla. Establecer esto en no provoca que todo en la variable sea registrado, incluyendo credenciales. El valor por defecto es no

opensmtpd_include_x509_certificate

Esta variable incluye el rol trombik.x509-certificate durante la ejecución. Ver un ejemplo en tests/serverspec/x509.yml.

Debian

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

Dependencias

Ninguna

Ejemplo 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 en el paquete de Ubuntu lanza error cuando el campo UID o GID está vacío
    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: Usuario de correo virtual
      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 El paquete de Ubuntu no permite una ruta no predeterminada a smtpd.conf(5)
        # por lo tanto, todos los archivos están bajo opensmtpd_conf_dir. usa smtpd_passwd,
        # en lugar de nombre de archivo consistente, `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 en este momento (20/05/2018), la versión de opensmtpd-extras está
      # detrás de opensmtpd, causando "table-api: bad API version".
      # https://packages.ubuntu.com/bionic/opensmtpd-extras
      #
      # saltar tabla passwd hasta que se libere la versión sincronizada
      #
      # además, opensmtpd-extras para ubuntu 14.04 fue eliminado
      {% 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' %}
      # nuevo formato
      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 %}
      # formato antiguo
      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 %}

Licencia

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

Se otorga permiso para usar, copiar, modificar y distribuir este software para cualquier
propósito, con o sin costo, siempre que se incluya el aviso de copyright anterior y este aviso de permiso en todas las copias.

EL SOFTWARE SE PROPORCIONA "TAL CUAL" Y EL AUTOR RENUNCIA A TODAS LAS GARANTÍAS
EN RELACIÓN A ESTE SOFTWARE, INCLUYENDO TODAS LAS GARANTÍAS IMPLÍCITAS DE
COMERCIABILIDAD Y ADECUACIÓN. EN NINGÚN CASO EL AUTOR SERÁ RESPONSABLE POR CUALQUIER DAÑO ESPECIAL, DIRECTO, INDIRECTO O CONSECUENTE,
O CUALQUIER DAÑO QUE SURJA DE PERDIDA DE USO, DATOS O GANANCIAS, YA SEA EN UN
PROCEDIMIENTO DE CONTRATO, NEGLIGENCIA U OTRA ACCIÓN TORTICERA, QUE SURJA DE O EN RELACIÓN
CON EL USO O RENDIMIENTO DE ESTE SOFTWARE.

Información del Autor

Tomoyuki Sakurai y@trombik.org

Esta README fue creada por qansible

Acerca del proyecto

Configures OpenSMTPD

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