buluma.postfix

Papel de Ansible postfix

Instala y configura postfix en tu sistema.

GitHub Versión Problemas Solicitudes de extracción Descargas
github Versión Problemas Solicitudes de Extracción Papel de Ansible

Ejemplo de Playbook

Este ejemplo se toma de molecule/default/converge.yml y se prueba en cada push, solicitud de extracción y lanzamiento.

---
- name: Converger
  hosts: all
  become: true
  gather_facts: true

  roles:
    - role: buluma.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.ejemplo.com"
      postfix_mydomain: "ejemplo.com"
      postfix_myorigin: "ejemplo.com"
      postfix_mynetworks:
        - 127.0.0.0/8
        - 192.168.0.0/16
      postfix_aliases:
        - name: root
          destination: [email protected]
      # Configuración de Ziggo: ("email-address" y "email-password" son marcadores de posición)
      postfix_relayhost: "[smtp.ziggo.nl]:587"
      postfix_smtp_sasl_auth_enable: true
      postfix_smtp_sasl_password_map: "/etc/postfix/relay_pass"
      postfix_smtp_sasl_security_options: ""
      postfix_smtp_tls_wrappermode: false
      postfix_smtp_tls_security_level: may
      postfix_smtp_sasl_password_map_content: |
        [smtp.ziggo.nl]:587 email-address:email-password

La máquina necesita estar preparada. En CI esto se hace usando molecule/default/prepare.yml:

---
- name: Preparar
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: buluma.bootstrap
    - role: buluma.core_dependencies

También puedes ver una explicación y ejemplo completo sobre cómo usar estos roles.

Variables del rol

Los valores predeterminados para las variables están establecidos en defaults/main.yml:

---
# archivo de valores predeterminados para postfix

# Estos ajustes son obligatorios en postfix.
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# Para "escuchar" en interfaces públicas, establece inet_interfaces en algo como
# "all" o el nombre de la interfaz, como "eth0".
postfix_inet_interfaces: "loopback-only"

# Habilitar IPv4, y IPv6 si se admite; si solo es IPV4, establece en ipv4
postfix_inet_protocols: all

# Establecer un banner
postfix_banner: "$myhostname ESMTP $mail_name"

# El destino le indica a Postfix qué correos aceptar.
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# Para aceptar correos de otras máquinas, establece mynetworks en algo como
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Estos ajustes cambian el papel del servidor postfix a un host de relé.
# postfix_relay_domains: "$mydestination"

# Si deseas reenviar correos a otro servidor central de relé, establece relayhost.
# usa corchetes para enviar al registro A del relayhost.
# postfix_relayhost: "[relay.ejemplo.com]"

# Establece las restricciones para recibir correos.
postfix_smtpd_recipient_restrictions:
  - permit_mynetworks
  - permit_sasl_authenticated
  - reject_unauth_destination
  - reject_invalid_hostname
  - reject_non_fqdn_hostname
  - reject_non_fqdn_sender
  - reject_non_fqdn_recipient
  - reject_unknown_sender_domain
  - reject_unknown_recipient_domain
  - reject_rbl_client sbl.spamhaus.org
  - reject_rbl_client cbl.abuseat.org
  - reject_rbl_client dul.dnsbl.sorbs.net
  - permit

postfix_smtpd_sender_restrictions:
  - reject_unknown_sender_domain

# El nivel de seguridad predeterminado de TLS SMTP para el cliente Postfix
# Valores válidos son: dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# Para habilitar spamassassin, asegúrate de que spamassassin esté instalado,
# (sugerencia: rol: buluma.spamassassin) y establece estas dos variables:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Para habilitar clamav, asegúrate de que clamav esté instalado,
# (sugerencia: rol: buluma.clamav) y establece esta variable:
# postfix_clamav: enabled

# Aquí puedes configurar alias. Típicamente redirigir `root` es un buen plan.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# Puedes configurar controles de acceso de remitente aquí.
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Puedes configurar controles de acceso de destinatarios aquí.
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Puedes deshabilitar versiones SSL/TLS aquí.
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# Puedes proporcionar una plantilla Jinja2 para transport_maps aquí
# postfix_transport_maps_template: /path/to/transport.j2

# Puedes proporcionar una plantilla Jinja2 para header_checks aquí
# postfix_header_checks_template: /path/to/header_checks.j2

# Si usar o no el servicio biff local.
# postfix_biff: true

# Con correo enviado localmente, añade la cadena ".$mydomain" a direcciones que no tienen información de ".domain"
# postfix_append_dot_mydomain: false

# Las bases de datos de alias que se utilizan para la entrega local(8)
# postfix_alias_maps: "hash:/etc/aliases"

# Un prefijo que el agente de entrega virtual(8) añade a todos los resultados de ruta de las búsquedas en la tabla $virtual_mailbox_maps.
# postfix_virtual_mailbox_base: /var/mail

# Tablas de búsqueda opcionales con todas las direcciones válidas en los dominios que coinciden con $virtual_mailbox_domains.
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix es el destino final para la lista correspondiente de dominios; el correo se entrega a través del transporte de entrega de correo $virtual_transport
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix es el destino final para la lista de dominios de alias virtuales, es decir, dominios para los cuales todas las direcciones son alias a direcciones en otros dominios locales o remotos.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Tablas de búsqueda opcionales que alias direcciones de correo específicas o dominios a otras direcciones locales o remotas.
# postix_virtual_alias_maps: "$virtual_maps"

# Tablas de búsqueda con el ID de usuario por destinatario que el agente de entrega virtual(8) usa al escribir en el buzón del destinatario.
# postfix_virtual_uid_maps: "static:2000"

# Tablas de búsqueda con el ID de grupo por destinatario para la entrega del buzón virtual(8).
# postfix_virtual_gid_maps: "static:2000"

# Habilitar autenticación SASL en el servidor SMTP de Postfix.
# postfix_smtpd_sasl_auth_enable: true

# El nombre del dominio local de autenticación SASL del servidor SMTP de Postfix.
# postfix_smtpd_sasl_local_domain: $myhostname

# Opciones de seguridad SASL del servidor SMTP de Postfix; desde Postfix 2.3, la lista de características disponibles depende de la implementación del servidor SASL seleccionada con smtpd_sasl_type.
# postfix_smtpd_sasl_security_options: noanonymous

# Reportar el nombre de usuario autenticado por SASL en el encabezado del mensaje recibido smtpd(8).
# postfix_smtpd_sasl_authenticated_header: true

# Habilitar interoperabilidad con clientes SMTP remotos que implementan una versión obsoleta del comando AUTH (RFC 4954).
# postfix_broken_sasl_auth_clients: false

# Un archivo que contiene certificados CA (formato PEM) de CAs raíz de confianza para firmar certificados de clientes SMTP remotos o certificados de CAs intermedias.
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Archivo con el certificado RSA del servidor SMTP de Postfix en formato PEM.
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Archivo local con el certificado RSA del servidor SMTP de Postfix en formato PEM que debe copiase al host objetivo.
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Archivo con la clave privada RSA del servidor SMTP de Postfix en formato PEM.
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Archivo local con la clave privada RSA del servidor SMTP de Postfix en formato PEM que debe copiase al host objetivo.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Solicitar que el servidor SMTP de Postfix produzca encabezados de mensajes recibidos que incluyan información sobre el protocolo y cifrado usado, así como el Nombre Común del cliente SMTP remoto y el Nombre Común del emisor del certificado de cliente.
# postfix_smtpd_tls_received_header: true

# El nivel de seguridad predeterminado de TLS SMTP para el cliente Postfix; cuando se especifica un valor no vacío, esto anula los parámetros obsoletos smtp_use_tls, smtp_enforce_tls y smtp_tls_enforce_peername.
# postfix_smtpd_tls_security_level: may

# Preguntar a un cliente SMTP remoto por un certificado de cliente.
# postfix_smtpd_tls_ask_ccert: true

# Habilitar el registro adicional del servidor SMTP de Postfix de la actividad TLS.
# postfix_smtpd_tls_loglevel: 1

# Nombre del archivo que contiene la caché de sesiones TLS opcional del servidor SMTP de Postfix.
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# Un archivo que contiene certificados CA de CAs raíz de confianza para firmar certificados de servidores SMTP remotos o certificados de CAs intermedias.
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Archivo con el certificado RSA del cliente SMTP de Postfix en formato PEM.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Archivo con la clave privada RSA del cliente SMTP de Postfix en formato PEM.
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Nombre del archivo que contiene la caché de sesiones TLS opcional del cliente SMTP de Postfix.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# La fuente externa de entropía para el grupo de generadores de números pseudo aleatorios (PRNG) tlsmgr(8) en memoria.
# postfix_tls_random_source: dev:/dev/urandom

# Protocolos TLS aceptados por el servidor SMTP de Postfix con cifrado TLS obligatorio.
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Protocolos TLS que el cliente SMTP de Postfix utilizará con cifrado TLS obligatorio.
# postfix_smtp_tls_mandatory_protocols: TLSv1

# El transporte de entrega de correo predeterminado y el destino siguiente para la entrega final a los dominios listados en $virtual_mailbox_domains.
# postfix_virtual_transport: maildrop1

# Ruta opcional de un archivo de buzón relativo al directorio personal de un usuario local(8).
# postfix_home_mailbox: Maildir/

# El tamaño máximo en bytes de un mensaje, incluida la información del sobre.
# postfix_message_size_limit: 10240000

# Requerir que un cliente SMTP remoto se presente con el comando HELO o EHLO antes de enviar el comando MAIL u otros comandos que requieran negociación EHLO.
# postfix_smtpd_helo_required: false

# La unidad de tiempo sobre la cual se calculan las tasas de conexión de clientes y otras tasas.
# postfix_anvil_rate_time_unit: 60s

# El número máximo de intentos de conexión que se permite a cualquier cliente hacer a este servicio por unidad de tiempo.
# postfix_smtpd_client_connection_rate_limit: 10

# Cuántas conexiones simultáneas se permite a cualquier cliente hacer a este servicio.
# postfix_smtpd_client_connection_count_limit: 10

# Considerar un mensaje de rebote como no entregable, cuando la entrega falla con un error temporal, y el tiempo en la cola ha alcanzado el límite bounce_queue_lifetime.
# postfix_bounce_queue_lifetime: 5d

# La ubicación de los archivos README de Postfix que describen cómo construir, configurar o operar un subsistema o característica específica de Postfix.
# postfix_readme_directory: /usr/share/doc/postfix

# La ubicación de los archivos HTML de Postfix que describen cómo construir, configurar o operar un subsistema o característica específica de Postfix.
# postfix_html_directory: /usr/share/doc/postfix/html

# Puedes cambiar el puerto donde Postfix escucha.
# Postfix usó `/etc/services` para mapear nombres de servicio a números de puerto como `2525`.
# Así que especifica un número de puerto o un nombre de servicio como `smtp`.
postfix_smtp_listen_port: smtp

postfix_smtp_sasl_auth_enable: false
postfix_smtp_sasl_password_map: ""
postfix_smtp_sasl_security_options: ""
postfix_smtp_tls_wrappermode: false
postfix_smtp_sasl_password_map_content: ""

Requisitos

Estado de los roles utilizados

Los siguientes roles son utilizados para preparar un sistema. Puedes preparar tu sistema de otra manera.

Requisito GitHub Versión
buluma.bootstrap Ansible Molecule Versión
buluma.core_dependencies Ansible Molecule Versión

Contexto

Este rol es parte de muchos roles compatibles. Consulta la documentación de estos roles para más información.

Aquí hay una visión general de los roles relacionados:

dependencias

Compatibilidad

Este rol ha sido probado en estas imágenes de contenedor:

contenedor etiquetas
Amazon Candidato
EL 9, 8
Debian todas
Fedora todas
Ubuntu todas
Kali todas

La versión mínima de Ansible requerida es 2.12, las pruebas se han realizado con:

  • La versión anterior.
  • La versión actual.
  • La versión de desarrollo.

Si encuentras problemas, por favor, regístralos en GitHub

Registro de cambios

Historial del rol

Licencia

Apache-2.0

Información del autor

Shadow Walker

Acerca del proyecto

Install and configure postfix on your system.

Instalar
ansible-galaxy install buluma.postfix
Licencia
apache-2.0
Descargas
86.9k
Propietario
DevOps Engineer