postfix

Ansible роль postfix

Установите и настройте postfix на вашей системе.

GitHub GitLab Загрузки Версия
github gitlab downloads Version

Пример Playbook

Этот пример взят из molecule/default/converge.yml и тестируется при каждом пуше, запросе на слияние и выпуске.

---
- name: Converge
  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]
      # Настройки Ziggo: ("email-address" и "email-password" являются заполнителями)
      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

Машину нужно подготовить. В CI это делается с помощью molecule/default/prepare.yml:

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

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

Также смотрите полное объяснение и пример о том, как использовать эти роли.

Переменные роли

Значения по умолчанию для переменных установлены в defaults/main.yml:

---
# файл значений по умолчанию для postfix

# Эти настройки обязательны в postfix.
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# Чтобы "слушать" на публичных интерфейсах, установите inet_interfaces на что-то вроде
# "all" или имя интерфейса, например "eth0".
postfix_inet_interfaces: "loopback-only"

# Включите IPv4 и IPv6, если это поддерживается - если только IPV4, установите на ipv4
postfix_inet_protocols: all

# Установите баннер
postfix_banner: "$myhostname ESMTP $mail_name"

# Назначение указывает Postfix, какие письма принимать.
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# Чтобы принимать электронную почту с других машин, установите mynetworks на что-то вроде
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Эти настройки изменяют роль сервера postfix на релейного хоста.
# postfix_relay_domains: "$mydestination"

# Если вы хотите перенаправлять электронные письма на другой центральный релейный сервер, установите relayhost.
# используйте скобки, чтобы отправить на A-запись relayhost.
# postfix_relayhost: "[relay.example.com]"

# Установите ограничения на получение писем.
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

# Уровень безопасности SMTP TLS по умолчанию для клиента Postfix SMTP
# Допустимые значения: dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# Чтобы включить spamassassin, убедитесь, что он установлен,
# (подсказка: role: robertdebock.spamassassin) и установите эти две переменные:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Чтобы включить clamav, убедитесь, что он установлен,
# (подсказка: role: robertdebock.clamav) и установите эту переменную:
# postfix_clamav: enabled

# Вы можете настроить псевдонимы здесь. Обычно перенаправление `root` — это хороший план.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# Вы можете настроить управление доступом для отправителей здесь.
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Вы можете настроить управление доступом для получателей здесь.
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Вы можете отключить версии SSL/TLS здесь.
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# Вы можете предоставить шаблон transport_maps Jinja2 здесь
# postfix_transport_maps_template: /path/to/transport.j2

# Вы можете предоставить шаблон header_checks Jinja2 здесь
# postfix_header_checks_template: /path/to/header_checks.j2

# Использовать ли локальную службу biff.
# postfix_biff: true

# С локально отправленной почтой добавьте строку ".$mydomain" к адресам, у которых нет информации о ".domain"
# postfix_append_dot_mydomain: false

# Базы данных псевдонимов, используемые для локальной доставки
# postfix_alias_maps: "hash:/etc/aliases"

# Префикс, который агент доставки virtual(8) добавляет ко всем результатам поиска в таблице $virtual_mailbox_maps.
# postfix_virtual_mailbox_base: /var/mail

# Дополнительные таблицы поиска со всеми действительными адресами в доменах, соответствующих $virtual_mailbox_domains.
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix — конечный пункт назначения для указанного списка доменов; почта доставляется через транспорт почты $virtual_transport
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix — конечный пункт назначения для указанного списка доменов виртуальных алиасов, то есть для доменов, адреса которых все перенаправлены на адреса в других локальных или удаленных доменах.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Дополнительные таблицы поиска, которые сопоставляют определенные адреса электронной почты или домены с другими локальными или удаленными адресами.
# postix_virtual_alias_maps: "$virtual_maps"

# Таблицы поиска с идентификатором пользователя для каждого получателя, который агент доставки virtual(8) использует при записи в почтовый ящик получателя.
# postfix_virtual_uid_maps: "static:2000"

# Таблицы поиска с идентификатором группы для каждого получателя для доставки виртуального(8) почтового ящика.
# postfix_virtual_gid_maps: "static:2000"

# Включите аутентификацию SASL в SMTP-сервере Postfix.
# postfix_smtpd_sasl_auth_enable: true

# Имя локального домена аутентификации SASL SMTP-сервера Postfix.
# postfix_smtpd_sasl_local_domain: $myhostname

# Опции безопасности SASL сервера SMTP Postfix; начиная с Postfix 2.3 список доступных функций зависит от реализации сервера SASL, выбранной с помощью smtpd_sasl_type.
# postfix_smtpd_sasl_security_options: noanonymous

# Отreportируйте имя аутентифицированного пользователя SASL в заголовке сообщения smtpd(8) Received.
# postfix_smtpd_sasl_authenticated_header: true

# Включите взаимодействие с удаленными SMTP-клиентами, которые реализуют устаревшую версию команды AUTH (RFC 4954).
# postfix_broken_sasl_auth_clients: false

# Файл, содержащий (формат PEM) сертификаты CA корневых центров сертификации, которым доверяют для подписи сертификатов удаленных SMTP-клиентов или промежуточных CA.
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Файл с сертификатом RSA SMTP-сервера Postfix в формате PEM.
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Локальный файл с сертификатом RSA SMTP-сервера Postfix в формате PEM, который будет скопирован на целевой хост.
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Файл с закрытым ключом RSA SMTP-сервера Postfix в формате PEM.
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Локальный файл с закрытым ключом RSA SMTP-сервера Postfix в формате PEM, который будет скопирован на целевой хост.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Запросите, чтобы SMTP-сервер Postfix создавал заголовки сообщений Received:, содержащие информацию о протоколе и шифре, а также о CommonName удаленного SMTP-клиента и его сертифицирующем центре.
# postfix_smtpd_tls_received_header: true

# Уровень безопасности SMTP TLS по умолчанию для клиента Postfix SMTP; когда указано ненулевое значение, это переопределяет устаревшие параметры smtp_use_tls, smtp_enforce_tls и smtp_tls_enforce_peername.
# postfix_smtpd_tls_security_level: may

# Запросите удаленному SMTP-клиенту сертификат клиента.
# postfix_smtpd_tls_ask_ccert: true

# Включите дополнительное логирование активности TLS SMTP-сервера Postfix.
# postfix_smtpd_tls_loglevel: 1

# Имя файла, содержащего необязательное кэширование TLS-сессий SMTP-сервера Postfix.
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# Файл, содержащий сертификаты CA корневых центров сертификации, которым доверяют для подписи удаленных SMTP-серверов или промежуточных CA.
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Файл с сертификатом RSA клиента SMTP в формате PEM.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Файл с закрытым ключом RSA клиента SMTP в формате PEM.
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Имя файла, содержащего необязательное кэширование TLS-сессий клиента SMTP Postfix.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# Внешний источник энтропии для пула генератора псевдослучайных чисел (PRNG) tlsmgr(8).
# postfix_tls_random_source: dev:/dev/urandom

# Протоколы TLS, принимаемые SMTP-сервером Postfix с обязательным шифрованием TLS.
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Протоколы TLS, которые клиент SMTP Postfix будет использовать с обязательным шифрованием TLS.
# postfix_smtp_tls_mandatory_protocols: TLSv1

# Транспорт почтовой доставки по умолчанию и следующий хост для окончательной доставки доменам, перечисленным в $virtual_mailbox_domains.
# postfix_virtual_transport: maildrop1

# Необязательный путь к файлу почтового ящика относительно домашней директории пользователя local(8).
# postfix_home_mailbox: Maildir/

# Максимальный размер в байтах для сообщения, включая информацию об конверте.
# postfix_message_size_limit: 10240000

# Требуйте, чтобы удаленный SMTP-клиент представился командой HELO или EHLO перед отправкой команды MAIL или других команд, требующих согласования EHLO.
# postfix_smtpd_helo_required: false

# Единица времени, в течение которой рассчитываются коэффициенты подключения клиентов и другие коэффициенты.
# postfix_anvil_rate_time_unit: 60s

# Максимальное количество попыток подключения, которые любой клиент может сделать к этой службе за единицу времени.
# postfix_smtpd_client_connection_rate_limit: 10

# Сколько одновременных подключений любому клиенту разрешено делать к этой службе.
# postfix_smtpd_client_connection_count_limit: 10

# Рассматривайте сообщение об ошибке как недоставляемое, когда доставка не удается из-за временной ошибки, и время в очереди достигло предела bounce_queue_lifetime.
# postfix_bounce_queue_lifetime: 5d

# Местоположение файлов README Postfix, которые описывают, как построить, настроить или эксплуатировать конкретную подсистему или функцию Postfix.
# postfix_readme_directory: /usr/share/doc/postfix

# Местоположение HTML файлов Postfix, которые описывают, как построить, настроить или эксплуатировать конкретную подсистему или функцию Postfix.
# postfix_html_directory: /usr/share/doc/postfix

# Вы можете изменить порт, на котором Postfix слушает.
# Postfix использует `/etc/services` для сопоставления имен служб с номерами портов, такими как `2525`.
# Так что либо укажите номер порта или имя службы, как `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: ""

Требования

Состояние используемых ролей

Следующие роли используются для подготовки системы. Вы можете подготовить вашу систему другим способом.

Требование GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.core_dependencies Build Status GitHub Build Status GitLab

Контекст

Эта роль является частью многих совместимых ролей. Ознакомьтесь с документацией этих ролей для получения дополнительной информации.

Вот обзор связанных ролей: dependencies

Совместимость

Эта роль была протестирована на следующих образах контейнеров:

контейнер теги
EL 9
Debian все
Fedora все
Ubuntu все

Минимальная необходимая версия Ansible — 2.12, тесты проводились на:

  • Предыдущей версии.
  • Текущей версии.
  • Версии разработки.

Если вы найдете проблемы, пожалуйста, сообщите о них в GitHub.

Лицензия

Apache-2.0.

Информация об авторе

robertdebock

Пожалуйста, рассмотрите возможность поддержки меня.

О проекте

Install and configure postfix on your system.

Установить
ansible-galaxy install robertdebock/ansible-role-postfix
Лицензия
apache-2.0
Загрузки
119648
Владелец
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.