postfix
Ansible роль postfix
Установите и настройте postfix на вашей системе.
GitHub | GitLab | Загрузки | Версия |
---|---|---|---|
Пример 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: ""
Требования
- Упакованные пакеты, указанные в requirements.txt.
Состояние используемых ролей
Следующие роли используются для подготовки системы. Вы можете подготовить вашу систему другим способом.
Требование | GitHub | GitLab |
---|---|---|
robertdebock.bootstrap | ||
robertdebock.core_dependencies |
Контекст
Эта роль является частью многих совместимых ролей. Ознакомьтесь с документацией этих ролей для получения дополнительной информации.
Вот обзор связанных ролей:
Совместимость
Эта роль была протестирована на следующих образах контейнеров:
контейнер | теги |
---|---|
EL | 9 |
Debian | все |
Fedora | все |
Ubuntu | все |
Минимальная необходимая версия Ansible — 2.12, тесты проводились на:
- Предыдущей версии.
- Текущей версии.
- Версии разработки.
Если вы найдете проблемы, пожалуйста, сообщите о них в GitHub.
Лицензия
Информация об авторе
Пожалуйста, рассмотрите возможность поддержки меня.
Install and configure postfix on your system.
ansible-galaxy install robertdebock/ansible-role-postfix