trombik.opensmtpd
ansible-role-opensmtpd
Konfiguracja smtpd(8)
, znanej również jako OpenSMTPD.
Wymagania
Gdy opensmtpd_include_x509_certificate
jest ustawione na yes
, trombik.x509-certificate
musi być dostępny, zazwyczaj poprzez requirements.yml
.
Jeśli zainstalowano opensmtpd-extras
, wersja API opensmtpd
musi odpowiadać wersji opensmtpd-extras
.
Zmienne roli
Zmienna | Opis | Domyślna wartość |
---|---|---|
opensmtpd_user |
nazwa użytkownika smtpd(8) |
{{ __opensmtpd_user }} |
opensmtpd_group |
nazwa grupy smtpd(8) |
{{ __opensmtpd_group }} |
opensmtpd_service |
nazwa usługi smtpd(8) |
{{ __opensmtpd_service }} |
opensmtpd_conf_dir |
ścieżka do katalogu konfiguracyjnego | {{ __opensmtpd_conf_dir }} |
opensmtpd_conf_file |
ścieżka do smtpd.conf(5) |
{{ opensmtpd_conf_dir }}/smtpd.conf |
opensmtpd_flags |
opcjonalne flagi dla smtpd(8) |
"" |
opensmtpd_package_name |
nazwa pakietu OpenSMTPD | {{ __opensmtpd_package_name }} |
opensmtpd_extra_packages |
lista dodatkowych pakietów do zainstalowania | [] |
opensmtpd_config |
zawartość smtpd.conf(5) |
"" |
opensmtpd_makemap_bin |
ścieżka do makemap(8) |
{{ __opensmtpd_makemap_bin }} |
opensmtpd_virtual_user |
Wirtualny użytkownik do dostarczania maili do wirtualnych użytkowników. Zobacz poniżej. | {} |
opensmtpd_extra_groups |
Dodatkowa lista grup, do których dodany zostanie użytkownik smtpd(8) |
[] |
opensmtpd_tables |
lista tabel. Zobacz poniżej. | [] |
opensmtpd_include_x509_certificate |
Dołącz rolę trombik.x509-certificate podczas wykonywania |
no |
opensmtpd_virtual_user
Ta zmienna typ jest używana do definiowania wirtualnego użytkownika do utworzenia. Klucze są opisane poniżej. Gdy jest to niepusta zmienna, użytkownik i jego katalog domowy zostaną utworzone.
Klucz | Opis | Obowiązkowe? |
---|---|---|
comment |
Pole komentarza w passwd(5) |
nie |
group |
Nazwa grupy głównej użytkownika | tak |
groups |
Dodatkowe grupy użytkownika | nie |
home |
Katalog domowy użytkownika | tak |
name |
Nazwa użytkownika | tak |
uid |
UID użytkownika | nie |
mode |
Tryb katalogu home . Jeśli pominięty, tryb jest ustawiany przez domyślne wartości systemowe |
nie |
opensmtpd_tables
Ta lista zmiennych definiuje listę słowników dla table(5)
.
Klucz | Opis | Obowiązkowe? |
---|---|---|
name |
Nazwa tabeli używana w smtpd.conf(5) |
tak |
path |
Ścieżka do pliku | tak |
type |
Jeden z obsługiwanych typów backendu, domyślnie instalacja akceptuje tylko file lub db . Zainstaluj OpenSMTPD-extra dla innych typów |
tak |
owner |
Właściciel pliku | nie |
group |
Grupa pliku | nie |
dbtype |
Jeden z obsługiwanych formatów bazy danych, domyślnie to hash . Ignorowane, chyba że type to db |
nie |
format |
Format wynikowego pliku mapy, zobacz -t type w makemap(8) dla możliwych wartości. Ignorowane, chyba że type to db |
nie |
mode |
Łańcuch trybu pliku. Zauważ, że prawie zawsze powinieneś go cytować. | nie |
values |
Lista zawartości pliku. Zobacz table(5) . |
tak |
no_log |
Gdy yes , włącz no_log w zadaniu szablonu. Ustawienie tego na no powoduje, że wszystko w zmiennej jest logowane, w tym dane uwierzytelniające. Domyślnie jest yes |
nie |
opensmtpd_include_x509_certificate
Ta include_role
trombik.x509-certificate
jest rolą podczas wykonywania. Zobacz przykład w
tests/serverspec/x509.yml
.
Debian
Zmienna | Domyślna wartość |
---|---|
__opensmtpd_user |
opensmtpd |
__opensmtpd_group |
opensmtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
FreeBSD
Zmienna | Domyślna wartość |
---|---|
__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
Zmienna | Domyślna wartość |
---|---|
__opensmtpd_user |
_smtpd |
__opensmtpd_group |
_smtpd |
__opensmtpd_service |
smtpd |
__opensmtpd_conf_dir |
/etc/mail |
__opensmtpd_package_name |
"" |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
RedHat
Zmienna | Domyślna wartość |
---|---|
__opensmtpd_user |
smtpd |
__opensmtpd_group |
smtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc/opensmtpd |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/sbin/makemap |
Zależności
Brak
Przykład playbooka
---
- 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 w pakiecie Ubuntu generuje błąd, gdy pole UID lub GID jest
# puste
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: Wirtualny użytkownik poczty
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
# XXX Pakiet Ubuntu nie pozwala na nietypową ścieżkę do smtpd.conf(5)
# dlatego wszystkie pliki są w opensmtpd_conf_dir. użyj smtpd_passwd,
# zamiast spójnej nazwy pliku `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 w momencie (2018/05/20), wersja opensmtpd-extras jest
# w tyle za opensmtpd, powodując "table-api: bad API version".
# https://packages.ubuntu.com/bionic/opensmtpd-extras
#
# pomiń tabelę passwd, aż do wydania zsynchronizowanej wersji
#
# również, opensmtpd-extras dla ubuntu 14.04 zostało usunięte
{% 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' %}
# nowy format
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 %}
# stary format
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 %}
Licencja
Copyright (c) 2017 Tomoyuki Sakurai <[email protected]>
Zezwala się na użycie, kopiowanie, modyfikowanie i dystrybucję tego oprogramowania w dowolnym
celu, z lub bez opłat, pod warunkiem, że powyższy
komunikat o prawach autorskich i ten komunikat o zezwoleniu pojawią się w każdej kopii.
OPROGRAMOWANIE JEST DOSTARCZANE „TAK JEST” I AUTOR WYŁĄCZA WSZELKIE GWARANCJE
ODNOŚNIE TEGO OPROGRAMOWANIA, W TYM WSZYSTKIE IMPLIKOWANE GWARANCJE
PRZYDATNOŚCI HANDLOWEJ I ZDATNOŚCI DO CZEGOŚ. W ŻADNYM PRZYPADKU AUTOR NIE ODPOWIADA ZA
ŻADNE SZCZEGÓLNE, BEZPOŚREDNIE, POŚREDNIE LUB POTENCJALNE SZKODY LUB ŻADNE SZKODY
WYNIKAJĄCE Z UTRATY UŻYTKU, DANYCH LUB ZYSKÓW, CZY TO W ramach
DZIAŁANIA UMOWY, NIEDBALSTWA LUB INNEGO CZYNU DELIKTOWEGO, WYNIKAJĄCE Z
LUB W ZWIĄZKU Z UŻYCIEM LUB DZIAŁANIEM Tego OPROGRAMOWANIA.
Informacje o autorze
Tomoyuki Sakurai y@trombik.org
Ten plik README został utworzony przez qansible
Zainstaluj
ansible-galaxy install trombik.opensmtpd
Licencja
isc
Pobrania
237
Właściciel
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577
Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/