trombik.opensmtpd
ansible-role-opensmtpd
Configurer smtpd(8)
, également connu sous le nom de OpenSMTPD.
Exigences
Lorsque opensmtpd_include_x509_certificate
est oui
, trombik.x509-certificate
doit être disponible, généralement via requirements.yml
.
Si opensmtpd-extras
est installé, la version API de opensmtpd
doit correspondre à celle de opensmtpd-extras
.
Variables du rôle
Variable | Description | Par défaut |
---|---|---|
opensmtpd_user |
nom de l'utilisateur de smtpd(8) |
{{ __opensmtpd_user }} |
opensmtpd_group |
nom du groupe de smtpd(8) |
{{ __opensmtpd_group }} |
opensmtpd_service |
nom du service de smtpd(8) |
{{ __opensmtpd_service }} |
opensmtpd_conf_dir |
chemin vers le répertoire de configuration | {{ __opensmtpd_conf_dir }} |
opensmtpd_conf_file |
chemin vers smtpd.conf(5) |
{{ opensmtpd_conf_dir }}/smtpd.conf |
opensmtpd_flags |
options facultatives pour smtpd(8) |
"" |
opensmtpd_package_name |
nom du paquet OpenSMTPD | {{ __opensmtpd_package_name }} |
opensmtpd_extra_packages |
liste des paquets supplémentaires à installer | [] |
opensmtpd_config |
contenu de smtpd.conf(5) |
"" |
opensmtpd_makemap_bin |
chemin vers makemap(8) |
{{ __opensmtpd_makemap_bin }} |
opensmtpd_virtual_user |
Utilisateur virtuel pour la livraison de courriers. Voir ci-dessous. | {} |
opensmtpd_extra_groups |
Liste supplémentaire de groupes à ajouter à l'utilisateur smtpd(8) |
[] |
opensmtpd_tables |
liste des tables. Voir ci-dessous. | [] |
opensmtpd_include_x509_certificate |
Inclure le rôle trombik.x509-certificate pendant le jeu |
non |
opensmtpd_virtual_user
Cette variable dictionnaire définit un utilisateur virtuel à créer. Ses clés sont expliquées ci-dessous. Lorsqu'il s'agit d'un dictionnaire non vide, l'utilisateur et son répertoire personnel sont créés.
Clé | Description | Obligatoire ? |
---|---|---|
comment |
Le champ commentaire dans passwd(5) |
non |
group |
Le nom du groupe principal de l'utilisateur | oui |
groups |
Groupes supplémentaires de l'utilisateur | non |
home |
Répertoire personnel de l'utilisateur | oui |
name |
Nom de l'utilisateur | oui |
uid |
UID de l'utilisateur | non |
mode |
Le mode du répertoire home . S'il est omis, le mode est défini par la valeur par défaut du système |
non |
opensmtpd_tables
Cette variable liste définit une liste de dictionnaires de table(5)
.
Clé | Description | Obligatoire ? |
---|---|---|
name |
Le nom de la table utilisée dans smtpd.conf(5) |
oui |
path |
Le chemin vers le fichier | oui |
type |
Un des types de back-end pris en charge, l'installation par défaut n'accepte que file ou db . Installez OpenSMTPD-extra pour d'autres types |
oui |
owner |
Propriétaire du fichier | non |
group |
Groupe du fichier | non |
dbtype |
Un des formats pris en charge de la base de données, le par défaut est hash . Ignoré à moins que type soit db |
non |
format |
Le format du fichier de carte résultant, voir -t type dans makemap(8) pour les valeurs possibles. Ignoré à moins que type soit db |
non |
mode |
Chaîne du mode de fichier du fichier. Notez que vous devez presque toujours l'encadrer. | non |
values |
Liste de contenu du fichier. Voir table(5) . |
oui |
no_log |
Lorsque oui , active no_log dans la tâche de modèle. Le fait de définir cela sur non entraîne tout dans la variable journalisée, y compris les identifiants. La valeur par défaut est oui |
non |
opensmtpd_include_x509_certificate
Cela inclut le rôle
trombik.x509-certificate
durant le jeu. Voir un exemple dans
tests/serverspec/x509.yml
.
Debian
Variable | Par défaut |
---|---|
__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 | Par défaut |
---|---|
__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 | Par défaut |
---|---|
__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 | Par défaut |
---|---|
__opensmtpd_user |
smtpd |
__opensmtpd_group |
smtpd |
__opensmtpd_service |
opensmtpd |
__opensmtpd_conf_dir |
/etc/opensmtpd |
__opensmtpd_package_name |
opensmtpd |
__opensmtpd_makemap_bin |
/sbin/makemap |
Dépendances
Aucune
Exemple de 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 encrypt PassWord
test_password: "$2b$08$LT/AdE2YSHb19d3hB27.4uXd1/Cj0qQIWc4FdfLlcuqnCUGbRu2Mq"
# XXX table_passwd dans le paquet Ubuntu génère une erreur lors de l'utilisation d'un champ UID ou GID vide
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: Utilisateur de courrier virtuel
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 actuellement (2018/05/20), la version de opensmtpd-extras est
# en retard par rapport à opensmtpd, provoquant "table-api: mauvaise version API".
#
# sautez la table passwd jusqu'à ce qu'une version synchronisée soit publiée
#
# de plus, opensmtpd-extras pour ubuntu 14.04 a été supprimé
{% else %}
table {{ list.name }} {{ list.type }}:{{ list.path }}{% if list['type'] == 'db' %}.db{% endif %}
{% endif %}
{% endfor %}
listen sur {{ os_listen_on_interface[ansible_os_family] }} port 25
{% if ansible_os_family == 'OpenBSD' or ansible_os_family == 'FreeBSD' %}
# nouveau 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 %}
# ancien 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 %}
Licence
Copyright (c) 2017 Tomoyuki Sakurai <[email protected]>
La permission d'utiliser, de copier, de modifier et de distribuer ce logiciel pour toute
finalité, avec ou sans frais, est accordée, à condition que l'avis de copyright ci-dessus et cet avis de permission apparaissent dans toutes les copies.
LE LOGICIEL EST FOURNI "EN L'ÉTAT" ET L'AUTEUR REJETTE TOUTE GARANTIE
RELATIVE À CE LOGICIEL, Y COMPRIS TOUTES LES GARANTIES IMPLICITES DE
COMMERCIALISATION ET D'ADÉQUATION À UN USAGE PARTICULIER. EN AUCUN CAS L'AUTEUR NE PEUT ÊTRE TENUE RESPONSABLE DE TOUS DOMMAGES SPÉCIAUX, DIRECTS, INDIRECTS OU CONSÉCUTIFS OU DE TOUS DOMMAGES
QUELS QU'ILS SOIENT RÉSULTANT DE LA PERTE D'UTILISATION, DE DONNÉES OU DE BÉNÉFICES, QUE CE SOIT DANS UNE ACTION DE CONTRAT, DE NÉGLIGENCE OU AUTRE RESPONSABILITÉ, DÉCOULANT DE OU EN RELATION AVEC L'UTILISATION OU LA PERFORMANCE DE CE LOGICIEL.
Informations sur l'auteur
Tomoyuki Sakurai y@trombik.org
Ce README a été créé par qansible
ansible-galaxy install trombik.opensmtpd