robertdebock.postfix

Rol de Ansible postfix

Instalar y configurar postfix en tu sistema.

GitHub GitLab Descargas Versión
github gitlab descargas Versión

Ejemplo de Playbook

Este ejemplo es tomado de molecule/default/converge.yml y es probado en cada "push", "pull request" y lanzamiento.

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

  roles:
    - role: robertdebock.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.example.com"
      postfix_mydomain: "example.com"
      postfix_myorigin: "example.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 ser preparada. En CI esto se hace usando molecule/default/prepare.yml:

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

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.core_dependencies

También ve una explicación completa y un ejemplo sobre cómo usar estos roles.

Variables del Rol

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

---
# archivo de valores predeterminados para postfix

# Estas configuraciones son necesarias 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, configura inet_interfaces a algo como
# "all" o el nombre de la interfaz, como "eth0".
postfix_inet_interfaces: "loopback-only"

# Habilitar IPv4, e IPv6 si es soportado - si solo es IPV4 configúralo a ipv4
postfix_inet_protocols: all

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

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

# Para aceptar correos de otras máquinas, configura mis redes a algo como
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Estas configuraciones cambian el rol del servidor de postfix a un host de retransmisión.
# postfix_relay_domains: "$mydestination"

# Si deseas reenviar correos a otro servidor de retransmisión central, configura relayhost.
# utiliza corchetes para enviar al registro A del relayhost.
# postfix_relayhost: "[relay.example.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 TLS SMTP por defecto para el cliente SMTP de 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,
# (pista: rol: robertdebock.spamassassin) y configura estas dos variables:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Para habilitar clamav, asegúrate de que clamav esté instalado,
# (pista: rol: robertdebock.clamav) y configura esta variable:
# postfix_clamav: enabled

# Puedes configurar sus alias aquí. Normalmente redirigir `root` es un buen plan.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

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

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

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

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

# Puedes proporcionar una plantilla de 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 las 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 nombre 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 especificada 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 especificada de dominios de alias virtuales, es decir, dominios para los cuales todas las direcciones se asignan a direcciones en otros dominios locales o remotos.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Tablas de búsqueda opcionales que asignan 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) utiliza 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; a partir de Postfix 2.3 la lista de funciones disponibles depende de la implementación del servidor SASL que se selecciona con smtpd_sasl_type.
# postfix_smtpd_sasl_security_options: noanonymous

# Reportar el nombre de usuario autenticado por SASL en el encabezado del mensaje Received del 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 (formato PEM) certificados CA de CAs raíz confiables para firmar certificados de clientes SMTP remotos o certificados CA intermedios.
# 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 se copiará al host de destino.
# 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 se copiará al host de destino.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

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

# El nivel de seguridad TLS SMTP por defecto para el cliente SMTP de Postfix; cuando se especifica un valor no vacío, esto sobrescribe 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 registro adicional de actividad TLS del servidor SMTP de Postfix.
# postfix_smtpd_tls_loglevel: 1

# Nombre del archivo que contiene el caché de sesión 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 confiables para firmar certificados de servidores SMTP remotos o certificados CA intermedios.
# 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 el caché de sesión TLS opcional del cliente SMTP de Postfix.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# La fuente de entropía externa para el generador de números aleatorios pseudoaleatorios en memoria tlsmgr(8) (PRNG).
# 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 por defecto y la próxima hop para la entrega final a los dominios listados con $virtual_mailbox_domains.
# postfix_virtual_transport: maildrop1

# Ruta opcional de un archivo de buzón relativo al directorio home del 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 requieren negociación EHLO.
# postfix_smtpd_helo_required: false

# La unidad de tiempo sobre la cual se calculan las tasas de conexión del cliente 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 realizar a este servicio por unidad de tiempo.
# postfix_smtpd_client_connection_rate_limit: 10

# Cuántas conexiones simultáneas puede realizar cualquier cliente 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 de bounce_queue_lifetime.
# postfix_bounce_queue_lifetime: 5d

# La ubicación de los archivos de README de Postfix que describen cómo construir, configurar u 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 u operar un subsistema o característica específica de Postfix.
# postfix_html_directory: /usr/share/doc/postfix/html

# Puedes cambiar el puerto en el que Postfix escucha.
# Postfix usa `/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 usados

Los siguientes roles se utilizan para preparar un sistema. Puedes preparar tu sistema de otra manera.

Requisito GitHub GitLab
robertdebock.bootstrap Estado de Build GitHub Estado de Build GitLab
robertdebock.core_dependencies Estado de Build GitHub Estado de Build GitLab

Contexto

Este rol es parte de muchos roles compatibles. Echa un vistazo a la documentación de estos roles para más información.

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

Compatibilidad

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

contenedor etiquetas
EL 9
Debian todas
Fedora todas
Ubuntu todas

La versión mínima de Ansible requerida es 2.12 y se han realizado pruebas en:

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

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

Licencia

Apache-2.0.

Información del Autor

robertdebock

Por favor considera patrocinarme.

Acerca del proyecto

Install and configure postfix on your system.

Instalar
ansible-galaxy install robertdebock.postfix
Licencia
apache-2.0
Descargas
145k
Propietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.