trombik.opensmtpd
ansible-role-opensmtpd
Configurar smtpd(8)
, también conocido como OpenSMTPD.
Requisitos
Cuando opensmtpd_include_x509_certificate
es sí
, 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 | sí |
groups |
Grupos adicionales del usuario | no |
home |
Directorio personal del usuario | sí |
name |
Nombre del usuario | sí |
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) |
sí |
path |
Ruta al archivo | sí |
type |
Uno de los tipos de backend soportados, la instalación predeterminada solo acepta file o db . Instala OpenSMTPD-extra para otros tipos. |
sí |
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) . |
sí |
no_log |
Cuando sí , 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 sí |
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
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/