trombik.opensmtpd
ansible-role-opensmtpd
Konfigurieren von smtpd(8)
, auch bekannt als OpenSMTPD.
Anforderungen
Wenn opensmtpd_include_x509_certificate
auf ja
gesetzt ist, muss trombik.x509-certificate
bereitgestellt werden, normalerweise über requirements.yml
.
Wenn opensmtpd-extras
installiert ist, muss die API-Version von opensmtpd
mit der von opensmtpd-extras
übereinstimmen.
Rollenvariablen
Variable | Beschreibung | Standard |
---|---|---|
opensmtpd_user |
Benutzername von smtpd(8) |
{{ __opensmtpd_user }} |
opensmtpd_group |
Gruppenname von smtpd(8) |
{{ __opensmtpd_group }} |
opensmtpd_service |
Service-Name von smtpd(8) |
{{ __opensmtpd_service }} |
opensmtpd_conf_dir |
Pfad zum Konfigurationsverzeichnis | {{ __opensmtpd_conf_dir }} |
opensmtpd_conf_file |
Pfad zur smtpd.conf(5) |
{{ opensmtpd_conf_dir }}/smtpd.conf |
opensmtpd_flags |
optionale Flags für smtpd(8) |
"" |
opensmtpd_package_name |
Paketname von OpenSMTPD | {{ __opensmtpd_package_name }} |
opensmtpd_extra_packages |
Liste zusätzlicher Pakete zur Installation | [] |
opensmtpd_config |
Inhalt von smtpd.conf(5) |
"" |
opensmtpd_makemap_bin |
Pfad zu makemap(8) |
{{ __opensmtpd_makemap_bin }} |
opensmtpd_virtual_user |
Virtueller Benutzer für die Zustellung von E-Mails an virtuelle Benutzer. Siehe unten. | {} |
opensmtpd_extra_groups |
Zusätzliche Liste von Gruppen, zu denen der smtpd(8) -Benutzer hinzugefügt wird |
[] |
opensmtpd_tables |
Liste von Tabellen. Siehe unten. | [] |
opensmtpd_include_x509_certificate |
Einbinden der trombik.x509-certificate Rolle während des Playbooks |
nein |
opensmtpd_virtual_user
Diese Dictionary-Variable definiert einen virtuellen Benutzer, der erstellt werden soll. Ihre Schlüssel werden unten erklärt. Bei einem nicht leeren Dictionary werden der Benutzer und sein Home-Verzeichnis erstellt.
Schlüssel | Beschreibung | Pflicht? |
---|---|---|
comment |
Das Kommentarfeld in passwd(5) |
nein |
group |
Der Hauptgruppenname des Benutzers | ja |
groups |
Zusätzliche Gruppen des Benutzers | nein |
home |
Home-Verzeichnis des Benutzers | ja |
name |
Name des Benutzers | ja |
uid |
UID des Benutzers | nein |
mode |
Der Modus des Home-Verzeichnisses. Wenn weggelassen, wird der Modus durch das Systemstandard gesetzt | nein |
opensmtpd_tables
Diese Listenvariable definiert eine Liste von Dictionaries für table(5)
.
Schlüssel | Beschreibung | Pflicht? |
---|---|---|
name |
Der Name der Tabelle, der in smtpd.conf(5) verwendet wird |
ja |
path |
Der Pfad zur Datei | ja |
type |
Ein unterstützter Back-End-Typ, standardmäßig akzeptiert die Installation nur file oder db . Installieren Sie OpenSMTPD-extra für andere Typen |
ja |
owner |
Besitzer der Datei | nein |
group |
Gruppe der Datei | nein |
dbtype |
Ein unterstütztes Format der Datenbank, das Standardformat ist hash . Wird ignoriert, es sei denn, type ist db |
nein |
format |
Das Format der resultierenden Map-Datei, siehe -t type in makemap(8) für mögliche Werte. Wird ignoriert, es sei denn, type ist db |
nein |
mode |
Zeichenfolge des Dateimodus der Datei. Beachten Sie, dass Sie sie fast immer in Anführungszeichen setzen sollten. | nein |
values |
Liste des Inhalts der Datei. Siehe table(5) |
ja |
no_log |
Wenn ja , aktivieren Sie no_log in der Template-Aufgabe. Wenn dies auf nein gesetzt wird, wird alles in der Variablen protokolliert, einschließlich Anmeldeinformationen. Der Standardwert ist ja |
nein |
opensmtpd_include_x509_certificate
Dieses include_role
sorgt dafür, dass die Rolle trombik.x509-certificate
während des Playbooks einbezogen wird. Siehe ein Beispiel in tests/serverspec/x509.yml
.
Debian
Variable | Standard |
---|---|
__opensmtpd_user |
opensmtpd |
__opensmtpd_group |
opensmtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
FreeBSD
Variable | Standard |
---|---|
__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
Variable | Standard |
---|---|
__opensmtpd_user |
_smtpd |
__opensmtpd_group |
_smtpd |
__opensmtpd_service |
smtpd |
__opensmtpd_conf_dir |
/etc/mail |
__opensmtpd_package_name |
"" |
__opensmtpd_makemap_bin |
/usr/sbin/makemap |
RedHat
Variable | Standard |
---|---|
__opensmtpd_user |
smtpd |
__opensmtpd_group |
smtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc/opensmtpd |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/sbin/makemap |
Abhängigkeiten
Keine
Beispiel Playbook
---
- 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 verschlüsseln PassWord
test_password: "$2b$08$LT/AdE2YSHb19d3hB27.4uXd1/Cj0qQIWc4FdfLlcuqnCUGbRu2Mq"
# XXX table_passwd im Ubuntu-Paket führt zu einem Fehler, wenn UID oder GID-Feld leer ist
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: Virtueller Mail-Benutzer
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 kein solcher Benutzer"
- "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 im Moment (2018/05/20) ist die Version von opensmtpd-extras hinter der von opensmtpd und verursacht "table-api: falsche API-Version".
# https://packages.ubuntu.com/bionic/opensmtpd-extras
#
# überspringe die passwd-Tabelle, bis die synchronisierte Version veröffentlicht wird
#
# außerdem wurde opensmtpd-extras für ubuntu 14.04 entfernt
{% else %}
table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
{% endif %}
{% endfor %}
lauschen auf {{ os_listen_on_interface[ansible_os_family] }} Port 25
{% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
# neues Format
aktion "local_mail" maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
aktion "outbound" relay
match von beliebigem Absender für die Domain <domains> aktion "local_mail"
match von src <mynetworks> aktion "outbound"
{% else %}
# altes Format
akzeptieren von jedem Absender für die Domain <domains> virtuell <virtuals> \
liefern an maildir "{{ opensmtpd_virtual_user['home'] }}/%{dest.domain}/%{dest.user}/Maildir"
akzeptieren von jedem Absender für die Domain <domains> \
liefern an mbox
{% endif %}
Lizenz
Copyright (c) 2017 Tomoyuki Sakurai <y@trombik.org>
Die Erlaubnis zur Nutzung, Vervielfältigung, Änderung und Verbreitung dieser Software für jeden Zweck, mit oder ohne Gebühr, wird hiermit erteilt, vorausgesetzt, dass der oben genannte urheberrechtliche Hinweis und dieser Erlaubnisschein in allen Kopien enthalten sind.
DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, UND DER AUTOR LEHNT ALLE GARANTIEN IM HINSICHT AUF DIESE SOFTWARE AB, EINSCHLIESSLICH ALLER IMPLIZIERTEN GARANTIEN DER MARKTFÄHIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. IN KEINEM FALL HAFTET DER AUTOR FÜR BESONDERE, DIREKTE, INDIREKTE ODER FOLGESCHÄDEN ODER FÜR BELIEBIGE SCHÄDEN, DIE AUS DEM VERLUST VON NUTZUNG, DATEN ODER GEWINNEN RESULTIEREN, UNABHÄNGIG DAVON, OB IN EINER KLAGE AUF VERTRAG, FAHRLÄSSIGKEIT ODER ANDERER RECHTSGRUNDLAGE, DIE AUS DER NUTZUNG ODER DER LEISTUNG DIESER SOFTWARE RESULTIERT.
Autoreninformationen
Tomoyuki Sakurai y@trombik.org
Dieses README wurde von qansible erstellt.
ansible-galaxy install trombik.opensmtpd