opensmtpd
ansible-role-opensmtpd
Настройка smtpd(8)
, также известного как OpenSMTPD.
Требования
Когда opensmtpd_include_x509_certificate
равно yes
, необходимо иметь доступный trombik.x509-certificate
, обычно через requirements.yml
.
Если установлен opensmtpd-extras
, версия API opensmtpd
должна совпадать с версией opensmtpd-extras
.
Переменные роли
Переменная | Описание | По умолчанию |
---|---|---|
opensmtpd_user |
имя пользователя smtpd(8) |
{{ __opensmtpd_user }} |
opensmtpd_group |
имя группы smtpd(8) |
{{ __opensmtpd_group }} |
opensmtpd_service |
имя службы smtpd(8) |
{{ __opensmtpd_service }} |
opensmtpd_conf_dir |
путь к директории конфигурации | {{ __opensmtpd_conf_dir }} |
opensmtpd_conf_file |
путь к smtpd.conf(5) |
{{ opensmtpd_conf_dir }}/smtpd.conf |
opensmtpd_flags |
дополнительные флаги для smtpd(8) |
"" |
opensmtpd_package_name |
название пакета OpenSMTPD | {{ __opensmtpd_package_name }} |
opensmtpd_extra_packages |
список дополнительных пакетов для установки | [] |
opensmtpd_config |
содержимое smtpd.conf(5) |
"" |
opensmtpd_makemap_bin |
путь к makemap(8) |
{{ __opensmtpd_makemap_bin }} |
opensmtpd_virtual_user |
Виртуальный пользователь для доставки писем виртуальным пользователям. Смотрите ниже. | {} |
opensmtpd_extra_groups |
Дополнительный список групп, в которые следует добавить пользователя smtpd(8) |
[] |
opensmtpd_tables |
список таблиц. Смотрите ниже. | [] |
opensmtpd_include_x509_certificate |
Включить роль trombik.x509-certificate во время выполнения |
no |
opensmtpd_virtual_user
Эта переменная в виде словаря определяет виртуального пользователя, которого нужно создать. Его ключи объясняются ниже. Если это непустой словарь, пользователь и его домашняя директория создаются.
Ключ | Описание | Обязательно? |
---|---|---|
comment |
Поле комментария в passwd(5) |
нет |
group |
Основное имя группы пользователя | да |
groups |
Дополнительные группы пользователя | нет |
home |
домашняя директория пользователя | да |
name |
имя пользователя | да |
uid |
UID пользователя | нет |
mode |
Режим домашней директории. Если пропущено, режим устанавливается по умолчанию | нет |
opensmtpd_tables
Эта переменная в виде списка определяет список словарей для table(5)
.
Ключ | Описание | Обязательно? |
---|---|---|
name |
Имя таблицы, используемой в smtpd.conf(5) |
да |
path |
Путь к файлу | да |
type |
Один из поддерживаемых типов бэкенда, по умолчанию установка принимает только file или db . Установите OpenSMTPD-extra для других типов. |
да |
owner |
Владельцем файла | нет |
group |
Группа файла | нет |
dbtype |
Один из поддерживаемых форматов базы данных, по умолчанию - hash . Игнорируется, если type равен db |
нет |
format |
Формат результирующего файла карты, смотрите -t type в makemap(8) для возможных значений. Игнорируется, если type равен db |
нет |
mode |
Строка режима файла. Обратите внимание, что вы почти всегда должны заключать это в кавычки. | нет |
values |
Список содержимого файла. Смотрите table(5) . |
да |
no_log |
Когда yes , включает no_log в задаче шаблона. Установив это значение в no , все переменные будут записаны, включая учетные данные. По умолчанию yes |
нет |
opensmtpd_include_x509_certificate
Эта include_role
trombik.x509-certificate
используется во время выполнения. Смотрите пример в
tests/serverspec/x509.yml
.
Debian
Переменная | По умолчанию |
---|---|
__opensmtpd_user |
opensmtpd |
__opensmtpd_group |
opensmtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
FreeBSD
Переменная | По умолчанию |
---|---|
__opensmtpd_user |
_smtpd |
__opensmtpd_group |
_smtpd |
__opensmtpd_service |
smtpd |
__opensmtpd_conf_dir |
/usr/local/etc/mail |
__opensmtpd_package_name |
mail/opensmtpd |
__opensmtpd_makemap_bin |
/usr/local/libexec/opensmtpd/makemap |
OpenBSD
Переменная | По умолчанию |
---|---|
__opensmtpd_user |
_smtpd |
__opensmtpd_group |
_smtpd |
__opensmtpd_service |
smtpd |
__opensmtpd_conf_dir |
/etc/mail |
__opensmtpd_package_name |
"" |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
RedHat
Переменная | По умолчанию |
---|---|
__opensmtpd_user |
smtpd |
__opensmtpd_group |
smtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc/opensmtpd |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/sbin/makemap |
Зависимости
Нет
Пример плейбука
---
- hosts: localhost
roles:
- name: trombik.redhat_repo
when: ansible_os_family == 'RedHat'
- role: trombik.freebsd_pkg_repo
when:
- ansible_os_family == 'FreeBSD'
- role: ansible-role-opensmtpd
vars:
os_default_group:
FreeBSD: wheel
OpenBSD: wheel
Debian: root
RedHat: root
freebsd_pkg_repo:
FreeBSD:
enabled: "false"
state: present
FreeBSD_latest:
enabled: "true"
state: present
url: pkg+https://pkg.FreeBSD.org/${ABI}/latest
mirror_type: srv
signature_type: fingerprints
fingerprints: /usr/share/keys/pkg
priority: 100
redhat_repo:
epel:
mirrorlist: "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-{{ ansible_distribution_major_version }}&arch={{ ansible_architecture }}"
gpgcheck: yes
enabled: yes
test_user: [email protected]
# smtpctl encrypt PassWord
test_password: "$2b$08$LT/AdE2YSHb19d3hB27.4uXd1/Cj0qQIWc4FdfLlcuqnCUGbRu2Mq"
# XXX table_passwd в пакете Ubuntu вызывает ошибку, когда UID или GID поле пустое
os_passwd_postfix:
FreeBSD: ":::::"
OpenBSD: ":::::"
Debian: ":12345:12345:::"
RedHat: ":12345:12345:::"
passwd_postfix: "{{ os_passwd_postfix[ansible_os_family] }}"
os_opensmtpd_extra_packages:
FreeBSD:
- opensmtpd-extras-table-passwd
OpenBSD:
- opensmtpd-extras
Debian: []
RedHat: []
opensmtpd_extra_packages: "{{ os_opensmtpd_extra_packages[ansible_os_family] }}"
os_opensmtpd_extra_groups:
FreeBSD:
- nobody
OpenBSD:
- nobody
Debian:
- games
RedHat:
- games
opensmtpd_extra_groups: "{{ os_opensmtpd_extra_groups[ansible_os_family] }}"
opensmtpd_virtual_user:
name: vmail
group: vmail
home: /var/vmail
comment: Виртуальный почтовый пользователь
mode: "0755"
opensmtpd_tables:
- name: aliases
path: "{{ opensmtpd_conf_dir }}/aliases"
type: file
format: aliases
mode: "644"
no_log: no
values:
- "MAILER-DAEMON: postmaster"
- "postmaster: root"
- "daemon: root"
- "ftp-bugs: root"
- "operator: root"
- "www: root"
- "foo: error:500 no such user"
- "bar: | cat - >/dev/null"
- name: secrets
path: "{{ opensmtpd_conf_dir }}/secrets"
type: file
owner: root
group: "{{ opensmtpd_group }}"
mode: "0640"
no_log: no
values:
- "{{ test_user }} {{ test_password }}"
- name: passwd
path: "{{ opensmtpd_conf_dir }}/smtpd_passwd"
type: passwd
owner: root
group: "{{ opensmtpd_group }}"
mode: "0640"
no_log: no
values:
- "{{ test_user }}:{{ test_password }}{{ passwd_postfix }}"
- name: domains
path: "{{ opensmtpd_conf_dir }}/domains"
type: file
owner: root
group: "{{ os_default_group[ansible_os_family] }}"
mode: "0644"
no_log: no
values:
- example.org
- example.net
- name: virtuals
path: "{{ opensmtpd_conf_dir }}/virtuals"
type: db
dbtype: hash
format: aliases
owner: root
group: vmail
mode: "0444"
no_log: no
values:
- [email protected] [email protected]
- [email protected] [email protected]
- [email protected] {{ opensmtpd_virtual_user.name }}
- [email protected] [email protected]
- [email protected] [email protected]
- [email protected] {{ opensmtpd_virtual_user.name }}
- name: mynetworks
path: "{{ opensmtpd_conf_dir }}/mynetworks"
type: db
format: set
no_log: no
values:
- 192.168.21.0/24
opensmtpd_flags: -v
os_listen_on_interface:
FreeBSD: lo0
OpenBSD: lo0
Debian: lo
RedHat: lo
opensmtpd_config: |
{% for list in opensmtpd_tables %}
{% if list.type == 'passwd' and (ansible_os_family == 'Debian' or ansible_os_family == 'RedHat') %}
# XXX на данный момент (2018/05/20), версия opensmtpd-extras
# отстает от opensmtpd, вызывая "table-api: bad API version".
# https://packages.ubuntu.com/bionic/opensmtpd-extras
#
# пропустите таблицу passwd, пока не выйдет синхронизированная версия
#
# также opensmtpd-extras для ubuntu 14.04 были удалены
{% else %}
table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
{% endif %}
{% endfor %}
listen on {{ os_listen_on_interface[ansible_os_family] }} port 25
{% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
# новый формат
action "local_mail" maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
action "outbound" relay
match from any for domain <domains> action "local_mail"
match from src <mynetworks> action "outbound"
{% else %}
# старый формат
accept from any for domain <domains> virtual <virtuals> \
deliver to maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
accept from any for domain <domains> \
deliver to mbox
{% endif %}
Лицензия
Copyright (c) 2017 Tomoyuki Sakurai <[email protected]>
Разрешение на использование, копирование, изменение и распространение этого программного обеспечения для любой цели с или без оплаты настоящим предоставляется, при условии, что вышеуказанное уведомление об авторских правах и это разрешение появляются во всех копиях.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ" И АВТОР ОТКАЗЫВАЕТСЯ ОТ ВСЕХ ГАРАНТИЙ
С ОТНОШЕНИЕМ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВКЛЮЧАЯ ВСЕ IMPLIED WARRANTIES О
ТОРГОВОЙ ПРИГОДНОСТИ И УДОВЛЕТВОРИТЕЛЬНОСТИ. НИКАКИМ ОБРАЗОМ АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА
ЛЮБЫЕ ОСОБЫЕ, ПРЯМЫЕ, КОСВЕННЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ ИЛИ ЛЮБЫЕ УБЫТКИ
В РЕЗУЛЬТАТЕ ПОТЕРИ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ, НЕЗАВИСИМО ОТ ТОГО, ЯВЛЯЮТСЯ ЛИ ОНИ
РЕЗУЛЬТАТОМ ДЕЙСТВИЙ ПО КОНТРАКТУ, НЕОСТОРОЖНОСТИ ИЛИ ИНОГО НАНОСИМОГО УЩЕРБА, ВЫТЕКАЮЩИМИ ИЗ
ИЛИ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ РАБОТОЙ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Информация об авторе
Tomoyuki Sakurai y@trombik.org
Этот README был создан с помощью qansible
Установить
ansible-galaxy install trombik/ansible-role-opensmtpd
Лицензия
isc
Загрузки
206
Владелец
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577
Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/