postfix

Ansible роль postfix

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

GitHub Версия Проблемы Запросы на изменение Скачивания
github Version Issues PullRequests Ansible Role

Пример Playbook

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

---
- name: Свести воедино
  hosts: all
  become: true
  gather_facts: true

  roles:
    - role: buluma.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: Подготовить
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: buluma.bootstrap
    - role: buluma.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
# Допустимые значения: dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

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

# Чтобы включить clamav, убедитесь, что clamav установлен,
# (подсказка: роль: buluma.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

# Базы данных псевдонимов, которые используются для локальной доставки(8)
# 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"

# Таблицы поиска с идентификатором группы для каждого получателя для доставки в почтовый ящик virtual(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

# Сообщите имя пользователя, аутентифицированного с помощью 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:, которые содержат информацию о протоколе и шифре, а также о удаленном клиенте SMTP CommonName и издателе сертификата клиента CommonName.
# postfix_smtpd_tls_received_header: true

# Уровень безопасности SMTP TLS по умолчанию для клиента SMTP Postfix; когда указано ненулевое значение, это переопределяет устаревшие параметры 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 Postfix в формате PEM.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Файл с закрытым ключом RSA клиента SMTP Postfix в формате 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

# Необязательный путь к файлу почтового ящика относительно домашнего каталога локального(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 Версия
buluma.bootstrap Ansible Molecule Version
buluma.core_dependencies Ansible Molecule Version

Контекст

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

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

dependencies

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

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

контейнер теги
Amazon Кандидат
EL 9, 8
Debian все
Fedora все
Ubuntu все
Kali все

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

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

Если вы нашли проблемы, пожалуйста, зарегистрируйте их на GitHub

Журнал изменений

История роли

Лицензия

Apache-2.0

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

Shadow Walker

О проекте

Install and configure postfix on your system.

Установить
ansible-galaxy install buluma/ansible-role-postfix
Лицензия
apache-2.0
Загрузки
86552
Владелец
DevOps Engineer