Compare commits
259 Commits
freebsd-su
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
20f210a273 | ||
|
59529847e0 | ||
|
73b855be9f | ||
|
02e4fb91be | ||
|
bc654fa992 | ||
|
57c938a029 | ||
|
584f74ba04 | ||
|
842a10935d | ||
|
f605736c90 | ||
|
34bdb08e5c | ||
|
e56f0217f4 | ||
|
e7e94731fb | ||
|
6eca6a2b4f | ||
|
c0966e961f | ||
|
b4b0893b11 | ||
|
22c49f5bd0 | ||
|
31f2983b26 | ||
|
cc7e48b82d | ||
|
19d29f2b2b | ||
|
8a67e5d60d | ||
|
147e61cee6 | ||
|
16e4950d18 | ||
|
0d68789640 | ||
|
127acdaf53 | ||
|
6a33d98d75 | ||
|
62eb687b05 | ||
|
eb01173981 | ||
|
008ac83c7a | ||
|
57011dcce2 | ||
|
5d167a403c | ||
|
61a9136253 | ||
|
6b9607634c | ||
|
fc98143c96 | ||
|
6da70d21bb | ||
|
3bd3d1c74e | ||
|
3b71be736e | ||
|
c903221ecd | ||
|
e3964b1993 | ||
|
7a2af78544 | ||
|
75f1a4810c | ||
|
eb4e6a1c8b | ||
|
1c39ee722a | ||
|
e41b6639e1 | ||
|
da21bffa44 | ||
|
dec042aa43 | ||
|
f3850814d0 | ||
|
ad2a0c24da | ||
|
4430fc0564 | ||
|
c8da52f4d8 | ||
|
76134b47c7 | ||
|
439e300aa7 | ||
|
45016a1e2b | ||
|
51ecd8606b | ||
|
c2a8f19456 | ||
|
782581b317 | ||
|
f1b6e8c5fc | ||
|
9688f36aa1 | ||
|
6f3207eb1d | ||
|
e629d88e93 | ||
|
cfed974000 | ||
|
05c8c1b2de | ||
|
f8048f9b50 | ||
|
94509cdb1a | ||
|
c11c07d6a6 | ||
|
31a3836cd6 | ||
|
4ebc15609f | ||
|
fe552b009d | ||
|
3284d38a36 | ||
|
d56006f8d2 | ||
|
37042c2b31 | ||
|
c631eca02e | ||
|
04564a7ad6 | ||
|
c876d0f400 | ||
|
4c394a76fa | ||
|
065f31ac99 | ||
|
dc986f084e | ||
|
03ad48b8a4 | ||
|
19617a0ad7 | ||
|
507f6af887 | ||
|
7556f448a3 | ||
|
c47f4abadc | ||
|
c5851e67a2 | ||
|
d65a7a36c2 | ||
|
3dd9778790 | ||
|
c60d58eb11 | ||
|
381b150b0f | ||
|
22fa184b14 | ||
|
890f3aebc6 | ||
|
c0485fb345 | ||
|
8f1167048a | ||
|
75941ed614 | ||
|
a54905f066 | ||
|
6da33dcb7b | ||
|
fb5be9504e | ||
|
f41392d450 | ||
|
42afb3454e | ||
|
98831f2159 | ||
|
fdc127c8db | ||
|
b9c4fbadaf | ||
|
cff88afa90 | ||
|
3f599c0bf9 | ||
|
780dc9d372 | ||
|
9c85788c47 | ||
|
683e35d6ba | ||
|
e3970dfc3e | ||
|
d6a0601355 | ||
|
a10af42b16 | ||
|
7584fce0af | ||
|
75fcd4af70 | ||
|
2b4b9c659c | ||
|
a6829cfc51 | ||
|
2ddd417039 | ||
|
103c17db10 | ||
|
43fb80ebfa | ||
|
466c120462 | ||
|
a28bd05b85 | ||
|
273caf9b6f | ||
|
2a61498fa4 | ||
|
474a59be65 | ||
|
b20b7ec72d | ||
|
067bcf636f | ||
|
55e366f197 | ||
|
e7856e054b | ||
|
f128f6db79 | ||
|
04003c6ee3 | ||
|
0b16a2c2cb | ||
|
06276fd743 | ||
|
954a6634dc | ||
|
42965a7640 | ||
|
b364744e40 | ||
|
f49290cc92 | ||
|
2f9c96e170 | ||
|
28348200a1 | ||
|
e61eb5a685 | ||
|
c78c421984 | ||
|
d87da4adc4 | ||
|
51b269e2c3 | ||
|
25441cb23c | ||
|
34a112faab | ||
|
b64102f884 | ||
|
04cbc57098 | ||
|
43a7353cae | ||
|
46d0f3d1d8 | ||
|
497221d1de | ||
|
d254931add | ||
|
85e8d6e4f9 | ||
|
961842a4e8 | ||
|
708b0a51d9 | ||
|
964e3ef0fa | ||
|
80cdd9d202 | ||
|
6d18d1dc93 | ||
|
29efb819fc | ||
|
8f4db70ece | ||
|
f25db2d5f3 | ||
|
1ab8692f31 | ||
|
df76c72dce | ||
|
2ece69c3c1 | ||
|
ffbe5aad13 | ||
|
70fc49122e | ||
|
90098c0cdf | ||
|
b23168e69e | ||
|
a33757a6ad | ||
|
50b9808a3b | ||
|
76168cc3e8 | ||
|
508074a286 | ||
|
87dd217ec1 | ||
|
90cae491b8 | ||
|
e707692aa0 | ||
|
0c0a228120 | ||
|
1ec88a45ca | ||
|
561d094029 | ||
|
a443d7792d | ||
|
5127bee5ca | ||
|
79df4cedee | ||
|
468c28e922 | ||
|
5f1c8302bc | ||
|
17734cb191 | ||
|
16e6f589cf | ||
|
cae0c84319 | ||
|
c9a4fc7654 | ||
|
28ebbadc88 | ||
|
bbbc2607eb | ||
|
077a6a6494 | ||
|
621504dea4 | ||
|
8996d287e5 | ||
|
d3da392f0e | ||
|
b4fbac2934 | ||
|
aa0ba507db | ||
|
0f1ad60500 | ||
|
75358e03e0 | ||
|
fb182529e4 | ||
|
e3cca62de5 | ||
|
6fa00beff2 | ||
|
b505a5d8c7 | ||
|
79768b4083 | ||
|
d89b07cd98 | ||
|
3161504bc1 | ||
|
19f5de8383 | ||
|
fbaa2dcabb | ||
|
bb6746c5b7 | ||
|
c432ae23dc | ||
|
84c64267fa | ||
|
7ea197728b | ||
|
dada652f3e | ||
|
097d149322 | ||
|
1da803467f | ||
|
8f1126039b | ||
|
f2a64549ab | ||
|
5c5c5fab72 | ||
|
ae83e2d2a8 | ||
|
fb69881dde | ||
|
6cbc1efc1b | ||
|
9281c79aec | ||
|
d2896ea148 | ||
|
99efe7e0d9 | ||
|
f5d9a0e95d | ||
|
e4b507b0b5 | ||
|
ca6b26e3ed | ||
|
4fb57c98a8 | ||
|
36f0a70813 | ||
|
a4cdd1acd2 | ||
|
4a3a94fb39 | ||
|
768cc62f66 | ||
|
1b9ac1eb4e | ||
|
44210a1fe8 | ||
|
3ded29687e | ||
|
f8cebbfe8e | ||
|
e40c589cd5 | ||
|
7ede7609f7 | ||
|
cf42ec7e8c | ||
|
fe261fc635 | ||
|
b19eb93f9c | ||
|
0c489c03df | ||
|
84605b0237 | ||
|
1087f3b85e | ||
|
62abea758a | ||
|
47ffa7d173 | ||
|
9399043497 | ||
|
b6b7ab4cca | ||
|
e9ef0aa547 | ||
|
5579ebcef6 | ||
|
b40258211e | ||
|
f30071afd2 | ||
|
16f73256b2 | ||
|
f4a10a2843 | ||
|
014c5227bc | ||
|
caee184158 | ||
|
4c7c2a269d | ||
|
ae878da8fa | ||
|
9ed99927c2 | ||
|
f514881e5a | ||
|
c60c3bab6f | ||
|
8eed254773 | ||
|
136e02a61c | ||
|
d51f60647a | ||
|
099d84ab73 | ||
|
af5e9f8862 | ||
|
f30c63f9ed | ||
|
f8514b3629 |
16
.github/workflows/commitlint.yml
vendored
Normal file
16
.github/workflows/commitlint.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
name: Commitlint
|
||||
'on': [pull_request]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: wagoid/commitlint-github-action@v1
|
134
.gitignore
vendored
Normal file
134
.gitignore
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
env/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a packager
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
.hypothesis/
|
||||
.kitchen
|
||||
.kitchen.local.yml
|
||||
kitchen.local.yml
|
||||
junit-*.xml
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# dotenv
|
||||
.env
|
||||
|
||||
# virtualenv
|
||||
.venv
|
||||
venv/
|
||||
ENV/
|
||||
|
||||
# visual studio
|
||||
.vs/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
|
||||
# Bundler
|
||||
.bundle/
|
||||
|
||||
# copied `.md` files used for conversion to `.rst` using `m2r`
|
||||
docs/*.md
|
||||
|
||||
# Vim
|
||||
*.sw?
|
||||
|
||||
## Collected when centralising formulas (check and sort)
|
||||
# `collectd-formula`
|
||||
.pytest_cache/
|
||||
/.idea/
|
||||
Dockerfile.*_*
|
||||
ignore/
|
||||
tmp/
|
||||
|
||||
# `salt-formula` -- Vagrant Specific files
|
||||
.vagrant
|
||||
top.sls
|
||||
!test/salt/pillar/top.sls
|
||||
|
||||
# `suricata-formula` -- Platform binaries
|
||||
*.rpm
|
||||
*.deb
|
212
.gitlab-ci.yml
Normal file
212
.gitlab-ci.yml
Normal file
@ -0,0 +1,212 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
###############################################################################
|
||||
# Define all YAML node anchors
|
||||
###############################################################################
|
||||
.node_anchors:
|
||||
# `only` (also used for `except` where applicable)
|
||||
only_branch_master_parent_repo: &only_branch_master_parent_repo
|
||||
- 'master@saltstack-formulas/postfix-formula'
|
||||
# `stage`
|
||||
stage_lint: &stage_lint 'lint'
|
||||
stage_release: &stage_release 'release'
|
||||
stage_test: &stage_test 'test'
|
||||
# `image`
|
||||
image_commitlint: &image_commitlint 'myii/ssf-commitlint:11'
|
||||
image_dindruby: &image_dindruby 'myii/ssf-dind-ruby:2.7.1-r3'
|
||||
image_precommit: &image_precommit
|
||||
name: 'myii/ssf-pre-commit:2.9.2'
|
||||
entrypoint: ['/bin/bash', '-c']
|
||||
image_rubocop: &image_rubocop 'pipelinecomponents/rubocop:latest'
|
||||
image_semantic-release: &image_semanticrelease 'myii/ssf-semantic-release:15.14'
|
||||
# `services`
|
||||
services_docker_dind: &services_docker_dind
|
||||
- 'docker:dind'
|
||||
# `variables`
|
||||
# https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3
|
||||
# https://bundler.io/v1.16/bundle_config.html
|
||||
variables_bundler: &variables_bundler
|
||||
BUNDLE_CACHE_PATH: '${CI_PROJECT_DIR}/.cache/bundler'
|
||||
BUNDLE_WITHOUT: 'production'
|
||||
# `cache`
|
||||
cache_bundler: &cache_bundler
|
||||
key: '${CI_JOB_STAGE}'
|
||||
paths:
|
||||
- '${BUNDLE_CACHE_PATH}'
|
||||
|
||||
###############################################################################
|
||||
# Define stages and global variables
|
||||
###############################################################################
|
||||
stages:
|
||||
- *stage_lint
|
||||
- *stage_test
|
||||
- *stage_release
|
||||
variables:
|
||||
DOCKER_DRIVER: 'overlay2'
|
||||
|
||||
###############################################################################
|
||||
# `lint` stage: `commitlint`, `pre-commit` & `rubocop` (latest, failure allowed)
|
||||
###############################################################################
|
||||
commitlint:
|
||||
stage: *stage_lint
|
||||
image: *image_commitlint
|
||||
script:
|
||||
# Add `upstream` remote to get access to `upstream/master`
|
||||
- 'git remote add upstream
|
||||
https://gitlab.com/saltstack-formulas/postfix-formula.git'
|
||||
- 'git fetch --all'
|
||||
# Set default commit hashes for `--from` and `--to`
|
||||
- 'export COMMITLINT_FROM="$(git merge-base upstream/master HEAD)"'
|
||||
- 'export COMMITLINT_TO="${CI_COMMIT_SHA}"'
|
||||
# `coqbot` adds a merge commit to test PRs on top of the latest commit in
|
||||
# the repo; amend this merge commit message to avoid failure
|
||||
- |
|
||||
if [ "${GITLAB_USER_LOGIN}" = "coqbot" ] \
|
||||
&& [ "${CI_COMMIT_BRANCH}" != "master" ]; then
|
||||
git commit --amend -m \
|
||||
'chore: reword coqbot merge commit message for commitlint'
|
||||
export COMMITLINT_TO=HEAD
|
||||
fi
|
||||
# Run `commitlint`
|
||||
- 'commitlint --from "${COMMITLINT_FROM}"
|
||||
--to "${COMMITLINT_TO}"
|
||||
--verbose'
|
||||
|
||||
pre-commit:
|
||||
stage: *stage_lint
|
||||
image: *image_precommit
|
||||
# https://pre-commit.com/#gitlab-ci-example
|
||||
variables:
|
||||
PRE_COMMIT_HOME: '${CI_PROJECT_DIR}/.cache/pre-commit'
|
||||
cache:
|
||||
key: '${CI_JOB_NAME}'
|
||||
paths:
|
||||
- '${PRE_COMMIT_HOME}'
|
||||
script:
|
||||
- 'pre-commit run --all-files --color always --verbose'
|
||||
|
||||
# Use a separate job for `rubocop` other than the one potentially run by `pre-commit`
|
||||
# - The `pre-commit` check will only be available for formulas that pass the default
|
||||
# `rubocop` check -- and must continue to do so
|
||||
# - This job is allowed to fail, so can be used for all formulas
|
||||
# - Furthermore, this job uses all of the latest `rubocop` features & cops,
|
||||
# which will help when upgrading the `rubocop` linter used in `pre-commit`
|
||||
rubocop:
|
||||
allow_failure: true
|
||||
stage: *stage_lint
|
||||
image: *image_rubocop
|
||||
script:
|
||||
- 'rubocop -d -P -S --enable-pending-cops'
|
||||
|
||||
###############################################################################
|
||||
# Define `test` template
|
||||
###############################################################################
|
||||
.test_instance: &test_instance
|
||||
stage: *stage_test
|
||||
image: *image_dindruby
|
||||
services: *services_docker_dind
|
||||
variables: *variables_bundler
|
||||
cache: *cache_bundler
|
||||
before_script:
|
||||
# TODO: This should work from the env vars above automatically
|
||||
- 'bundle config set path "${BUNDLE_CACHE_PATH}"'
|
||||
- 'bundle config set without "${BUNDLE_WITHOUT}"'
|
||||
- 'bundle install'
|
||||
script:
|
||||
# Alternative value to consider: `${CI_JOB_NAME}`
|
||||
- 'bin/kitchen verify "${DOCKER_ENV_CI_JOB_NAME}"'
|
||||
|
||||
###############################################################################
|
||||
# Define `test` template (`allow_failure: true`)
|
||||
###############################################################################
|
||||
.test_instance_failure_permitted:
|
||||
<<: *test_instance
|
||||
allow_failure: true
|
||||
|
||||
###############################################################################
|
||||
# `test` stage: each instance below uses the `test` template above
|
||||
###############################################################################
|
||||
## Define the rest of the matrix based on Kitchen testing
|
||||
# Make sure the instances listed below match up with
|
||||
# the `platforms` defined in `kitchen.yml`
|
||||
# yamllint disable rule:line-length
|
||||
# default-debian-11-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-debian-10-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-debian-9-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-2204-tiamat-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-ubuntu-2004-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-1804-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-centos-stream8-tiamat-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-centos-7-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-amazonlinux-2-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-8-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-7-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-almalinux-8-tiamat-py3: {extends: '.test_instance'}
|
||||
# default-rockylinux-8-tiamat-py3: {extends: '.test_instance'}
|
||||
default-debian-11-master-py3: {extends: '.test_instance'}
|
||||
default-debian-10-master-py3: {extends: '.test_instance'}
|
||||
default-debian-9-master-py3: {extends: '.test_instance'}
|
||||
default-ubuntu-2204-master-py3: {extends: '.test_instance_failure_permitted'}
|
||||
default-ubuntu-2004-master-py3: {extends: '.test_instance'}
|
||||
default-ubuntu-1804-master-py3: {extends: '.test_instance'}
|
||||
default-centos-stream8-master-py3: {extends: '.test_instance_failure_permitted'}
|
||||
default-centos-7-master-py3: {extends: '.test_instance'}
|
||||
default-fedora-36-master-py3: {extends: '.test_instance_failure_permitted'}
|
||||
default-fedora-35-master-py3: {extends: '.test_instance'}
|
||||
default-opensuse-leap-153-master-py3: {extends: '.test_instance'}
|
||||
default-opensuse-tmbl-latest-master-py3: {extends: '.test_instance_failure_permitted'}
|
||||
default-amazonlinux-2-master-py3: {extends: '.test_instance'}
|
||||
default-oraclelinux-8-master-py3: {extends: '.test_instance'}
|
||||
default-oraclelinux-7-master-py3: {extends: '.test_instance'}
|
||||
default-arch-base-latest-master-py3: {extends: '.test_instance'}
|
||||
default-gentoo-stage3-latest-master-py3: {extends: '.test_instance'}
|
||||
default-gentoo-stage3-systemd-master-py3: {extends: '.test_instance'}
|
||||
default-almalinux-8-master-py3: {extends: '.test_instance'}
|
||||
default-rockylinux-8-master-py3: {extends: '.test_instance'}
|
||||
# default-debian-11-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-debian-10-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-debian-9-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-2204-3004-1-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-ubuntu-2004-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-1804-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-centos-stream8-3004-1-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-centos-7-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-fedora-36-3004-1-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-fedora-35-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-amazonlinux-2-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-8-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-7-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-arch-base-latest-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-gentoo-stage3-latest-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-gentoo-stage3-systemd-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-almalinux-8-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-rockylinux-8-3004-1-py3: {extends: '.test_instance'}
|
||||
# default-opensuse-leap-153-3004-0-py3: {extends: '.test_instance'}
|
||||
# default-opensuse-tmbl-latest-3004-0-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-debian-10-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-debian-9-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-2004-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-ubuntu-1804-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-centos-stream8-3003-4-py3: {extends: '.test_instance_failure_permitted'}
|
||||
# default-centos-7-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-amazonlinux-2-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-8-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-oraclelinux-7-3003-4-py3: {extends: '.test_instance'}
|
||||
# default-almalinux-8-3003-4-py3: {extends: '.test_instance'}
|
||||
# yamllint enable rule:line-length
|
||||
|
||||
###############################################################################
|
||||
# `release` stage: `semantic-release`
|
||||
###############################################################################
|
||||
semantic-release:
|
||||
only: *only_branch_master_parent_repo
|
||||
stage: *stage_release
|
||||
image: *image_semanticrelease
|
||||
variables:
|
||||
MAINTAINER_TOKEN: '${GH_TOKEN}'
|
||||
script:
|
||||
# Update `AUTHORS.md`
|
||||
- '${HOME}/go/bin/maintainer contributor'
|
||||
# Run `semantic-release`
|
||||
- 'semantic-release'
|
77
.pre-commit-config.yaml
Normal file
77
.pre-commit-config.yaml
Normal file
@ -0,0 +1,77 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
ci:
|
||||
autofix_commit_msg: |
|
||||
ci(pre-commit.ci): apply auto fixes from pre-commit.com hooks
|
||||
|
||||
For more information, see https://pre-commit.ci
|
||||
autofix_prs: true
|
||||
autoupdate_branch: ''
|
||||
autoupdate_commit_msg: |
|
||||
ci(pre-commit.ci): perform `pre-commit` autoupdate
|
||||
autoupdate_schedule: quarterly
|
||||
skip: []
|
||||
submodules: false
|
||||
default_stages: [commit]
|
||||
repos:
|
||||
- repo: https://github.com/dafyddj/commitlint-pre-commit-hook
|
||||
rev: v2.3.0
|
||||
hooks:
|
||||
- id: commitlint
|
||||
name: Check commit message using commitlint
|
||||
description: Lint commit message against @commitlint/config-conventional rules
|
||||
stages: [commit-msg]
|
||||
additional_dependencies: ['@commitlint/config-conventional@8.3.4']
|
||||
- id: commitlint-travis
|
||||
stages: [manual]
|
||||
additional_dependencies: ['@commitlint/config-conventional@8.3.4']
|
||||
always_run: true
|
||||
- repo: https://github.com/rubocop-hq/rubocop
|
||||
rev: v1.30.1
|
||||
hooks:
|
||||
- id: rubocop
|
||||
name: Check Ruby files with rubocop
|
||||
args: [--debug]
|
||||
always_run: true
|
||||
pass_filenames: false
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.8.0.4
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
name: Check shell scripts with shellcheck
|
||||
files: ^.*\.(sh|bash|ksh)$
|
||||
types: []
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.26.3
|
||||
hooks:
|
||||
- id: yamllint
|
||||
name: Check YAML syntax with yamllint
|
||||
args: [--strict, '.']
|
||||
always_run: true
|
||||
pass_filenames: false
|
||||
- repo: https://github.com/warpnet/salt-lint
|
||||
rev: v0.8.0
|
||||
hooks:
|
||||
- id: salt-lint
|
||||
name: Check Salt files using salt-lint
|
||||
files: ^.*\.(sls|jinja|j2|tmpl|tst)$
|
||||
- repo: https://github.com/myint/rstcheck
|
||||
rev: 3f929574
|
||||
hooks:
|
||||
- id: rstcheck
|
||||
name: Check reST files using rstcheck
|
||||
exclude: 'docs/CHANGELOG.rst'
|
||||
- repo: https://github.com/saltstack-formulas/mirrors-rst-lint
|
||||
rev: v1.3.2
|
||||
hooks:
|
||||
- id: rst-lint
|
||||
name: Check reST files using rst-lint
|
||||
exclude: |
|
||||
(?x)^(
|
||||
docs/CHANGELOG.rst|
|
||||
docs/TOFS_pattern.rst|
|
||||
)$
|
||||
additional_dependencies: [pygments==2.9.0]
|
4
.rstcheck.cfg
Normal file
4
.rstcheck.cfg
Normal file
@ -0,0 +1,4 @@
|
||||
[rstcheck]
|
||||
report=info
|
||||
ignore_language=rst
|
||||
ignore_messages=(Duplicate (ex|im)plicit target.*|Hyperlink target ".*" is not referenced\.$)
|
23
.rubocop.yml
Normal file
23
.rubocop.yml
Normal file
@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
# General overrides used across formulas in the org
|
||||
Layout/LineLength:
|
||||
# Increase from default of `80`
|
||||
# Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`)
|
||||
Max: 88
|
||||
Metrics/BlockLength:
|
||||
IgnoredMethods:
|
||||
- control
|
||||
- describe
|
||||
# Increase from default of `25`
|
||||
Max: 30
|
||||
Security/YAMLLoad:
|
||||
Exclude:
|
||||
- test/integration/**/_mapdata.rb
|
||||
|
||||
# General settings across all cops in this formula
|
||||
AllCops:
|
||||
NewCops: enable
|
||||
|
||||
# Any offenses that should be fixed, e.g. collected via. `rubocop --auto-gen-config`
|
17
.salt-lint
Normal file
17
.salt-lint
Normal file
@ -0,0 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
exclude_paths: []
|
||||
rules:
|
||||
203: # Most files should not contain tabs
|
||||
ignore: |
|
||||
postfix/files/mapping.j2
|
||||
skip_list:
|
||||
# Using `salt-lint` for linting other files as well, such as Jinja macros/templates
|
||||
- 205 # Use ".sls" as a Salt State file extension
|
||||
# Skipping `207` and `208` because `210` is sufficient, at least for the time-being
|
||||
# I.e. Allows 3-digit unquoted codes to still be used, such as `644` and `755`
|
||||
- 207 # File modes should always be encapsulated in quotation marks
|
||||
- 208 # File modes should always contain a leading zero
|
||||
tags: []
|
||||
verbosity: 1
|
186
.travis.yml
Normal file
186
.travis.yml
Normal file
@ -0,0 +1,186 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
################################################################################
|
||||
# NOTE: This file is UNMAINTAINED; it is provided for references purposes only.
|
||||
# No guarantees are tendered that this structure will work after 2020.
|
||||
################################################################################
|
||||
# * https://en.wikipedia.org/wiki/Travis_CI:
|
||||
# - "... free open-source plans were removed in [sic] the end of 2020"
|
||||
# - https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
|
||||
# - https://ropensci.org/technotes/2020/11/19/moving-away-travis/
|
||||
################################################################################
|
||||
## Machine config
|
||||
os: 'linux'
|
||||
arch: 'amd64'
|
||||
dist: 'bionic'
|
||||
version: '~> 1.0'
|
||||
|
||||
## Language and cache config
|
||||
language: 'ruby'
|
||||
cache: 'bundler'
|
||||
|
||||
## Services config
|
||||
services:
|
||||
- docker
|
||||
|
||||
## Script to run for the test stage
|
||||
script:
|
||||
- bin/kitchen verify "${INSTANCE}"
|
||||
|
||||
## Stages and jobs matrix
|
||||
stages:
|
||||
- test
|
||||
# # As part of the switch away from Travis CI, ensure that the `release` stage
|
||||
# # is not run inadvertently
|
||||
# - name: 'release'
|
||||
# if: 'branch = master AND type != pull_request'
|
||||
jobs:
|
||||
include:
|
||||
## Define the test stage that runs the linters (and testing matrix, if applicable)
|
||||
|
||||
# Run all of the linters in a single job
|
||||
- language: 'node_js'
|
||||
node_js: 'lts/*'
|
||||
env: 'Lint'
|
||||
name: 'Lint: salt-lint, yamllint, rubocop, shellcheck & commitlint'
|
||||
before_install: 'skip'
|
||||
script:
|
||||
# Install and run `salt-lint`
|
||||
- pip install --user salt-lint
|
||||
- git ls-files -- '*.sls' '*.jinja' '*.j2' '*.tmpl' '*.tst'
|
||||
| xargs salt-lint
|
||||
# Install and run `yamllint`
|
||||
# Need at least `v1.17.0` for the `yaml-files` setting
|
||||
- pip install --user yamllint>=1.17.0
|
||||
- yamllint -s .
|
||||
# Install and run `rubocop`
|
||||
- gem install rubocop
|
||||
- rubocop -d
|
||||
# Run `shellcheck` (already pre-installed in Travis)
|
||||
- shellcheck --version
|
||||
- git ls-files -- '*.sh' '*.bash' '*.ksh'
|
||||
| xargs shellcheck
|
||||
# Install and run `commitlint`
|
||||
- npm i -D @commitlint/config-conventional
|
||||
@commitlint/travis-cli
|
||||
- commitlint-travis
|
||||
|
||||
# Run `pre-commit` linters in a single job
|
||||
- language: 'python'
|
||||
env: 'Lint_pre-commit'
|
||||
name: 'Lint: pre-commit'
|
||||
before_install: 'skip'
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.cache/pre-commit
|
||||
script:
|
||||
# Install and run `pre-commit`
|
||||
- pip install pre-commit==2.7.1
|
||||
- pre-commit run --all-files --color always --verbose
|
||||
- pre-commit run --color always --hook-stage manual --verbose commitlint-travis
|
||||
|
||||
## Define the rest of the matrix based on Kitchen testing
|
||||
# Make sure the instances listed below match up with
|
||||
# the `platforms` defined in `kitchen.yml`
|
||||
# - env: INSTANCE=default-debian-11-tiamat-py3
|
||||
# - env: INSTANCE=default-debian-10-tiamat-py3
|
||||
# - env: INSTANCE=default-debian-9-tiamat-py3
|
||||
# - env: INSTANCE=default-ubuntu-2204-tiamat-py3
|
||||
# - env: INSTANCE=default-ubuntu-2004-tiamat-py3
|
||||
# - env: INSTANCE=default-ubuntu-1804-tiamat-py3
|
||||
# - env: INSTANCE=default-centos-stream8-tiamat-py3
|
||||
# - env: INSTANCE=default-centos-7-tiamat-py3
|
||||
# - env: INSTANCE=default-amazonlinux-2-tiamat-py3
|
||||
# - env: INSTANCE=default-oraclelinux-8-tiamat-py3
|
||||
# - env: INSTANCE=default-oraclelinux-7-tiamat-py3
|
||||
# - env: INSTANCE=default-almalinux-8-tiamat-py3
|
||||
# - env: INSTANCE=default-rockylinux-8-tiamat-py3
|
||||
- env: INSTANCE=default-debian-11-master-py3
|
||||
- env: INSTANCE=default-debian-10-master-py3
|
||||
- env: INSTANCE=default-debian-9-master-py3
|
||||
- env: INSTANCE=default-ubuntu-2204-master-py3
|
||||
- env: INSTANCE=default-ubuntu-2004-master-py3
|
||||
- env: INSTANCE=default-ubuntu-1804-master-py3
|
||||
- env: INSTANCE=default-centos-stream8-master-py3
|
||||
- env: INSTANCE=default-centos-7-master-py3
|
||||
- env: INSTANCE=default-fedora-36-master-py3
|
||||
- env: INSTANCE=default-fedora-35-master-py3
|
||||
- env: INSTANCE=default-opensuse-leap-153-master-py3
|
||||
- env: INSTANCE=default-opensuse-tmbl-latest-master-py3
|
||||
- env: INSTANCE=default-amazonlinux-2-master-py3
|
||||
- env: INSTANCE=default-oraclelinux-8-master-py3
|
||||
- env: INSTANCE=default-oraclelinux-7-master-py3
|
||||
- env: INSTANCE=default-arch-base-latest-master-py3
|
||||
- env: INSTANCE=default-gentoo-stage3-latest-master-py3
|
||||
- env: INSTANCE=default-gentoo-stage3-systemd-master-py3
|
||||
- env: INSTANCE=default-almalinux-8-master-py3
|
||||
- env: INSTANCE=default-rockylinux-8-master-py3
|
||||
# - env: INSTANCE=default-debian-11-3004-1-py3
|
||||
# - env: INSTANCE=default-debian-10-3004-1-py3
|
||||
# - env: INSTANCE=default-debian-9-3004-1-py3
|
||||
# - env: INSTANCE=default-ubuntu-2204-3004-1-py3
|
||||
# - env: INSTANCE=default-ubuntu-2004-3004-1-py3
|
||||
# - env: INSTANCE=default-ubuntu-1804-3004-1-py3
|
||||
# - env: INSTANCE=default-centos-stream8-3004-1-py3
|
||||
# - env: INSTANCE=default-centos-7-3004-1-py3
|
||||
# - env: INSTANCE=default-fedora-36-3004-1-py3
|
||||
# - env: INSTANCE=default-fedora-35-3004-1-py3
|
||||
# - env: INSTANCE=default-amazonlinux-2-3004-1-py3
|
||||
# - env: INSTANCE=default-oraclelinux-8-3004-1-py3
|
||||
# - env: INSTANCE=default-oraclelinux-7-3004-1-py3
|
||||
# - env: INSTANCE=default-arch-base-latest-3004-1-py3
|
||||
# - env: INSTANCE=default-gentoo-stage3-latest-3004-1-py3
|
||||
# - env: INSTANCE=default-gentoo-stage3-systemd-3004-1-py3
|
||||
# - env: INSTANCE=default-almalinux-8-3004-1-py3
|
||||
# - env: INSTANCE=default-rockylinux-8-3004-1-py3
|
||||
# - env: INSTANCE=default-opensuse-leap-153-3004-0-py3
|
||||
# - env: INSTANCE=default-opensuse-tmbl-latest-3004-0-py3
|
||||
# - env: INSTANCE=default-debian-10-3003-4-py3
|
||||
# - env: INSTANCE=default-debian-9-3003-4-py3
|
||||
# - env: INSTANCE=default-ubuntu-2004-3003-4-py3
|
||||
# - env: INSTANCE=default-ubuntu-1804-3003-4-py3
|
||||
# - env: INSTANCE=default-centos-stream8-3003-4-py3
|
||||
# - env: INSTANCE=default-centos-7-3003-4-py3
|
||||
# - env: INSTANCE=default-amazonlinux-2-3003-4-py3
|
||||
# - env: INSTANCE=default-oraclelinux-8-3003-4-py3
|
||||
# - env: INSTANCE=default-oraclelinux-7-3003-4-py3
|
||||
# - env: INSTANCE=default-almalinux-8-3003-4-py3
|
||||
|
||||
## Define the release stage that runs `semantic-release`
|
||||
- stage: 'release'
|
||||
language: 'node_js'
|
||||
node_js: 'lts/*'
|
||||
env: 'Release'
|
||||
name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA'
|
||||
before_install: 'skip'
|
||||
script:
|
||||
# Update `AUTHORS.md`
|
||||
- export MAINTAINER_TOKEN=${GH_TOKEN}
|
||||
- go get github.com/myii/maintainer
|
||||
- maintainer contributor
|
||||
|
||||
# Install all dependencies required for `semantic-release`
|
||||
- npm i -D @semantic-release/changelog@3
|
||||
@semantic-release/exec@3
|
||||
@semantic-release/git@7
|
||||
deploy:
|
||||
provider: 'script'
|
||||
# Opt-in to `dpl v2` to complete the Travis build config validation (beta)
|
||||
# * https://docs.travis-ci.com/user/build-config-validation
|
||||
# Deprecated `skip_cleanup` can now be avoided, `cleanup: false` is by default
|
||||
edge: true
|
||||
# Run `semantic-release`
|
||||
script: 'npx semantic-release@15.14'
|
||||
|
||||
# Notification options: `always`, `never` or `change`
|
||||
notifications:
|
||||
webhooks:
|
||||
if: 'repo = saltstack-formulas/postfix-formula'
|
||||
urls:
|
||||
- https://saltstack-formulas.zulipchat.com/api/v1/external/travis?api_key=HsIq3o5QmLxdnVCKF9is0FUIpkpAY79P&stream=CI&topic=saltstack-formulas%2Fpostfix-formula&ignore_pull_requests=true
|
||||
on_success: always # default: always
|
||||
on_failure: always # default: always
|
||||
on_start: always # default: never
|
||||
on_cancel: always # default: always
|
||||
on_error: always # default: always
|
47
.yamllint
Normal file
47
.yamllint
Normal file
@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
# Extend the `default` configuration provided by `yamllint`
|
||||
extends: 'default'
|
||||
|
||||
# Files to ignore completely
|
||||
# 1. All YAML files under directory `.bundle/`, introduced if gems are installed locally
|
||||
# 2. All YAML files under directory `.cache/`, introduced during the CI run
|
||||
# 3. All YAML files under directory `.git/`
|
||||
# 4. All YAML files under directory `node_modules/`, introduced during the CI run
|
||||
# 5. Any SLS files under directory `test/`, which are actually state files
|
||||
# 6. Any YAML files under directory `.kitchen/`, introduced during local testing
|
||||
# 7. `kitchen.vagrant.yml`, which contains Embedded Ruby (ERB) template syntax
|
||||
ignore: |
|
||||
.bundle/
|
||||
.cache/
|
||||
.git/
|
||||
node_modules/
|
||||
test/**/states/**/*.sls
|
||||
.kitchen/
|
||||
kitchen.vagrant.yml
|
||||
|
||||
yaml-files:
|
||||
# Default settings
|
||||
- '*.yaml'
|
||||
- '*.yml'
|
||||
- .salt-lint
|
||||
- .yamllint
|
||||
# SaltStack Formulas additional settings
|
||||
- '*.example'
|
||||
- test/**/*.sls
|
||||
|
||||
rules:
|
||||
empty-values:
|
||||
forbid-in-block-mappings: true
|
||||
forbid-in-flow-mappings: true
|
||||
key-duplicates:
|
||||
ignore: |
|
||||
pillar.example
|
||||
line-length:
|
||||
# Increase from default of `80`
|
||||
# Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`)
|
||||
max: 88
|
||||
octal-values:
|
||||
forbid-implicit-octal: true
|
||||
forbid-explicit-octal: true
|
48
AUTHORS.md
Normal file
48
AUTHORS.md
Normal file
@ -0,0 +1,48 @@
|
||||
# Authors
|
||||
|
||||
This list is sorted by the number of commits per contributor in _descending_ order.
|
||||
|
||||
Avatar|Contributor|Contributions
|
||||
:-:|---|:-:
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/10231489?v=4' width='36' height='36' alt='@myii'>|[@myii](https://github.com/myii)|122
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/745513?v=4' width='36' height='36' alt='@EvaSDK'>|[@EvaSDK](https://github.com/EvaSDK)|26
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1800660?v=4' width='36' height='36' alt='@aboe76'>|[@aboe76](https://github.com/aboe76)|23
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/242396?v=4' width='36' height='36' alt='@javierbertoli'>|[@javierbertoli](https://github.com/javierbertoli)|16
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3374962?v=4' width='36' height='36' alt='@nmadhok'>|[@nmadhok](https://github.com/nmadhok)|14
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1920805?v=4' width='36' height='36' alt='@alxwr'>|[@alxwr](https://github.com/alxwr)|12
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1396878?v=4' width='36' height='36' alt='@gravyboat'>|[@gravyboat](https://github.com/gravyboat)|10
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/18299?v=4' width='36' height='36' alt='@davidkarlsen'>|[@davidkarlsen](https://github.com/davidkarlsen)|10
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/214768?v=4' width='36' height='36' alt='@ixs'>|[@ixs](https://github.com/ixs)|9
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/6215293?v=4' width='36' height='36' alt='@0xf10e'>|[@0xf10e](https://github.com/0xf10e)|9
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/94157?v=4' width='36' height='36' alt='@imran1008'>|[@imran1008](https://github.com/imran1008)|8
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/528061?v=4' width='36' height='36' alt='@puneetk'>|[@puneetk](https://github.com/puneetk)|7
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1197993?v=4' width='36' height='36' alt='@danoe'>|[@danoe](https://github.com/danoe)|6
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/4195158?v=4' width='36' height='36' alt='@dafyddj'>|[@dafyddj](https://github.com/dafyddj)|4
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/13322818?v=4' width='36' height='36' alt='@noelmcloughlin'>|[@noelmcloughlin](https://github.com/noelmcloughlin)|4
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/507599?v=4' width='36' height='36' alt='@thatch45'>|[@thatch45](https://github.com/thatch45)|3
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/732321?v=4' width='36' height='36' alt='@gtmanfred'>|[@gtmanfred](https://github.com/gtmanfred)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3768412?v=4' width='36' height='36' alt='@stp-ip'>|[@stp-ip](https://github.com/stp-ip)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/91293?v=4' width='36' height='36' alt='@whiteinge'>|[@whiteinge](https://github.com/whiteinge)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/131665?v=4' width='36' height='36' alt='@iamseth'>|[@iamseth](https://github.com/iamseth)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/4156131?v=4' width='36' height='36' alt='@skylerberg'>|[@skylerberg](https://github.com/skylerberg)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/117961?v=4' width='36' height='36' alt='@babilen'>|[@babilen](https://github.com/babilen)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3180588?v=4' width='36' height='36' alt='@jeroen92'>|[@jeroen92](https://github.com/jeroen92)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/52996?v=4' width='36' height='36' alt='@daks'>|[@daks](https://github.com/daks)|2
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/762280?v=4' width='36' height='36' alt='@asenci'>|[@asenci](https://github.com/asenci)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/8599847?v=4' width='36' height='36' alt='@campbellmc'>|[@campbellmc](https://github.com/campbellmc)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1233212?v=4' width='36' height='36' alt='@baby-gnu'>|[@baby-gnu](https://github.com/baby-gnu)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1654592?v=4' width='36' height='36' alt='@feiming'>|[@feiming](https://github.com/feiming)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/56635?v=4' width='36' height='36' alt='@pprkut'>|[@pprkut](https://github.com/pprkut)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/12465797?v=4' width='36' height='36' alt='@hoonetorg'>|[@hoonetorg](https://github.com/hoonetorg)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/287147?v=4' width='36' height='36' alt='@techhat'>|[@techhat](https://github.com/techhat)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/611471?v=4' width='36' height='36' alt='@duk3luk3'>|[@duk3luk3](https://github.com/duk3luk3)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/924183?v=4' width='36' height='36' alt='@mschiff'>|[@mschiff](https://github.com/mschiff)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/6086064?v=4' width='36' height='36' alt='@mgomersbach'>|[@mgomersbach](https://github.com/mgomersbach)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3433835?v=4' width='36' height='36' alt='@n-rodriguez'>|[@n-rodriguez](https://github.com/n-rodriguez)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1013915?v=4' width='36' height='36' alt='@rhertzog'>|[@rhertzog](https://github.com/rhertzog)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/5825186?v=4' width='36' height='36' alt='@kti-richard'>|[@kti-richard](https://github.com/kti-richard)|1
|
||||
<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/21147643?v=4' width='36' height='36' alt='@vquiering'>|[@vquiering](https://github.com/vquiering)|1
|
||||
|
||||
---
|
||||
|
||||
Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2022-02-13.
|
253
CHANGELOG.md
Normal file
253
CHANGELOG.md
Normal file
@ -0,0 +1,253 @@
|
||||
# Changelog
|
||||
|
||||
## [2.0.2](https://github.com/saltstack-formulas/postfix-formula/compare/v2.0.1...v2.0.2) (2022-02-13)
|
||||
|
||||
|
||||
### Code Refactoring
|
||||
|
||||
* **salt-lint:** fix violations ([6a33d98](https://github.com/saltstack-formulas/postfix-formula/commit/6a33d98d75b7cbce3fa735f9e2c4071da0ce0355))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* update linters to latest versions [skip ci] ([62eb687](https://github.com/saltstack-formulas/postfix-formula/commit/62eb687b052a31bc395f53dd9c8259ff643b449e))
|
||||
* **gemfile:** allow rubygems proxy to be provided as an env var [skip ci] ([5d167a4](https://github.com/saltstack-formulas/postfix-formula/commit/5d167a403c253e3b9f6c68641e0b871d287d2662))
|
||||
* **kitchen+gitlab:** update for new pre-salted images [skip ci] ([008ac83](https://github.com/saltstack-formulas/postfix-formula/commit/008ac83c7a95dc1d29ee388f0d634ff3bd9b0320))
|
||||
|
||||
## [2.0.1](https://github.com/saltstack-formulas/postfix-formula/compare/v2.0.0...v2.0.1) (2022-01-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **config:** set default_database_type; fixes [#118](https://github.com/saltstack-formulas/postfix-formula/issues/118) ([3bd3d1c](https://github.com/saltstack-formulas/postfix-formula/commit/3bd3d1c74e6dd60a984a3f790b8c50fa46ea2ed6))
|
||||
|
||||
|
||||
### Code Refactoring
|
||||
|
||||
* **config:** add `default_database_type` as default value ([6da70d2](https://github.com/saltstack-formulas/postfix-formula/commit/6da70d21bbfbf613e6f0149c757c5e628ef227fb))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **3003.1:** update inc. AlmaLinux, Rocky & `rst-lint` [skip ci] ([3284d38](https://github.com/saltstack-formulas/postfix-formula/commit/3284d38a367d94ef57c57e88dd6698c88b0affd2))
|
||||
* **gemfile+lock:** use `ssf` customised `inspec` repo [skip ci] ([cfed974](https://github.com/saltstack-formulas/postfix-formula/commit/cfed97400047b109a765d5cee95667f6ca1c1fd2))
|
||||
* **kitchen:** move `provisioner` block & update `run_command` [skip ci] ([31a3836](https://github.com/saltstack-formulas/postfix-formula/commit/31a3836cd63f09d81ad88f510b61cb831436759c))
|
||||
* **kitchen+ci:** update with `3004` pre-salted images/boxes [skip ci] ([dec042a](https://github.com/saltstack-formulas/postfix-formula/commit/dec042aa43e71785bc49247002a16d82af8c1531))
|
||||
* **kitchen+ci:** update with latest `3003.2` pre-salted images [skip ci] ([9688f36](https://github.com/saltstack-formulas/postfix-formula/commit/9688f36aa146d584546da71fa89e04525c08aa42))
|
||||
* **kitchen+ci:** update with latest CVE pre-salted images [skip ci] ([76134b4](https://github.com/saltstack-formulas/postfix-formula/commit/76134b47c70d98d00dfe1e6d0f3c9cc0095bda69))
|
||||
* add `arch-master` to matrix and update `.travis.yml` [skip ci] ([c631eca](https://github.com/saltstack-formulas/postfix-formula/commit/c631eca02e2c1c03e38bcd179c9b443c22ce706d))
|
||||
* add Debian 11 Bullseye & update `yamllint` configuration [skip ci] ([c11c07d](https://github.com/saltstack-formulas/postfix-formula/commit/c11c07d6a664da11f11c22ddd416d0501a2cb07e))
|
||||
* **kitchen+gitlab:** adjust matrix to add `3003` [skip ci] ([04564a7](https://github.com/saltstack-formulas/postfix-formula/commit/04564a7ad6c803f70cfa487acd92dd1197563469))
|
||||
* **kitchen+gitlab:** remove Ubuntu 16.04 & Fedora 32 (EOL) [skip ci] ([d56006f](https://github.com/saltstack-formulas/postfix-formula/commit/d56006f8d2dac568c06c4e1e83b076acfe49a80c))
|
||||
|
||||
|
||||
### Tests
|
||||
|
||||
* standardise use of `share` suite & `_mapdata` state [skip ci] ([4c394a7](https://github.com/saltstack-formulas/postfix-formula/commit/4c394a76faea4301df4708854edd39d37a13935d))
|
||||
|
||||
# [2.0.0](https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.2...v2.0.0) (2021-03-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **resources:** make resources' IDs unique ([03ad48b](https://github.com/saltstack-formulas/postfix-formula/commit/03ad48b8a4b0b05144d449c9caee998ad6d0628f))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **commitlint:** ensure `upstream/master` uses main repo URL [skip ci] ([381b150](https://github.com/saltstack-formulas/postfix-formula/commit/381b150b0f1d0ab41e60f0ac95a7a6163633d701))
|
||||
* **gemfile+lock:** use `ssf` customised `kitchen-docker` repo [skip ci] ([c5851e6](https://github.com/saltstack-formulas/postfix-formula/commit/c5851e67a2125c5367b3ab97b46c6407aa66eaf1))
|
||||
* **gitlab-ci:** add `rubocop` linter (with `allow_failure`) [skip ci] ([22fa184](https://github.com/saltstack-formulas/postfix-formula/commit/22fa184b14e88a05d4c4284c459a7d887501e404))
|
||||
* **gitlab-ci:** use GitLab CI as Travis CI replacement ([890f3ae](https://github.com/saltstack-formulas/postfix-formula/commit/890f3aebc63484d07f887c870f2825797ba504e9))
|
||||
* **kitchen+ci:** use latest pre-salted images (after CVE) [skip ci] ([19617a0](https://github.com/saltstack-formulas/postfix-formula/commit/19617a0ad710914c8f4439044d7bf993e1effcc8))
|
||||
* **kitchen+gitlab-ci:** use latest pre-salted images [skip ci] ([d65a7a3](https://github.com/saltstack-formulas/postfix-formula/commit/d65a7a36c28e3881b058e9c5b898a0f39c5e1ca7))
|
||||
* **pre-commit:** add to formula [skip ci] ([f41392d](https://github.com/saltstack-formulas/postfix-formula/commit/f41392d4504cb60b2fcf2c818cfe97f5487e2844))
|
||||
* **pre-commit:** enable/disable `rstcheck` as relevant [skip ci] ([fb5be95](https://github.com/saltstack-formulas/postfix-formula/commit/fb5be9504ec18c86bab4f387bf62ba816b3ffa64))
|
||||
* **pre-commit:** finalise `rstcheck` configuration [skip ci] ([75941ed](https://github.com/saltstack-formulas/postfix-formula/commit/75941ed61443c84c27fea864d0529461564d8969))
|
||||
* **pre-commit:** update hook for `rubocop` [skip ci] ([c60d58e](https://github.com/saltstack-formulas/postfix-formula/commit/c60d58eb1168c031c12d656c9605f83afebc9fa1))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **resources:** as all resources' IDs changed, other formulas
|
||||
depending on this formula's resources will need to be modified
|
||||
accordingly.
|
||||
|
||||
## [1.2.2](https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.1...v1.2.2) (2020-10-02)
|
||||
|
||||
|
||||
### Styles
|
||||
|
||||
* prepend modes with 0 ([fdc127c](https://github.com/saltstack-formulas/postfix-formula/commit/fdc127c8db7b19fac9be907ca511b17d5f5c4be0))
|
||||
* quote modes/numbers ([b9c4fba](https://github.com/saltstack-formulas/postfix-formula/commit/b9c4fbadaf164c1589a27af45fbde7092e6a1d8a))
|
||||
|
||||
## [1.2.1](https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.0...v1.2.1) (2020-09-27)
|
||||
|
||||
|
||||
### Styles
|
||||
|
||||
* linting for `yamllint` ([780dc9d](https://github.com/saltstack-formulas/postfix-formula/commit/780dc9d372328f0b7ae08425abf1e1f32ed4b49e))
|
||||
|
||||
# [1.2.0](https://github.com/saltstack-formulas/postfix-formula/compare/v1.1.0...v1.2.0) (2020-07-20)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **maps:** add more map types and tests ([e3970df](https://github.com/saltstack-formulas/postfix-formula/commit/e3970dfc3eac57b7a4f8911ef48d8652f3a26cd7))
|
||||
|
||||
# [1.1.0](https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.3...v1.1.0) (2020-07-18)
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **kitchen:** use `saltimages` Docker Hub where available [skip ci] ([2ddd417](https://github.com/saltstack-formulas/postfix-formula/commit/2ddd417039d8cb6f8241036c60ee0e6d534aab00))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **config:** run postmap also for regexp maps ([7584fce](https://github.com/saltstack-formulas/postfix-formula/commit/7584fce0aff912b3aeaf44e6eed82a4c9c267535))
|
||||
|
||||
## [1.0.3](https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.2...v1.0.3) (2020-06-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **deps:** fixes ordering where postmap requires sane main.cf ([a28bd05](https://github.com/saltstack-formulas/postfix-formula/commit/a28bd05b852c309e70aa8ff0491c12271ddd4461))
|
||||
* **test:** use specific ip to workaround centos bug ([273caf9](https://github.com/saltstack-formulas/postfix-formula/commit/273caf9b6f42a4127025f9d2d862806653b661c2))
|
||||
|
||||
|
||||
### Tests
|
||||
|
||||
* **default:** add inspec for base and maps ([2a61498](https://github.com/saltstack-formulas/postfix-formula/commit/2a61498fa440b2eef26849c2b0bc2dadf27b2dee))
|
||||
|
||||
## [1.0.2](https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.1...v1.0.2) (2020-06-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **opensuse:** fixes config files generation in opensuse ([067bcf6](https://github.com/saltstack-formulas/postfix-formula/commit/067bcf636face6b3a3cb40418758641354ac2402))
|
||||
|
||||
## [1.0.1](https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.0...v1.0.1) (2020-06-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **main:** fix postconf warning when reloading/starting ([04003c6](https://github.com/saltstack-formulas/postfix-formula/commit/04003c6ee33d5699cc392f7e74f81d27547b5f6e))
|
||||
|
||||
# [1.0.0](https://github.com/saltstack-formulas/postfix-formula/compare/v0.19.0...v1.0.0) (2020-06-06)
|
||||
|
||||
|
||||
### Code Refactoring
|
||||
|
||||
* **maps:** move tls_policy and transport to mapping section ([06276fd](https://github.com/saltstack-formulas/postfix-formula/commit/06276fd7431e1675795be95c0c8ebb01772ea740))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **kitchen+travis:** use latest pre-salted images ([b364744](https://github.com/saltstack-formulas/postfix-formula/commit/b364744e40b484397fea5c2c1767f77728649de8))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **maps:** `transport` and `tls_policy` keys in `postfix:config` have been moved to the standard `postfix:mapping`.
|
||||
|
||||
# [0.19.0](https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.2...v0.19.0) (2020-05-23)
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **travis:** add notifications => zulip [skip ci] ([c78c421](https://github.com/saltstack-formulas/postfix-formula/commit/c78c4219846f8c384623da7dd74d4e9a5e419b74))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **maps:** adds tls_policy map for smtp delivery ([d87da4a](https://github.com/saltstack-formulas/postfix-formula/commit/d87da4adc49d18674f35e40a948ad88fefaf26f6))
|
||||
|
||||
## [0.18.2](https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.1...v0.18.2) (2020-05-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* make necessary modifications to get working on `salt-ssh` ([34a112f](https://github.com/saltstack-formulas/postfix-formula/commit/34a112faabba46d95b102afa3add5b797dda2ce1)), closes [/freenode.logbot.info/saltstack-formulas/20200507#c3819526-c3819581](https://github.com//freenode.logbot.info/saltstack-formulas/20200507/issues/c3819526-c3819581) [/freenode.logbot.info/saltstack-formulas/20200508#c3826763-c3826995](https://github.com//freenode.logbot.info/saltstack-formulas/20200508/issues/c3826763-c3826995)
|
||||
* **release.config.js:** use full commit hash in commit link [skip ci] ([ffbe5aa](https://github.com/saltstack-formulas/postfix-formula/commit/ffbe5aad13e73a4e3aa1c6dbd24488ebd73436ee))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **gemfile:** restrict `train` gem version until upstream fix [skip ci] ([80cdd9d](https://github.com/saltstack-formulas/postfix-formula/commit/80cdd9d202b6dbbc43aa02025bb7d9738aad8ee7))
|
||||
* **gemfile.lock:** add to repo with updated `Gemfile` [skip ci] ([497221d](https://github.com/saltstack-formulas/postfix-formula/commit/497221d1de7356cb031f78597781fa05897ca0a9))
|
||||
* **kitchen:** avoid using bootstrap for `master` instances [skip ci] ([708b0a5](https://github.com/saltstack-formulas/postfix-formula/commit/708b0a51d9378ef44c0df125f532deea44f07044))
|
||||
* **kitchen:** use `debian-10-master-py3` instead of `develop` [skip ci] ([90098c0](https://github.com/saltstack-formulas/postfix-formula/commit/90098c0cdfa856f9e3ca7772e8fb52e014d70d55))
|
||||
* **kitchen:** use `develop` image until `master` is ready (`amazonlinux`) [skip ci] ([df76c72](https://github.com/saltstack-formulas/postfix-formula/commit/df76c72dcee4ff87f104b13880ddc32b163e2db6))
|
||||
* **kitchen+travis:** remove `master-py2-arch-base-latest` [skip ci] ([46d0f3d](https://github.com/saltstack-formulas/postfix-formula/commit/46d0f3d1d8b9b7373068c9182a593c8ed96e1bcd))
|
||||
* **kitchen+travis:** upgrade matrix after `2019.2.2` release [skip ci] ([70fc491](https://github.com/saltstack-formulas/postfix-formula/commit/70fc49122ed6213a4e93fc5280bf5744af969f86))
|
||||
* **travis:** apply changes from build config validation [skip ci] ([f25db2d](https://github.com/saltstack-formulas/postfix-formula/commit/f25db2d5f3c2394e29f36cf33d2166c5af73fa40))
|
||||
* **travis:** opt-in to `dpl v2` to complete build config validation [skip ci] ([8f4db70](https://github.com/saltstack-formulas/postfix-formula/commit/8f4db70ece851dea547550cfabb4b770eaf0796b))
|
||||
* **travis:** quote pathspecs used with `git ls-files` [skip ci] ([6d18d1d](https://github.com/saltstack-formulas/postfix-formula/commit/6d18d1dc93c92c4ba85f340c541d3a69f557d74e))
|
||||
* **travis:** run `shellcheck` during lint job [skip ci] ([29efb81](https://github.com/saltstack-formulas/postfix-formula/commit/29efb819fc9d4bf273b57c15d01dfb390642b3d5))
|
||||
* **travis:** update `salt-lint` config for `v0.0.10` [skip ci] ([b23168e](https://github.com/saltstack-formulas/postfix-formula/commit/b23168e69ec8823ad9382b6c9c3be8f743d3b8e3))
|
||||
* **travis:** use `major.minor` for `semantic-release` version [skip ci] ([964e3ef](https://github.com/saltstack-formulas/postfix-formula/commit/964e3ef0fa6613380c56b1b2044e6f37dd797c6c))
|
||||
* **travis:** use build config validation (beta) [skip ci] ([1ab8692](https://github.com/saltstack-formulas/postfix-formula/commit/1ab8692f31bdfcf5a24d7049c254d1b71d090e21))
|
||||
* **workflows/commitlint:** add to repo [skip ci] ([43a7353](https://github.com/saltstack-formulas/postfix-formula/commit/43a7353caec2908e1d6aabab11c198c1806412f5))
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
* **contributing:** remove to use org-level file instead [skip ci] ([a33757a](https://github.com/saltstack-formulas/postfix-formula/commit/a33757a6ad445fc7e209f32c6ceb5b2309e11d03))
|
||||
* **readme:** update link to `CONTRIBUTING` [skip ci] ([50b9808](https://github.com/saltstack-formulas/postfix-formula/commit/50b9808a3bd094de30439ff788b6f58ea72051ba))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **travis:** improve `salt-lint` invocation [skip ci] ([2ece69c](https://github.com/saltstack-formulas/postfix-formula/commit/2ece69c3c12ffd9696a5836bf3ed7992af58e8ab))
|
||||
|
||||
## [0.18.1](https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.0...v0.18.1) (2019-10-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **rubocop:** add fixes using `rubocop --safe-auto-correct` ([](https://github.com/saltstack-formulas/postfix-formula/commit/87dd217))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **kitchen:** change `log_level` to `debug` instead of `info` ([](https://github.com/saltstack-formulas/postfix-formula/commit/17734cb))
|
||||
* **kitchen:** install required packages to bootstrapped `opensuse` [skip ci] ([](https://github.com/saltstack-formulas/postfix-formula/commit/5127bee))
|
||||
* **kitchen:** use bootstrapped `opensuse` images until `2019.2.2` [skip ci] ([](https://github.com/saltstack-formulas/postfix-formula/commit/79df4ce))
|
||||
* **platform:** add `arch-base-latest` ([](https://github.com/saltstack-formulas/postfix-formula/commit/16e6f58))
|
||||
* merge travis matrix, add `salt-lint` & `rubocop` to `lint` job ([](https://github.com/saltstack-formulas/postfix-formula/commit/0c0a228))
|
||||
* merge travis matrix, add `salt-lint` & `rubocop` to `lint` job ([](https://github.com/saltstack-formulas/postfix-formula/commit/1ec88a4))
|
||||
* use `dist: bionic` & apply `opensuse-leap-15` SCP error workaround ([](https://github.com/saltstack-formulas/postfix-formula/commit/bbbc260))
|
||||
* **travis:** merge `rubocop` linter into main `lint` job ([](https://github.com/saltstack-formulas/postfix-formula/commit/508074a))
|
||||
* **yamllint:** add rule `empty-values` & use new `yaml-files` setting ([](https://github.com/saltstack-formulas/postfix-formula/commit/c9a4fc7))
|
||||
|
||||
# [0.18.0](https://github.com/saltstack-formulas/postfix-formula/compare/v0.17.1...v0.18.0) (2019-09-01)
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **kitchen+travis:** replace EOL pre-salted images ([8996d28](https://github.com/saltstack-formulas/postfix-formula/commit/8996d28))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **yamllint:** include for this repo and apply rules throughout ([b4fbac2](https://github.com/saltstack-formulas/postfix-formula/commit/b4fbac2))
|
||||
|
||||
## [0.17.1](https://github.com/saltstack-formulas/postfix-formula/compare/v0.17.0...v0.17.1) (2019-07-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **service:** restart service on package change ([75358e0](https://github.com/saltstack-formulas/postfix-formula/commit/75358e0))
|
||||
|
||||
|
||||
### Continuous Integration
|
||||
|
||||
* **kitchen+travis:** modify matrix to include `develop` platform ([b505a5d](https://github.com/saltstack-formulas/postfix-formula/commit/b505a5d))
|
||||
|
||||
# [0.17.0](https://github.com/saltstack-formulas/postfix-formula/compare/v0.16.0...v0.17.0) (2019-06-03)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **semantic-release:** implement an automated changelog ([3161504](https://github.com/saltstack-formulas/postfix-formula/commit/3161504))
|
50
CODEOWNERS
Normal file
50
CODEOWNERS
Normal file
@ -0,0 +1,50 @@
|
||||
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||
|
||||
# SECTION: Owner(s) for everything in the repo, unless a later match takes precedence
|
||||
# FILE PATTERN OWNER(S)
|
||||
* @fzipi
|
||||
|
||||
# SECTION: Owner(s) for specific directories
|
||||
# FILE PATTERN OWNER(S)
|
||||
|
||||
# SECTION: Owner(s) for files/directories related to `semantic-release`
|
||||
# FILE PATTERN OWNER(S)
|
||||
/.github/workflows/ @saltstack-formulas/ssf
|
||||
/bin/install-hooks @saltstack-formulas/ssf
|
||||
/bin/kitchen @saltstack-formulas/ssf
|
||||
/docs/AUTHORS.rst @saltstack-formulas/ssf
|
||||
/docs/CHANGELOG.rst @saltstack-formulas/ssf
|
||||
/docs/TOFS_pattern.rst @saltstack-formulas/ssf
|
||||
/*/_mapdata/ @saltstack-formulas/ssf
|
||||
/*/libsaltcli.jinja @saltstack-formulas/ssf
|
||||
/*/libtofs.jinja @saltstack-formulas/ssf
|
||||
/test/integration/**/_mapdata.rb @saltstack-formulas/ssf
|
||||
/test/integration/**/libraries/system.rb @saltstack-formulas/ssf
|
||||
/test/integration/**/inspec.yml @saltstack-formulas/ssf
|
||||
/test/integration/**/README.md @saltstack-formulas/ssf
|
||||
/test/salt/pillar/top.sls @saltstack-formulas/ssf
|
||||
/.gitignore @saltstack-formulas/ssf
|
||||
/.cirrus.yml @saltstack-formulas/ssf
|
||||
/.gitlab-ci.yml @saltstack-formulas/ssf
|
||||
/.pre-commit-config.yaml @saltstack-formulas/ssf
|
||||
/.rstcheck.cfg @saltstack-formulas/ssf
|
||||
/.rubocop.yml @saltstack-formulas/ssf
|
||||
/.salt-lint @saltstack-formulas/ssf
|
||||
/.travis.yml @saltstack-formulas/ssf
|
||||
/.yamllint @saltstack-formulas/ssf
|
||||
/AUTHORS.md @saltstack-formulas/ssf
|
||||
/CHANGELOG.md @saltstack-formulas/ssf
|
||||
/CODEOWNERS @saltstack-formulas/ssf
|
||||
/commitlint.config.js @saltstack-formulas/ssf
|
||||
/FORMULA @saltstack-formulas/ssf
|
||||
/Gemfile @saltstack-formulas/ssf
|
||||
/Gemfile.lock @saltstack-formulas/ssf
|
||||
/kitchen.yml @saltstack-formulas/ssf
|
||||
/kitchen.vagrant.yml @saltstack-formulas/ssf
|
||||
/kitchen.windows.yml @saltstack-formulas/ssf
|
||||
/pre-commit_semantic-release.sh @saltstack-formulas/ssf
|
||||
/release-rules.js @saltstack-formulas/ssf
|
||||
/release.config.js @saltstack-formulas/ssf
|
||||
|
||||
# SECTION: Owner(s) for specific files
|
||||
# FILE PATTERN OWNER(S)
|
9
FORMULA
Normal file
9
FORMULA
Normal file
@ -0,0 +1,9 @@
|
||||
name: postfix
|
||||
os: Debian, Ubuntu, Raspbian, RedHat, Fedora, CentOS, Suse, openSUSE
|
||||
os_family: Debian, RedHat, Suse
|
||||
version: 2.0.2
|
||||
release: 1
|
||||
minimum_version: 2016.11
|
||||
summary: Postfix formula
|
||||
description: Formula to install and configure Postfix mail server
|
||||
top_level_dir: postfix
|
19
Gemfile
Normal file
19
Gemfile
Normal file
@ -0,0 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source ENV.fetch('PROXY_RUBYGEMSORG', 'https://rubygems.org')
|
||||
|
||||
# Install the `inspec` gem using `git` because versions after `4.22.22`
|
||||
# suppress diff output; this version fixes this for our uses.
|
||||
# rubocop:disable Layout/LineLength
|
||||
gem 'inspec', git: 'https://gitlab.com/saltstack-formulas/infrastructure/inspec', branch: 'ssf'
|
||||
# rubocop:enable Layout/LineLength
|
||||
|
||||
# Install the `kitchen-docker` gem using `git` in order to gain a performance
|
||||
# improvement: avoid package installations which are already covered by the
|
||||
# `salt-image-builder` (i.e. the pre-salted images that we're using)
|
||||
# rubocop:disable Layout/LineLength
|
||||
gem 'kitchen-docker', git: 'https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker', branch: 'ssf'
|
||||
# rubocop:enable Layout/LineLength
|
||||
|
||||
gem 'kitchen-inspec', '>= 2.5.0'
|
||||
gem 'kitchen-salt', '>= 0.7.2'
|
675
Gemfile.lock
Normal file
675
Gemfile.lock
Normal file
@ -0,0 +1,675 @@
|
||||
GIT
|
||||
remote: https://gitlab.com/saltstack-formulas/infrastructure/inspec
|
||||
revision: aaef842906a5666f0fc0b4f186b4dd3498f5b28c
|
||||
branch: ssf
|
||||
specs:
|
||||
inspec (5.18.15)
|
||||
cookstyle
|
||||
faraday_middleware (>= 0.12.2, < 1.1)
|
||||
inspec-core (= 5.18.15)
|
||||
mongo (= 2.13.2)
|
||||
progress_bar (~> 1.3.3)
|
||||
rake
|
||||
train (~> 3.10)
|
||||
train-aws (~> 0.2)
|
||||
train-habitat (~> 0.1)
|
||||
train-winrm (~> 0.2)
|
||||
inspec-core (5.18.15)
|
||||
addressable (~> 2.4)
|
||||
chef-telemetry (~> 1.0, >= 1.0.8)
|
||||
faraday (>= 0.9.0, < 1.5)
|
||||
faraday_middleware (~> 1.0)
|
||||
hashie (>= 3.4, < 5.0)
|
||||
license-acceptance (>= 0.2.13, < 3.0)
|
||||
method_source (>= 0.8, < 2.0)
|
||||
mixlib-log (~> 3.0)
|
||||
multipart-post (~> 2.0)
|
||||
parallel (~> 1.9)
|
||||
parslet (>= 1.5, < 2.0)
|
||||
pry (~> 0.13)
|
||||
rspec (>= 3.9, <= 3.11)
|
||||
rspec-its (~> 1.2)
|
||||
rubyzip (>= 1.2.2, < 3.0)
|
||||
semverse (~> 3.0)
|
||||
sslshake (~> 1.2)
|
||||
thor (>= 0.20, < 2.0)
|
||||
tomlrb (>= 1.2, < 2.1)
|
||||
train-core (~> 3.10)
|
||||
tty-prompt (~> 0.17)
|
||||
tty-table (~> 0.10)
|
||||
|
||||
GIT
|
||||
remote: https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker
|
||||
revision: 9a09bc1e571e25f3ccabf4725ca2048d970fff82
|
||||
branch: ssf
|
||||
specs:
|
||||
kitchen-docker (2.12.0)
|
||||
test-kitchen (>= 1.0.0)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (7.0.3.1)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
ast (2.4.2)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.607.0)
|
||||
aws-sdk-alexaforbusiness (1.56.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-amplify (1.32.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-apigateway (1.78.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-apigatewayv2 (1.42.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-applicationautoscaling (1.51.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-athena (1.55.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-autoscaling (1.63.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-batch (1.47.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-budgets (1.50.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudformation (1.70.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudfront (1.65.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudhsm (1.39.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudhsmv2 (1.42.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudtrail (1.49.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudwatch (1.64.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudwatchevents (1.46.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cloudwatchlogs (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-codecommit (1.51.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-codedeploy (1.49.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-codepipeline (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cognitoidentity (1.31.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-cognitoidentityprovider (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-configservice (1.79.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-core (3.131.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-costandusagereportservice (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-databasemigrationservice (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-dynamodb (1.75.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ec2 (1.322.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ecr (1.56.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ecrpublic (1.12.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ecs (1.100.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-efs (1.54.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-eks (1.75.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-elasticache (1.78.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-elasticbeanstalk (1.51.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-elasticloadbalancing (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-elasticloadbalancingv2 (1.78.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-elasticsearchservice (1.65.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-emr (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.121.2)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-eventbridge (1.24.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-firehose (1.48.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-glue (1.88.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-guardduty (1.58.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-iam (1.69.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-kafka (1.50.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-kinesis (1.41.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-kms (1.57.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-lambda (1.84.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-mq (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-networkfirewall (1.17.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-networkmanager (1.24.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-organizations (1.59.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ram (1.26.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-rds (1.148.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-redshift (1.84.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-route53 (1.63.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-route53domains (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-route53resolver (1.37.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.114.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sdk-s3control (1.43.0)
|
||||
aws-sdk-core (~> 3, >= 3.122.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-secretsmanager (1.46.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-securityhub (1.67.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-servicecatalog (1.60.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ses (1.41.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-shield (1.48.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-signer (1.32.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-simpledb (1.29.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv2 (~> 1.0)
|
||||
aws-sdk-sms (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-sns (1.53.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-sqs (1.51.1)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-ssm (1.137.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-states (1.39.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-synthetics (1.19.0)
|
||||
aws-sdk-core (~> 3, >= 3.121.2)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-transfer (1.34.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-waf (1.43.0)
|
||||
aws-sdk-core (~> 3, >= 3.122.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv2 (1.1.0)
|
||||
aws-sigv4 (1.5.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
azure_graph_rbac (0.17.2)
|
||||
ms_rest_azure (~> 0.12.0)
|
||||
azure_mgmt_key_vault (0.17.7)
|
||||
ms_rest_azure (~> 0.12.0)
|
||||
azure_mgmt_resources (0.18.2)
|
||||
ms_rest_azure (~> 0.12.0)
|
||||
azure_mgmt_security (0.19.0)
|
||||
ms_rest_azure (~> 0.12.0)
|
||||
azure_mgmt_storage (0.23.0)
|
||||
ms_rest_azure (~> 0.12.0)
|
||||
bcrypt_pbkdf (1.1.0)
|
||||
bson (4.15.0)
|
||||
builder (3.2.4)
|
||||
chef-config (17.10.0)
|
||||
addressable
|
||||
chef-utils (= 17.10.0)
|
||||
fuzzyurl
|
||||
mixlib-config (>= 2.2.12, < 4.0)
|
||||
mixlib-shellout (>= 2.0, < 4.0)
|
||||
tomlrb (~> 1.2)
|
||||
chef-telemetry (1.1.1)
|
||||
chef-config
|
||||
concurrent-ruby (~> 1.0)
|
||||
chef-utils (17.10.0)
|
||||
concurrent-ruby
|
||||
coderay (1.1.3)
|
||||
concurrent-ruby (1.1.10)
|
||||
cookstyle (7.32.1)
|
||||
rubocop (= 1.25.1)
|
||||
declarative (0.0.20)
|
||||
diff-lcs (1.5.0)
|
||||
docker-api (2.2.0)
|
||||
excon (>= 0.47.0)
|
||||
multi_json
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
ed25519 (1.3.0)
|
||||
erubi (1.10.0)
|
||||
excon (0.92.3)
|
||||
faraday (1.4.3)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.1)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday_middleware (1.0.0)
|
||||
faraday (~> 1.0)
|
||||
ffi (1.15.5)
|
||||
fuzzyurl (0.9.0)
|
||||
google-api-client (0.52.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.9)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
rexml
|
||||
signet (~> 0.12)
|
||||
googleauth (0.14.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (~> 0.14)
|
||||
gssapi (1.3.1)
|
||||
ffi (>= 1.0.1)
|
||||
gyoku (1.4.0)
|
||||
builder (>= 2.1.2)
|
||||
rexml (~> 3.0)
|
||||
hashie (4.1.0)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
inifile (3.0.0)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.4.1)
|
||||
kitchen-inspec (2.6.1)
|
||||
hashie (>= 3.4, <= 5.0)
|
||||
inspec (>= 2.2.64, < 7.0)
|
||||
test-kitchen (>= 2.7, < 4)
|
||||
kitchen-salt (0.7.2)
|
||||
hashie (>= 3.5)
|
||||
test-kitchen (>= 1.4)
|
||||
license-acceptance (2.1.13)
|
||||
pastel (~> 0.7)
|
||||
tomlrb (>= 1.2, < 3.0)
|
||||
tty-box (~> 0.6)
|
||||
tty-prompt (~> 0.20)
|
||||
little-plugger (1.1.4)
|
||||
logging (2.3.1)
|
||||
little-plugger (~> 1.1)
|
||||
multi_json (~> 1.14)
|
||||
memoist (0.16.2)
|
||||
method_source (1.0.0)
|
||||
mini_mime (1.1.2)
|
||||
minitest (5.16.2)
|
||||
mixlib-config (3.0.27)
|
||||
tomlrb
|
||||
mixlib-install (3.12.19)
|
||||
mixlib-shellout
|
||||
mixlib-versioning
|
||||
thor
|
||||
mixlib-log (3.0.9)
|
||||
mixlib-shellout (3.2.7)
|
||||
chef-utils
|
||||
mixlib-versioning (1.2.12)
|
||||
mongo (2.13.2)
|
||||
bson (>= 4.8.2, < 5.0.0)
|
||||
ms_rest (0.7.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
faraday (>= 0.9, < 2.0.0)
|
||||
timeliness (~> 0.3.10)
|
||||
ms_rest_azure (0.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
faraday (>= 0.9, < 2.0.0)
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
ms_rest (~> 0.7.6)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.2.3)
|
||||
net-scp (3.0.0)
|
||||
net-ssh (>= 2.6.5, < 7.0.0)
|
||||
net-ssh (6.1.0)
|
||||
net-ssh-gateway (2.0.0)
|
||||
net-ssh (>= 4.0.0)
|
||||
nori (2.6.0)
|
||||
options (2.3.2)
|
||||
os (1.1.4)
|
||||
parallel (1.22.1)
|
||||
parser (3.1.2.0)
|
||||
ast (~> 2.4.1)
|
||||
parslet (1.8.2)
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
progress_bar (1.3.3)
|
||||
highline (>= 1.6, < 3)
|
||||
options (~> 2.3.0)
|
||||
pry (0.14.1)
|
||||
coderay (~> 1.1)
|
||||
method_source (~> 1.0)
|
||||
public_suffix (4.0.7)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
regexp_parser (2.5.0)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rspec (3.11.0)
|
||||
rspec-core (~> 3.11.0)
|
||||
rspec-expectations (~> 3.11.0)
|
||||
rspec-mocks (~> 3.11.0)
|
||||
rspec-core (3.11.0)
|
||||
rspec-support (~> 3.11.0)
|
||||
rspec-expectations (3.11.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.11.0)
|
||||
rspec-its (1.3.0)
|
||||
rspec-core (>= 3.0.0)
|
||||
rspec-expectations (>= 3.0.0)
|
||||
rspec-mocks (3.11.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.11.0)
|
||||
rspec-support (3.11.0)
|
||||
rubocop (1.25.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.1.0.0)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml
|
||||
rubocop-ast (>= 1.15.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 3.0)
|
||||
rubocop-ast (1.19.1)
|
||||
parser (>= 3.1.1.0)
|
||||
ruby-progressbar (1.11.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyntlm (0.6.3)
|
||||
rubyzip (2.3.2)
|
||||
semverse (3.0.2)
|
||||
signet (0.17.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
sslshake (1.3.1)
|
||||
strings (0.2.1)
|
||||
strings-ansi (~> 0.2)
|
||||
unicode-display_width (>= 1.5, < 3.0)
|
||||
unicode_utils (~> 1.4)
|
||||
strings-ansi (0.2.0)
|
||||
test-kitchen (3.3.1)
|
||||
bcrypt_pbkdf (~> 1.0)
|
||||
chef-utils (>= 16.4.35)
|
||||
ed25519 (~> 1.2)
|
||||
license-acceptance (>= 1.0.11, < 3.0)
|
||||
mixlib-install (~> 3.6)
|
||||
mixlib-shellout (>= 1.2, < 4.0)
|
||||
net-scp (>= 1.1, < 4.0)
|
||||
net-ssh (>= 2.9, < 7.0)
|
||||
net-ssh-gateway (>= 1.2, < 3.0)
|
||||
thor (>= 0.19, < 2.0)
|
||||
winrm (~> 2.0)
|
||||
winrm-elevated (~> 1.0)
|
||||
winrm-fs (~> 1.1)
|
||||
thor (1.2.1)
|
||||
timeliness (0.3.10)
|
||||
tomlrb (1.3.0)
|
||||
trailblazer-option (0.1.2)
|
||||
train (3.10.1)
|
||||
activesupport (>= 6.0.3.1)
|
||||
azure_graph_rbac (~> 0.16)
|
||||
azure_mgmt_key_vault (~> 0.17)
|
||||
azure_mgmt_resources (~> 0.15)
|
||||
azure_mgmt_security (~> 0.18)
|
||||
azure_mgmt_storage (~> 0.18)
|
||||
docker-api (>= 1.26, < 3.0)
|
||||
google-api-client (>= 0.23.9, <= 0.52.0)
|
||||
googleauth (>= 0.6.6, <= 0.14.0)
|
||||
inifile (~> 3.0)
|
||||
train-core (= 3.10.1)
|
||||
train-winrm (~> 0.2)
|
||||
train-aws (0.2.24)
|
||||
aws-sdk-alexaforbusiness (~> 1.0)
|
||||
aws-sdk-amplify (~> 1.32.0)
|
||||
aws-sdk-apigateway (~> 1.0)
|
||||
aws-sdk-apigatewayv2 (~> 1.0)
|
||||
aws-sdk-applicationautoscaling (>= 1.46, < 1.52)
|
||||
aws-sdk-athena (~> 1.0)
|
||||
aws-sdk-autoscaling (>= 1.22, < 1.64)
|
||||
aws-sdk-batch (>= 1.36, < 1.48)
|
||||
aws-sdk-budgets (~> 1.0)
|
||||
aws-sdk-cloudformation (~> 1.0)
|
||||
aws-sdk-cloudfront (~> 1.0)
|
||||
aws-sdk-cloudhsm (~> 1.0)
|
||||
aws-sdk-cloudhsmv2 (~> 1.0)
|
||||
aws-sdk-cloudtrail (~> 1.8)
|
||||
aws-sdk-cloudwatch (~> 1.13)
|
||||
aws-sdk-cloudwatchevents (>= 1.36, < 1.47)
|
||||
aws-sdk-cloudwatchlogs (~> 1.13)
|
||||
aws-sdk-codecommit (~> 1.0)
|
||||
aws-sdk-codedeploy (~> 1.0)
|
||||
aws-sdk-codepipeline (~> 1.0)
|
||||
aws-sdk-cognitoidentity (>= 1.26, < 1.32)
|
||||
aws-sdk-cognitoidentityprovider (>= 1.46, < 1.54)
|
||||
aws-sdk-configservice (~> 1.21)
|
||||
aws-sdk-core (~> 3.0)
|
||||
aws-sdk-costandusagereportservice (~> 1.6)
|
||||
aws-sdk-databasemigrationservice (>= 1.42, < 1.54)
|
||||
aws-sdk-dynamodb (~> 1.31)
|
||||
aws-sdk-ec2 (~> 1.70)
|
||||
aws-sdk-ecr (~> 1.18)
|
||||
aws-sdk-ecrpublic (~> 1.3)
|
||||
aws-sdk-ecs (~> 1.30)
|
||||
aws-sdk-efs (~> 1.0)
|
||||
aws-sdk-eks (~> 1.9)
|
||||
aws-sdk-elasticache (~> 1.0)
|
||||
aws-sdk-elasticbeanstalk (~> 1.0)
|
||||
aws-sdk-elasticloadbalancing (~> 1.8)
|
||||
aws-sdk-elasticloadbalancingv2 (~> 1.0)
|
||||
aws-sdk-elasticsearchservice (~> 1.0)
|
||||
aws-sdk-emr (~> 1.53.0)
|
||||
aws-sdk-eventbridge (~> 1.24.0)
|
||||
aws-sdk-firehose (~> 1.0)
|
||||
aws-sdk-glue (>= 1.71, < 1.89)
|
||||
aws-sdk-guardduty (~> 1.31)
|
||||
aws-sdk-iam (~> 1.13)
|
||||
aws-sdk-kafka (~> 1.0)
|
||||
aws-sdk-kinesis (~> 1.0)
|
||||
aws-sdk-kms (~> 1.13)
|
||||
aws-sdk-lambda (~> 1.0)
|
||||
aws-sdk-mq (~> 1.40.0)
|
||||
aws-sdk-networkfirewall (>= 1.6.0)
|
||||
aws-sdk-networkmanager (>= 1.13.0)
|
||||
aws-sdk-organizations (>= 1.17, < 1.60)
|
||||
aws-sdk-ram (>= 1.21, < 1.27)
|
||||
aws-sdk-rds (~> 1.43)
|
||||
aws-sdk-redshift (~> 1.0)
|
||||
aws-sdk-route53 (~> 1.0)
|
||||
aws-sdk-route53domains (~> 1.0)
|
||||
aws-sdk-route53resolver (~> 1.0)
|
||||
aws-sdk-s3 (~> 1.30)
|
||||
aws-sdk-s3control (~> 1.43.0)
|
||||
aws-sdk-secretsmanager (>= 1.42, < 1.47)
|
||||
aws-sdk-securityhub (~> 1.0)
|
||||
aws-sdk-servicecatalog (>= 1.48, < 1.61)
|
||||
aws-sdk-ses (~> 1.41.0)
|
||||
aws-sdk-shield (~> 1.30)
|
||||
aws-sdk-signer (~> 1.32.0)
|
||||
aws-sdk-simpledb (~> 1.29.0)
|
||||
aws-sdk-sms (~> 1.0)
|
||||
aws-sdk-sns (~> 1.9)
|
||||
aws-sdk-sqs (~> 1.10)
|
||||
aws-sdk-ssm (~> 1.0)
|
||||
aws-sdk-states (>= 1.35, < 1.40)
|
||||
aws-sdk-synthetics (~> 1.19.0)
|
||||
aws-sdk-transfer (>= 1.26, < 1.35)
|
||||
aws-sdk-waf (~> 1.43.0)
|
||||
train-core (3.10.1)
|
||||
addressable (~> 2.5)
|
||||
ffi (!= 1.13.0)
|
||||
json (>= 1.8, < 3.0)
|
||||
mixlib-shellout (>= 2.0, < 4.0)
|
||||
net-scp (>= 1.2, < 4.0)
|
||||
net-ssh (>= 2.9, < 7.0)
|
||||
train-habitat (0.2.22)
|
||||
train-winrm (0.2.13)
|
||||
winrm (>= 2.3.6, < 3.0)
|
||||
winrm-elevated (~> 1.2.2)
|
||||
winrm-fs (~> 1.0)
|
||||
tty-box (0.7.0)
|
||||
pastel (~> 0.8)
|
||||
strings (~> 0.2.0)
|
||||
tty-cursor (~> 0.7)
|
||||
tty-color (0.6.0)
|
||||
tty-cursor (0.7.1)
|
||||
tty-prompt (0.23.1)
|
||||
pastel (~> 0.8)
|
||||
tty-reader (~> 0.8)
|
||||
tty-reader (0.9.0)
|
||||
tty-cursor (~> 0.7)
|
||||
tty-screen (~> 0.8)
|
||||
wisper (~> 2.0)
|
||||
tty-screen (0.8.1)
|
||||
tty-table (0.12.0)
|
||||
pastel (~> 0.8)
|
||||
strings (~> 0.2.0)
|
||||
tty-screen (~> 0.8)
|
||||
tzinfo (2.0.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (2.2.0)
|
||||
unicode_utils (1.4.0)
|
||||
winrm (2.3.6)
|
||||
builder (>= 2.1.2)
|
||||
erubi (~> 1.8)
|
||||
gssapi (~> 1.2)
|
||||
gyoku (~> 1.0)
|
||||
httpclient (~> 2.2, >= 2.2.0.2)
|
||||
logging (>= 1.6.1, < 3.0)
|
||||
nori (~> 2.0)
|
||||
rubyntlm (~> 0.6.0, >= 0.6.3)
|
||||
winrm-elevated (1.2.3)
|
||||
erubi (~> 1.8)
|
||||
winrm (~> 2.0)
|
||||
winrm-fs (~> 1.0)
|
||||
winrm-fs (1.3.5)
|
||||
erubi (~> 1.8)
|
||||
logging (>= 1.6.1, < 3.0)
|
||||
rubyzip (~> 2.0)
|
||||
winrm (~> 2.0)
|
||||
wisper (2.0.1)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
inspec!
|
||||
kitchen-docker!
|
||||
kitchen-inspec (>= 2.5.0)
|
||||
kitchen-salt (>= 0.7.2)
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.2
|
52
README.rst
52
README.rst
@ -1,52 +0,0 @@
|
||||
postfix-formula
|
||||
===============
|
||||
|
||||
Formulas to set up and configure the Postfix mail transfer agent.
|
||||
|
||||
.. note::
|
||||
|
||||
See the full `Salt Formulas installation and usage instructions
|
||||
<http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
|
||||
|
||||
Available states
|
||||
================
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
|
||||
``postfix``
|
||||
-----------
|
||||
|
||||
Installs and starts postfix SMTP server
|
||||
|
||||
``postfix.config``
|
||||
------------------
|
||||
|
||||
Manages postfix main.cf configuration file
|
||||
|
||||
``postfix.policyd-spf``
|
||||
------------------
|
||||
|
||||
Installs and configures policyd-spf
|
||||
|
||||
``postfix.postgrey``
|
||||
------------------
|
||||
|
||||
Installs and starts Postgrey service
|
||||
|
||||
``postfix.mysql``
|
||||
------------------
|
||||
|
||||
Installs postfix mysql package ( Debian only)
|
||||
|
||||
``postfix.pcre``
|
||||
------------------
|
||||
|
||||
Installs postfix pcre package ( Debian only)
|
||||
|
||||
|
||||
``postfix.postsrsd``
|
||||
------------------
|
||||
|
||||
Installs postfix postsrsd package
|
16
bin/install-hooks
Executable file
16
bin/install-hooks
Executable file
@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env sh
|
||||
set -o nounset # Treat unset variables as an error and immediately exit
|
||||
set -o errexit # If a command fails exit the whole script
|
||||
|
||||
if [ "${DEBUG:-false}" = "true" ]; then
|
||||
set -x # Run the entire script in debug mode
|
||||
fi
|
||||
|
||||
if ! command -v pre-commit >/dev/null 2>&1; then
|
||||
echo "pre-commit not found: please install or check your PATH" >&2
|
||||
echo "See https://pre-commit.com/#installation" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pre-commit install --install-hooks
|
||||
pre-commit install --hook-type commit-msg --install-hooks
|
32
bin/kitchen
Executable file
32
bin/kitchen
Executable file
@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
#
|
||||
# This file was generated by Bundler.
|
||||
#
|
||||
# The application 'kitchen' is installed as part of a gem, and
|
||||
# this file is here to facilitate running it.
|
||||
#
|
||||
|
||||
require 'pathname'
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
|
||||
Pathname.new(__FILE__).realpath)
|
||||
|
||||
bundle_binstub = File.expand_path('bundle', __dir__)
|
||||
|
||||
if File.file?(bundle_binstub)
|
||||
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
||||
load(bundle_binstub)
|
||||
else
|
||||
abort(
|
||||
'Your `bin/bundle` was not generated by Bundler, ' \
|
||||
'so this binstub cannot run. Replace `bin/bundle` by running ' \
|
||||
'`bundle binstubs bundler --force`, then run this command again.'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
require 'rubygems'
|
||||
require 'bundler/setup'
|
||||
|
||||
load Gem.bin_path('test-kitchen', 'kitchen')
|
8
commitlint.config.js
Normal file
8
commitlint.config.js
Normal file
@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
rules: {
|
||||
'body-max-line-length': [2, 'always', 120],
|
||||
'footer-max-line-length': [2, 'always', 120],
|
||||
'header-max-length': [2, 'always', 72],
|
||||
},
|
||||
};
|
134
docs/AUTHORS.rst
Normal file
134
docs/AUTHORS.rst
Normal file
@ -0,0 +1,134 @@
|
||||
.. role:: raw-html-m2r(raw)
|
||||
:format: html
|
||||
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
This list is sorted by the number of commits per contributor in *descending* order.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Avatar
|
||||
- Contributor
|
||||
- Contributions
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/10231489?v=4' width='36' height='36' alt='@myii'>`
|
||||
- `@myii <https://github.com/myii>`_
|
||||
- 122
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/745513?v=4' width='36' height='36' alt='@EvaSDK'>`
|
||||
- `@EvaSDK <https://github.com/EvaSDK>`_
|
||||
- 26
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1800660?v=4' width='36' height='36' alt='@aboe76'>`
|
||||
- `@aboe76 <https://github.com/aboe76>`_
|
||||
- 23
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/242396?v=4' width='36' height='36' alt='@javierbertoli'>`
|
||||
- `@javierbertoli <https://github.com/javierbertoli>`_
|
||||
- 16
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3374962?v=4' width='36' height='36' alt='@nmadhok'>`
|
||||
- `@nmadhok <https://github.com/nmadhok>`_
|
||||
- 14
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1920805?v=4' width='36' height='36' alt='@alxwr'>`
|
||||
- `@alxwr <https://github.com/alxwr>`_
|
||||
- 12
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1396878?v=4' width='36' height='36' alt='@gravyboat'>`
|
||||
- `@gravyboat <https://github.com/gravyboat>`_
|
||||
- 10
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/18299?v=4' width='36' height='36' alt='@davidkarlsen'>`
|
||||
- `@davidkarlsen <https://github.com/davidkarlsen>`_
|
||||
- 10
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/214768?v=4' width='36' height='36' alt='@ixs'>`
|
||||
- `@ixs <https://github.com/ixs>`_
|
||||
- 9
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/6215293?v=4' width='36' height='36' alt='@0xf10e'>`
|
||||
- `@0xf10e <https://github.com/0xf10e>`_
|
||||
- 9
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/94157?v=4' width='36' height='36' alt='@imran1008'>`
|
||||
- `@imran1008 <https://github.com/imran1008>`_
|
||||
- 8
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/528061?v=4' width='36' height='36' alt='@puneetk'>`
|
||||
- `@puneetk <https://github.com/puneetk>`_
|
||||
- 7
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1197993?v=4' width='36' height='36' alt='@danoe'>`
|
||||
- `@danoe <https://github.com/danoe>`_
|
||||
- 6
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/4195158?v=4' width='36' height='36' alt='@dafyddj'>`
|
||||
- `@dafyddj <https://github.com/dafyddj>`_
|
||||
- 4
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/13322818?v=4' width='36' height='36' alt='@noelmcloughlin'>`
|
||||
- `@noelmcloughlin <https://github.com/noelmcloughlin>`_
|
||||
- 4
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/507599?v=4' width='36' height='36' alt='@thatch45'>`
|
||||
- `@thatch45 <https://github.com/thatch45>`_
|
||||
- 3
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/732321?v=4' width='36' height='36' alt='@gtmanfred'>`
|
||||
- `@gtmanfred <https://github.com/gtmanfred>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3768412?v=4' width='36' height='36' alt='@stp-ip'>`
|
||||
- `@stp-ip <https://github.com/stp-ip>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/91293?v=4' width='36' height='36' alt='@whiteinge'>`
|
||||
- `@whiteinge <https://github.com/whiteinge>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/131665?v=4' width='36' height='36' alt='@iamseth'>`
|
||||
- `@iamseth <https://github.com/iamseth>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/4156131?v=4' width='36' height='36' alt='@skylerberg'>`
|
||||
- `@skylerberg <https://github.com/skylerberg>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/117961?v=4' width='36' height='36' alt='@babilen'>`
|
||||
- `@babilen <https://github.com/babilen>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3180588?v=4' width='36' height='36' alt='@jeroen92'>`
|
||||
- `@jeroen92 <https://github.com/jeroen92>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/52996?v=4' width='36' height='36' alt='@daks'>`
|
||||
- `@daks <https://github.com/daks>`_
|
||||
- 2
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/762280?v=4' width='36' height='36' alt='@asenci'>`
|
||||
- `@asenci <https://github.com/asenci>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/8599847?v=4' width='36' height='36' alt='@campbellmc'>`
|
||||
- `@campbellmc <https://github.com/campbellmc>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1233212?v=4' width='36' height='36' alt='@baby-gnu'>`
|
||||
- `@baby-gnu <https://github.com/baby-gnu>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1654592?v=4' width='36' height='36' alt='@feiming'>`
|
||||
- `@feiming <https://github.com/feiming>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/56635?v=4' width='36' height='36' alt='@pprkut'>`
|
||||
- `@pprkut <https://github.com/pprkut>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/12465797?v=4' width='36' height='36' alt='@hoonetorg'>`
|
||||
- `@hoonetorg <https://github.com/hoonetorg>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/287147?v=4' width='36' height='36' alt='@techhat'>`
|
||||
- `@techhat <https://github.com/techhat>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/611471?v=4' width='36' height='36' alt='@duk3luk3'>`
|
||||
- `@duk3luk3 <https://github.com/duk3luk3>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/924183?v=4' width='36' height='36' alt='@mschiff'>`
|
||||
- `@mschiff <https://github.com/mschiff>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/6086064?v=4' width='36' height='36' alt='@mgomersbach'>`
|
||||
- `@mgomersbach <https://github.com/mgomersbach>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/3433835?v=4' width='36' height='36' alt='@n-rodriguez'>`
|
||||
- `@n-rodriguez <https://github.com/n-rodriguez>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/1013915?v=4' width='36' height='36' alt='@rhertzog'>`
|
||||
- `@rhertzog <https://github.com/rhertzog>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/5825186?v=4' width='36' height='36' alt='@kti-richard'>`
|
||||
- `@kti-richard <https://github.com/kti-richard>`_
|
||||
- 1
|
||||
* - :raw-html-m2r:`<img class='float-left rounded-1' src='https://avatars.githubusercontent.com/u/21147643?v=4' width='36' height='36' alt='@vquiering'>`
|
||||
- `@vquiering <https://github.com/vquiering>`_
|
||||
- 1
|
||||
|
||||
|
||||
----
|
||||
|
||||
Auto-generated by a `forked version <https://github.com/myii/maintainer>`_ of `gaocegege/maintainer <https://github.com/gaocegege/maintainer>`_ on 2022-02-13.
|
306
docs/CHANGELOG.rst
Normal file
306
docs/CHANGELOG.rst
Normal file
@ -0,0 +1,306 @@
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
`2.0.2 <https://github.com/saltstack-formulas/postfix-formula/compare/v2.0.1...v2.0.2>`_ (2022-02-13)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Code Refactoring
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **salt-lint:** fix violations (\ `6a33d98 <https://github.com/saltstack-formulas/postfix-formula/commit/6a33d98d75b7cbce3fa735f9e2c4071da0ce0355>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* update linters to latest versions [skip ci] (\ `62eb687 <https://github.com/saltstack-formulas/postfix-formula/commit/62eb687b052a31bc395f53dd9c8259ff643b449e>`_\ )
|
||||
* **gemfile:** allow rubygems proxy to be provided as an env var [skip ci] (\ `5d167a4 <https://github.com/saltstack-formulas/postfix-formula/commit/5d167a403c253e3b9f6c68641e0b871d287d2662>`_\ )
|
||||
* **kitchen+gitlab:** update for new pre-salted images [skip ci] (\ `008ac83 <https://github.com/saltstack-formulas/postfix-formula/commit/008ac83c7a95dc1d29ee388f0d634ff3bd9b0320>`_\ )
|
||||
|
||||
`2.0.1 <https://github.com/saltstack-formulas/postfix-formula/compare/v2.0.0...v2.0.1>`_ (2022-01-25)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **config:** set default_database_type; fixes `#118 <https://github.com/saltstack-formulas/postfix-formula/issues/118>`_ (\ `3bd3d1c <https://github.com/saltstack-formulas/postfix-formula/commit/3bd3d1c74e6dd60a984a3f790b8c50fa46ea2ed6>`_\ )
|
||||
|
||||
Code Refactoring
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **config:** add ``default_database_type`` as default value (\ `6da70d2 <https://github.com/saltstack-formulas/postfix-formula/commit/6da70d21bbfbf613e6f0149c757c5e628ef227fb>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **3003.1:** update inc. AlmaLinux, Rocky & ``rst-lint`` [skip ci] (\ `3284d38 <https://github.com/saltstack-formulas/postfix-formula/commit/3284d38a367d94ef57c57e88dd6698c88b0affd2>`_\ )
|
||||
* **gemfile+lock:** use ``ssf`` customised ``inspec`` repo [skip ci] (\ `cfed974 <https://github.com/saltstack-formulas/postfix-formula/commit/cfed97400047b109a765d5cee95667f6ca1c1fd2>`_\ )
|
||||
* **kitchen:** move ``provisioner`` block & update ``run_command`` [skip ci] (\ `31a3836 <https://github.com/saltstack-formulas/postfix-formula/commit/31a3836cd63f09d81ad88f510b61cb831436759c>`_\ )
|
||||
* **kitchen+ci:** update with ``3004`` pre-salted images/boxes [skip ci] (\ `dec042a <https://github.com/saltstack-formulas/postfix-formula/commit/dec042aa43e71785bc49247002a16d82af8c1531>`_\ )
|
||||
* **kitchen+ci:** update with latest ``3003.2`` pre-salted images [skip ci] (\ `9688f36 <https://github.com/saltstack-formulas/postfix-formula/commit/9688f36aa146d584546da71fa89e04525c08aa42>`_\ )
|
||||
* **kitchen+ci:** update with latest CVE pre-salted images [skip ci] (\ `76134b4 <https://github.com/saltstack-formulas/postfix-formula/commit/76134b47c70d98d00dfe1e6d0f3c9cc0095bda69>`_\ )
|
||||
* add ``arch-master`` to matrix and update ``.travis.yml`` [skip ci] (\ `c631eca <https://github.com/saltstack-formulas/postfix-formula/commit/c631eca02e2c1c03e38bcd179c9b443c22ce706d>`_\ )
|
||||
* add Debian 11 Bullseye & update ``yamllint`` configuration [skip ci] (\ `c11c07d <https://github.com/saltstack-formulas/postfix-formula/commit/c11c07d6a664da11f11c22ddd416d0501a2cb07e>`_\ )
|
||||
* **kitchen+gitlab:** adjust matrix to add ``3003`` [skip ci] (\ `04564a7 <https://github.com/saltstack-formulas/postfix-formula/commit/04564a7ad6c803f70cfa487acd92dd1197563469>`_\ )
|
||||
* **kitchen+gitlab:** remove Ubuntu 16.04 & Fedora 32 (EOL) [skip ci] (\ `d56006f <https://github.com/saltstack-formulas/postfix-formula/commit/d56006f8d2dac568c06c4e1e83b076acfe49a80c>`_\ )
|
||||
|
||||
Tests
|
||||
^^^^^
|
||||
|
||||
|
||||
* standardise use of ``share`` suite & ``_mapdata`` state [skip ci] (\ `4c394a7 <https://github.com/saltstack-formulas/postfix-formula/commit/4c394a76faea4301df4708854edd39d37a13935d>`_\ )
|
||||
|
||||
`2.0.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.2...v2.0.0>`_ (2021-03-15)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **resources:** make resources' IDs unique (\ `03ad48b <https://github.com/saltstack-formulas/postfix-formula/commit/03ad48b8a4b0b05144d449c9caee998ad6d0628f>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **commitlint:** ensure ``upstream/master`` uses main repo URL [skip ci] (\ `381b150 <https://github.com/saltstack-formulas/postfix-formula/commit/381b150b0f1d0ab41e60f0ac95a7a6163633d701>`_\ )
|
||||
* **gemfile+lock:** use ``ssf`` customised ``kitchen-docker`` repo [skip ci] (\ `c5851e6 <https://github.com/saltstack-formulas/postfix-formula/commit/c5851e67a2125c5367b3ab97b46c6407aa66eaf1>`_\ )
|
||||
* **gitlab-ci:** add ``rubocop`` linter (with ``allow_failure``\ ) [skip ci] (\ `22fa184 <https://github.com/saltstack-formulas/postfix-formula/commit/22fa184b14e88a05d4c4284c459a7d887501e404>`_\ )
|
||||
* **gitlab-ci:** use GitLab CI as Travis CI replacement (\ `890f3ae <https://github.com/saltstack-formulas/postfix-formula/commit/890f3aebc63484d07f887c870f2825797ba504e9>`_\ )
|
||||
* **kitchen+ci:** use latest pre-salted images (after CVE) [skip ci] (\ `19617a0 <https://github.com/saltstack-formulas/postfix-formula/commit/19617a0ad710914c8f4439044d7bf993e1effcc8>`_\ )
|
||||
* **kitchen+gitlab-ci:** use latest pre-salted images [skip ci] (\ `d65a7a3 <https://github.com/saltstack-formulas/postfix-formula/commit/d65a7a36c28e3881b058e9c5b898a0f39c5e1ca7>`_\ )
|
||||
* **pre-commit:** add to formula [skip ci] (\ `f41392d <https://github.com/saltstack-formulas/postfix-formula/commit/f41392d4504cb60b2fcf2c818cfe97f5487e2844>`_\ )
|
||||
* **pre-commit:** enable/disable ``rstcheck`` as relevant [skip ci] (\ `fb5be95 <https://github.com/saltstack-formulas/postfix-formula/commit/fb5be9504ec18c86bab4f387bf62ba816b3ffa64>`_\ )
|
||||
* **pre-commit:** finalise ``rstcheck`` configuration [skip ci] (\ `75941ed <https://github.com/saltstack-formulas/postfix-formula/commit/75941ed61443c84c27fea864d0529461564d8969>`_\ )
|
||||
* **pre-commit:** update hook for ``rubocop`` [skip ci] (\ `c60d58e <https://github.com/saltstack-formulas/postfix-formula/commit/c60d58eb1168c031c12d656c9605f83afebc9fa1>`_\ )
|
||||
|
||||
BREAKING CHANGES
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **resources:** as all resources' IDs changed, other formulas
|
||||
depending on this formula's resources will need to be modified
|
||||
accordingly.
|
||||
|
||||
`1.2.2 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.1...v1.2.2>`_ (2020-10-02)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Styles
|
||||
^^^^^^
|
||||
|
||||
|
||||
* prepend modes with 0 (\ `fdc127c <https://github.com/saltstack-formulas/postfix-formula/commit/fdc127c8db7b19fac9be907ca511b17d5f5c4be0>`_\ )
|
||||
* quote modes/numbers (\ `b9c4fba <https://github.com/saltstack-formulas/postfix-formula/commit/b9c4fbadaf164c1589a27af45fbde7092e6a1d8a>`_\ )
|
||||
|
||||
`1.2.1 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.2.0...v1.2.1>`_ (2020-09-27)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Styles
|
||||
^^^^^^
|
||||
|
||||
|
||||
* linting for ``yamllint`` (\ `780dc9d <https://github.com/saltstack-formulas/postfix-formula/commit/780dc9d372328f0b7ae08425abf1e1f32ed4b49e>`_\ )
|
||||
|
||||
`1.2.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.1.0...v1.2.0>`_ (2020-07-20)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
|
||||
* **maps:** add more map types and tests (\ `e3970df <https://github.com/saltstack-formulas/postfix-formula/commit/e3970dfc3eac57b7a4f8911ef48d8652f3a26cd7>`_\ )
|
||||
|
||||
`1.1.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.3...v1.1.0>`_ (2020-07-18)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **kitchen:** use ``saltimages`` Docker Hub where available [skip ci] (\ `2ddd417 <https://github.com/saltstack-formulas/postfix-formula/commit/2ddd417039d8cb6f8241036c60ee0e6d534aab00>`_\ )
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
|
||||
* **config:** run postmap also for regexp maps (\ `7584fce <https://github.com/saltstack-formulas/postfix-formula/commit/7584fce0aff912b3aeaf44e6eed82a4c9c267535>`_\ )
|
||||
|
||||
`1.0.3 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.2...v1.0.3>`_ (2020-06-08)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **deps:** fixes ordering where postmap requires sane main.cf (\ `a28bd05 <https://github.com/saltstack-formulas/postfix-formula/commit/a28bd05b852c309e70aa8ff0491c12271ddd4461>`_\ )
|
||||
* **test:** use specific ip to workaround centos bug (\ `273caf9 <https://github.com/saltstack-formulas/postfix-formula/commit/273caf9b6f42a4127025f9d2d862806653b661c2>`_\ )
|
||||
|
||||
Tests
|
||||
^^^^^
|
||||
|
||||
|
||||
* **default:** add inspec for base and maps (\ `2a61498 <https://github.com/saltstack-formulas/postfix-formula/commit/2a61498fa440b2eef26849c2b0bc2dadf27b2dee>`_\ )
|
||||
|
||||
`1.0.2 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.1...v1.0.2>`_ (2020-06-07)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **opensuse:** fixes config files generation in opensuse (\ `067bcf6 <https://github.com/saltstack-formulas/postfix-formula/commit/067bcf636face6b3a3cb40418758641354ac2402>`_\ )
|
||||
|
||||
`1.0.1 <https://github.com/saltstack-formulas/postfix-formula/compare/v1.0.0...v1.0.1>`_ (2020-06-07)
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **main:** fix postconf warning when reloading/starting (\ `04003c6 <https://github.com/saltstack-formulas/postfix-formula/commit/04003c6ee33d5699cc392f7e74f81d27547b5f6e>`_\ )
|
||||
|
||||
`1.0.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.19.0...v1.0.0>`_ (2020-06-06)
|
||||
----------------------------------------------------------------------------------------------------------
|
||||
|
||||
Code Refactoring
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **maps:** move tls_policy and transport to mapping section (\ `06276fd <https://github.com/saltstack-formulas/postfix-formula/commit/06276fd7431e1675795be95c0c8ebb01772ea740>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **kitchen+travis:** use latest pre-salted images (\ `b364744 <https://github.com/saltstack-formulas/postfix-formula/commit/b364744e40b484397fea5c2c1767f77728649de8>`_\ )
|
||||
|
||||
BREAKING CHANGES
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **maps:** ``transport`` and ``tls_policy`` keys in ``postfix:config`` have been moved to the standard ``postfix:mapping``.
|
||||
|
||||
`0.19.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.2...v0.19.0>`_ (2020-05-23)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **travis:** add notifications => zulip [skip ci] (\ `c78c421 <https://github.com/saltstack-formulas/postfix-formula/commit/c78c4219846f8c384623da7dd74d4e9a5e419b74>`_\ )
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
|
||||
* **maps:** adds tls_policy map for smtp delivery (\ `d87da4a <https://github.com/saltstack-formulas/postfix-formula/commit/d87da4adc49d18674f35e40a948ad88fefaf26f6>`_\ )
|
||||
|
||||
`0.18.2 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.1...v0.18.2>`_ (2020-05-12)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* make necessary modifications to get working on ``salt-ssh`` (\ `34a112f <https://github.com/saltstack-formulas/postfix-formula/commit/34a112faabba46d95b102afa3add5b797dda2ce1>`_\ ), closes `/freenode.logbot.info/saltstack-formulas/20200507#c3819526-c3819581 <https://github.com//freenode.logbot.info/saltstack-formulas/20200507/issues/c3819526-c3819581>`_ `/freenode.logbot.info/saltstack-formulas/20200508#c3826763-c3826995 <https://github.com//freenode.logbot.info/saltstack-formulas/20200508/issues/c3826763-c3826995>`_
|
||||
* **release.config.js:** use full commit hash in commit link [skip ci] (\ `ffbe5aa <https://github.com/saltstack-formulas/postfix-formula/commit/ffbe5aad13e73a4e3aa1c6dbd24488ebd73436ee>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **gemfile:** restrict ``train`` gem version until upstream fix [skip ci] (\ `80cdd9d <https://github.com/saltstack-formulas/postfix-formula/commit/80cdd9d202b6dbbc43aa02025bb7d9738aad8ee7>`_\ )
|
||||
* **gemfile.lock:** add to repo with updated ``Gemfile`` [skip ci] (\ `497221d <https://github.com/saltstack-formulas/postfix-formula/commit/497221d1de7356cb031f78597781fa05897ca0a9>`_\ )
|
||||
* **kitchen:** avoid using bootstrap for ``master`` instances [skip ci] (\ `708b0a5 <https://github.com/saltstack-formulas/postfix-formula/commit/708b0a51d9378ef44c0df125f532deea44f07044>`_\ )
|
||||
* **kitchen:** use ``debian-10-master-py3`` instead of ``develop`` [skip ci] (\ `90098c0 <https://github.com/saltstack-formulas/postfix-formula/commit/90098c0cdfa856f9e3ca7772e8fb52e014d70d55>`_\ )
|
||||
* **kitchen:** use ``develop`` image until ``master`` is ready (\ ``amazonlinux``\ ) [skip ci] (\ `df76c72 <https://github.com/saltstack-formulas/postfix-formula/commit/df76c72dcee4ff87f104b13880ddc32b163e2db6>`_\ )
|
||||
* **kitchen+travis:** remove ``master-py2-arch-base-latest`` [skip ci] (\ `46d0f3d <https://github.com/saltstack-formulas/postfix-formula/commit/46d0f3d1d8b9b7373068c9182a593c8ed96e1bcd>`_\ )
|
||||
* **kitchen+travis:** upgrade matrix after ``2019.2.2`` release [skip ci] (\ `70fc491 <https://github.com/saltstack-formulas/postfix-formula/commit/70fc49122ed6213a4e93fc5280bf5744af969f86>`_\ )
|
||||
* **travis:** apply changes from build config validation [skip ci] (\ `f25db2d <https://github.com/saltstack-formulas/postfix-formula/commit/f25db2d5f3c2394e29f36cf33d2166c5af73fa40>`_\ )
|
||||
* **travis:** opt-in to ``dpl v2`` to complete build config validation [skip ci] (\ `8f4db70 <https://github.com/saltstack-formulas/postfix-formula/commit/8f4db70ece851dea547550cfabb4b770eaf0796b>`_\ )
|
||||
* **travis:** quote pathspecs used with ``git ls-files`` [skip ci] (\ `6d18d1d <https://github.com/saltstack-formulas/postfix-formula/commit/6d18d1dc93c92c4ba85f340c541d3a69f557d74e>`_\ )
|
||||
* **travis:** run ``shellcheck`` during lint job [skip ci] (\ `29efb81 <https://github.com/saltstack-formulas/postfix-formula/commit/29efb819fc9d4bf273b57c15d01dfb390642b3d5>`_\ )
|
||||
* **travis:** update ``salt-lint`` config for ``v0.0.10`` [skip ci] (\ `b23168e <https://github.com/saltstack-formulas/postfix-formula/commit/b23168e69ec8823ad9382b6c9c3be8f743d3b8e3>`_\ )
|
||||
* **travis:** use ``major.minor`` for ``semantic-release`` version [skip ci] (\ `964e3ef <https://github.com/saltstack-formulas/postfix-formula/commit/964e3ef0fa6613380c56b1b2044e6f37dd797c6c>`_\ )
|
||||
* **travis:** use build config validation (beta) [skip ci] (\ `1ab8692 <https://github.com/saltstack-formulas/postfix-formula/commit/1ab8692f31bdfcf5a24d7049c254d1b71d090e21>`_\ )
|
||||
* **workflows/commitlint:** add to repo [skip ci] (\ `43a7353 <https://github.com/saltstack-formulas/postfix-formula/commit/43a7353caec2908e1d6aabab11c198c1806412f5>`_\ )
|
||||
|
||||
Documentation
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **contributing:** remove to use org-level file instead [skip ci] (\ `a33757a <https://github.com/saltstack-formulas/postfix-formula/commit/a33757a6ad445fc7e209f32c6ceb5b2309e11d03>`_\ )
|
||||
* **readme:** update link to ``CONTRIBUTING`` [skip ci] (\ `50b9808 <https://github.com/saltstack-formulas/postfix-formula/commit/50b9808a3bd094de30439ff788b6f58ea72051ba>`_\ )
|
||||
|
||||
Performance Improvements
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **travis:** improve ``salt-lint`` invocation [skip ci] (\ `2ece69c <https://github.com/saltstack-formulas/postfix-formula/commit/2ece69c3c12ffd9696a5836bf3ed7992af58e8ab>`_\ )
|
||||
|
||||
`0.18.1 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.18.0...v0.18.1>`_ (2019-10-11)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **rubocop:** add fixes using ``rubocop --safe-auto-correct`` (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/87dd217>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **kitchen:** change ``log_level`` to ``debug`` instead of ``info`` (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/17734cb>`_\ )
|
||||
* **kitchen:** install required packages to bootstrapped ``opensuse`` [skip ci] (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/5127bee>`_\ )
|
||||
* **kitchen:** use bootstrapped ``opensuse`` images until ``2019.2.2`` [skip ci] (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/79df4ce>`_\ )
|
||||
* **platform:** add ``arch-base-latest`` (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/16e6f58>`_\ )
|
||||
* merge travis matrix, add ``salt-lint`` & ``rubocop`` to ``lint`` job (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/0c0a228>`_\ )
|
||||
* merge travis matrix, add ``salt-lint`` & ``rubocop`` to ``lint`` job (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/1ec88a4>`_\ )
|
||||
* use ``dist: bionic`` & apply ``opensuse-leap-15`` SCP error workaround (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/bbbc260>`_\ )
|
||||
* **travis:** merge ``rubocop`` linter into main ``lint`` job (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/508074a>`_\ )
|
||||
* **yamllint:** add rule ``empty-values`` & use new ``yaml-files`` setting (\ ` <https://github.com/saltstack-formulas/postfix-formula/commit/c9a4fc7>`_\ )
|
||||
|
||||
`0.18.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.17.1...v0.18.0>`_ (2019-09-01)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **kitchen+travis:** replace EOL pre-salted images (\ `8996d28 <https://github.com/saltstack-formulas/postfix-formula/commit/8996d28>`_\ )
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
|
||||
* **yamllint:** include for this repo and apply rules throughout (\ `b4fbac2 <https://github.com/saltstack-formulas/postfix-formula/commit/b4fbac2>`_\ )
|
||||
|
||||
`0.17.1 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.17.0...v0.17.1>`_ (2019-07-26)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Bug Fixes
|
||||
^^^^^^^^^
|
||||
|
||||
|
||||
* **service:** restart service on package change (\ `75358e0 <https://github.com/saltstack-formulas/postfix-formula/commit/75358e0>`_\ )
|
||||
|
||||
Continuous Integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
* **kitchen+travis:** modify matrix to include ``develop`` platform (\ `b505a5d <https://github.com/saltstack-formulas/postfix-formula/commit/b505a5d>`_\ )
|
||||
|
||||
`0.17.0 <https://github.com/saltstack-formulas/postfix-formula/compare/v0.16.0...v0.17.0>`_ (2019-06-03)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Features
|
||||
^^^^^^^^
|
||||
|
||||
|
||||
* **semantic-release:** implement an automated changelog (\ `3161504 <https://github.com/saltstack-formulas/postfix-formula/commit/3161504>`_\ )
|
128
docs/README.rst
Normal file
128
docs/README.rst
Normal file
@ -0,0 +1,128 @@
|
||||
.. _readme:
|
||||
|
||||
postfix-formula
|
||||
===============
|
||||
|
||||
|img_travis| |img_sr|
|
||||
|
||||
.. |img_travis| image:: https://travis-ci.com/saltstack-formulas/postfix-formula.svg?branch=master
|
||||
:alt: Travis CI Build Status
|
||||
:scale: 100%
|
||||
:target: https://travis-ci.com/saltstack-formulas/postfix-formula
|
||||
.. |img_sr| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
:alt: Semantic Release
|
||||
:scale: 100%
|
||||
:target: https://github.com/semantic-release/semantic-release
|
||||
|
||||
A SaltStack formula to install and configure Postfix mail server.
|
||||
|
||||
.. contents:: **Table of Contents**
|
||||
|
||||
General notes
|
||||
-------------
|
||||
|
||||
See the full `SaltStack Formulas installation and usage instructions
|
||||
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
|
||||
|
||||
If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section
|
||||
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#writing-formulas>`_.
|
||||
|
||||
If you want to use this formula, please pay attention to the ``FORMULA`` file and/or ``git tag``,
|
||||
which contains the currently released version. This formula is versioned according to `Semantic Versioning <http://semver.org/>`_.
|
||||
|
||||
See `Formula Versioning Section <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#versioning>`_ for more details.
|
||||
|
||||
Contributing to this repo
|
||||
-------------------------
|
||||
|
||||
**Commit message formatting is significant!!**
|
||||
|
||||
Please see `How to contribute <https://github.com/saltstack-formulas/.github/blob/master/CONTRIBUTING.rst>`_ for more details.
|
||||
|
||||
Available states
|
||||
----------------
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
``postfix``
|
||||
^^^^^^^^^^^
|
||||
|
||||
Installs and starts postfix SMTP server
|
||||
|
||||
``postfix.config``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Manages postfix main.cf and optionally the master.cf configuration file. Generates mappings.
|
||||
|
||||
``postfix.policyd-spf``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Installs and configures policyd-spf
|
||||
|
||||
``postfix.postgrey``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Installs and starts Postgrey service
|
||||
|
||||
``postfix.mysql``
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Installs postfix mysql package ( Debian only)
|
||||
|
||||
``postfix.pcre``
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Installs postfix pcre package ( Debian only)
|
||||
|
||||
``postfix.postsrsd``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Installs postfix postsrsd package
|
||||
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
Linux testing is done with ``kitchen-salt``.
|
||||
|
||||
Requirements
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Ruby
|
||||
* Docker
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ gem install bundler
|
||||
$ bundle install
|
||||
$ bin/kitchen test [platform]
|
||||
|
||||
Where ``[platform]`` is the platform name defined in ``kitchen.yml``,
|
||||
e.g. ``debian-9-2019-2-py3``.
|
||||
|
||||
``bin/kitchen converge``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Creates the docker instance and runs the main state(s), ready for testing.
|
||||
|
||||
``bin/kitchen verify``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Runs the ``inspec`` tests on the actual instance.
|
||||
|
||||
``bin/kitchen destroy``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Removes the docker instance.
|
||||
|
||||
``bin/kitchen test``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``.
|
||||
|
||||
``bin/kitchen login``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Gives you SSH access to the instance for manual testing.
|
||||
|
287
kitchen.yml
Normal file
287
kitchen.yml
Normal file
@ -0,0 +1,287 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
# For help on this file's format, see https://kitchen.ci/
|
||||
driver:
|
||||
name: docker
|
||||
use_sudo: false
|
||||
privileged: true
|
||||
run_command: /usr/lib/systemd/systemd
|
||||
|
||||
provisioner:
|
||||
name: salt_solo
|
||||
log_level: debug
|
||||
salt_install: none
|
||||
require_chef: false
|
||||
formula: postfix
|
||||
salt_copy_filter:
|
||||
- .kitchen
|
||||
- .git
|
||||
|
||||
platforms:
|
||||
## SALT `tiamat`
|
||||
- name: debian-11-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:debian-11
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-10-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:debian-10
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-9-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:debian-9
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2204-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:ubuntu-22.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2004-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:ubuntu-20.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-1804-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:ubuntu-18.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: centos-stream8-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:centos-stream8
|
||||
- name: centos-7-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:centos-7
|
||||
- name: amazonlinux-2-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:amazonlinux-2
|
||||
- name: oraclelinux-8-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:oraclelinux-8
|
||||
- name: oraclelinux-7-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:oraclelinux-7
|
||||
- name: almalinux-8-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:almalinux-8
|
||||
- name: rockylinux-8-tiamat-py3
|
||||
driver:
|
||||
image: saltimages/salt-tiamat-py3:rockylinux-8
|
||||
|
||||
## SALT `master`
|
||||
- name: debian-11-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:debian-11
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-10-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:debian-10
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-9-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:debian-9
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2204-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:ubuntu-22.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2004-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:ubuntu-20.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-1804-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:ubuntu-18.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: centos-stream8-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:centos-stream8
|
||||
- name: centos-7-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:centos-7
|
||||
- name: fedora-36-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:fedora-36
|
||||
- name: fedora-35-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:fedora-35
|
||||
- name: opensuse-leap-153-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:opensuse-leap-15.3
|
||||
# Workaround to avoid intermittent failures on `opensuse-leap-15.3`:
|
||||
# => SCP did not finish successfully (255): (Net::SCP::Error)
|
||||
transport:
|
||||
max_ssh_sessions: 1
|
||||
- name: opensuse-tmbl-latest-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:opensuse-tumbleweed-latest
|
||||
# Workaround to avoid intermittent failures on `opensuse-tumbleweed`:
|
||||
# => SCP did not finish successfully (255): (Net::SCP::Error)
|
||||
transport:
|
||||
max_ssh_sessions: 1
|
||||
- name: amazonlinux-2-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:amazonlinux-2
|
||||
- name: oraclelinux-8-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:oraclelinux-8
|
||||
- name: oraclelinux-7-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:oraclelinux-7
|
||||
- name: arch-base-latest-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:arch-base-latest
|
||||
- name: gentoo-stage3-latest-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:gentoo-stage3-latest
|
||||
run_command: /sbin/init
|
||||
- name: gentoo-stage3-systemd-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:gentoo-stage3-systemd
|
||||
- name: almalinux-8-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:almalinux-8
|
||||
- name: rockylinux-8-master-py3
|
||||
driver:
|
||||
image: saltimages/salt-master-py3:rockylinux-8
|
||||
|
||||
## SALT `3004.1`
|
||||
- name: debian-11-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:debian-11
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-10-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:debian-10
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-9-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:debian-9
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2204-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:ubuntu-22.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2004-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:ubuntu-20.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-1804-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:ubuntu-18.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: centos-stream8-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:centos-stream8
|
||||
- name: centos-7-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:centos-7
|
||||
- name: fedora-36-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:fedora-36
|
||||
- name: fedora-35-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:fedora-35
|
||||
- name: amazonlinux-2-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:amazonlinux-2
|
||||
- name: oraclelinux-8-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:oraclelinux-8
|
||||
- name: oraclelinux-7-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:oraclelinux-7
|
||||
- name: arch-base-latest-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:arch-base-latest
|
||||
- name: gentoo-stage3-latest-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:gentoo-stage3-latest
|
||||
run_command: /sbin/init
|
||||
- name: gentoo-stage3-systemd-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:gentoo-stage3-systemd
|
||||
- name: almalinux-8-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:almalinux-8
|
||||
- name: rockylinux-8-3004-1-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.1-py3:rockylinux-8
|
||||
|
||||
## SALT `3004.0`
|
||||
- name: opensuse-leap-153-3004-0-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.0-py3:opensuse-leap-15.3
|
||||
# Workaround to avoid intermittent failures on `opensuse-leap-15.3`:
|
||||
# => SCP did not finish successfully (255): (Net::SCP::Error)
|
||||
transport:
|
||||
max_ssh_sessions: 1
|
||||
- name: opensuse-tmbl-latest-3004-0-py3
|
||||
driver:
|
||||
image: saltimages/salt-3004.0-py3:opensuse-tumbleweed-latest
|
||||
# Workaround to avoid intermittent failures on `opensuse-tumbleweed`:
|
||||
# => SCP did not finish successfully (255): (Net::SCP::Error)
|
||||
transport:
|
||||
max_ssh_sessions: 1
|
||||
|
||||
## SALT `3003.4`
|
||||
- name: debian-10-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:debian-10
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: debian-9-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:debian-9
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-2004-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:ubuntu-20.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: ubuntu-1804-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:ubuntu-18.04
|
||||
run_command: /lib/systemd/systemd
|
||||
- name: centos-stream8-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:centos-stream8
|
||||
- name: centos-7-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:centos-7
|
||||
- name: amazonlinux-2-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:amazonlinux-2
|
||||
- name: oraclelinux-8-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:oraclelinux-8
|
||||
- name: oraclelinux-7-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:oraclelinux-7
|
||||
- name: almalinux-8-3003-4-py3
|
||||
driver:
|
||||
image: saltimages/salt-3003.4-py3:almalinux-8
|
||||
|
||||
verifier:
|
||||
# https://www.inspec.io/
|
||||
name: inspec
|
||||
sudo: true
|
||||
reporter:
|
||||
# cli, documentation, html, progress, json, json-min, json-rspec, junit
|
||||
- cli
|
||||
|
||||
suites:
|
||||
- name: default
|
||||
provisioner:
|
||||
state_top:
|
||||
base:
|
||||
'*':
|
||||
- postfix._mapdata
|
||||
- postfix
|
||||
- postfix.config
|
||||
pillars:
|
||||
top.sls:
|
||||
base:
|
||||
'*':
|
||||
- postfix
|
||||
pillars_from_files:
|
||||
postfix.sls: test/salt/pillar/default.sls
|
||||
verifier:
|
||||
inspec_tests:
|
||||
- path: test/integration/default
|
143
pillar.example
143
pillar.example
@ -1,17 +1,84 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
postfix:
|
||||
manage_master_config: True
|
||||
manage_master_config: true
|
||||
master_config:
|
||||
enable_submission: False
|
||||
# Preferred way of managing services/processes. This allows for finegrained
|
||||
# control over each service. See postfix/services.yaml for defaults that can
|
||||
# be overridden.
|
||||
services:
|
||||
smtp:
|
||||
# Limit to no more than 10 smtp processes
|
||||
maxproc: 10
|
||||
# Enable oldstyle TLS wrapped SMTP
|
||||
smtps:
|
||||
enable: true
|
||||
# Enable submission service on port 587/tcp with custom options
|
||||
submission:
|
||||
enable: true
|
||||
args:
|
||||
- "-o smtpd_tls_security_level=encrypt"
|
||||
- "-o smtpd_sasl_auth_enable=yes"
|
||||
- "-o smtpd_client_restrictions: permit_sasl_authenticated,reject"
|
||||
tlsproxy:
|
||||
enable: true
|
||||
chroot: true
|
||||
uucp:
|
||||
enable: true
|
||||
# Dovecot delivery via deliver binary. For better performance, investigate
|
||||
# using LMTP instead: <https://wiki.dovecot.org/LMTP>
|
||||
dovecot:
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: true
|
||||
extras: '-d ${recipient}'
|
||||
flags: DRhu
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: vmail:vmail
|
||||
argv: /usr/lib/dovecot/deliver
|
||||
# Completely customized mail-delivery-agent entry. Will be appended to the
|
||||
# master.cf file
|
||||
custom-mda:
|
||||
argv: /usr/local/sbin/mail-handler.py
|
||||
command: pipe
|
||||
extras: --rcpt ${recipient}
|
||||
flags: DRhu
|
||||
user: mail
|
||||
# Wrap the output in master.cf at 78 chars for better readability
|
||||
wrap: true
|
||||
# Avoid user and arvg settings to allow define internal processes
|
||||
# needed for randomizing relay IP (randmap functionality)
|
||||
no_args: true
|
||||
|
||||
enable_service: True
|
||||
# Backwards compatible definition of dovecot delivery in master.cf
|
||||
enable_dovecot: false
|
||||
# The following are the default values:
|
||||
dovecot:
|
||||
user: vmail
|
||||
group: vmail
|
||||
flags: DRhu
|
||||
argv: "/usr/lib/dovecot/deliver"
|
||||
|
||||
# Backwards compatible definition of submission listener in master.cf
|
||||
enable_submission: false
|
||||
# To replace the defaults use this:
|
||||
submission:
|
||||
smtpd_tls_security_level: encrypt
|
||||
smtpd_sasl_auth_enable: 'yes'
|
||||
smtpd_client_restrictions: permit_sasl_authenticated,reject
|
||||
|
||||
enable_service: true
|
||||
reload_service: true
|
||||
|
||||
postgrey:
|
||||
enabled: True
|
||||
enable_service: True
|
||||
enabled: true
|
||||
enable_service: true
|
||||
location: inet:172.16.0.5:6379
|
||||
|
||||
policyd-spf:
|
||||
enabled: True
|
||||
enabled: true
|
||||
time_limit: 7200s
|
||||
|
||||
config:
|
||||
@ -22,11 +89,12 @@ postfix:
|
||||
readme_directory: 'no'
|
||||
myhostname: localhost
|
||||
mydestination: localhost, localhost.localdomain
|
||||
relayhost:
|
||||
relayhost: ''
|
||||
mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
mailbox_size_limit: 0
|
||||
recipient_delimiter: +
|
||||
inet_interfaces: all
|
||||
inet_protocols: all
|
||||
|
||||
# postsrsd:
|
||||
sender_canonical_maps: tcp:127.0.0.1:10001
|
||||
@ -36,6 +104,9 @@ postfix:
|
||||
|
||||
# Alias
|
||||
alias_maps: hash:/etc/aliases
|
||||
# This is the list of files for the newaliases
|
||||
# cmd to process (see postconf(5) for details).
|
||||
# Only local hash/btree/dbm files:
|
||||
alias_database: hash:/etc/aliases
|
||||
|
||||
# Virtual users
|
||||
@ -51,6 +122,7 @@ postfix:
|
||||
|
||||
local_transport: virtual
|
||||
local_recipient_maps: $virtual_mailbox_maps
|
||||
# Use the `mapping` key to define the map
|
||||
transport_maps: hash:/etc/postfix/transport
|
||||
|
||||
# SMTP server
|
||||
@ -59,8 +131,14 @@ postfix:
|
||||
smtpd_sasl_auth_enable: 'yes'
|
||||
smtpd_sasl_type: dovecot
|
||||
smtpd_sasl_path: /var/run/dovecot/auth-client
|
||||
smtpd_recipient_restrictions: permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
|
||||
smtpd_relay_restrictions: permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
|
||||
smtpd_recipient_restrictions: >-
|
||||
permit_mynetworks,
|
||||
permit_sasl_authenticated,
|
||||
reject_unauth_destination
|
||||
smtpd_relay_restrictions: >-
|
||||
permit_mynetworks,
|
||||
permit_sasl_authenticated,
|
||||
reject_unauth_destination
|
||||
smtpd_sasl_security_options: noanonymous
|
||||
smtpd_sasl_tls_security_options: $smtpd_sasl_security_options
|
||||
smtpd_tls_auth_only: 'yes'
|
||||
@ -79,21 +157,34 @@ postfix:
|
||||
smtp_use_tls: 'yes'
|
||||
smtp_tls_cert_file: /etc/postfix/ssl/example.com-relay-client-cert.crt
|
||||
smtp_tls_key_file: /etc/postfix/ssl/example.com-relay-client-cert.key
|
||||
smtp_tls_policy_maps: hash:/etc/postfix/tls_policy
|
||||
|
||||
smtp_sasl_password_maps: hash:/etc/postfix/sasl_passwd
|
||||
sender_canonical_maps: hash:/etc/postfix/sender_canonical
|
||||
relay_recipient_maps: hash:/etc/postfix/relay_domains
|
||||
virtual_alias_maps: hash:/etc/postfix/virtual
|
||||
|
||||
transport:
|
||||
DOMAIN_NAME: ':[IP_ADDRESS]'
|
||||
|
||||
vmail:
|
||||
user: postfix_user
|
||||
password: DB_PASSWD
|
||||
hosts: DB_HOST
|
||||
dbname: postfix_db
|
||||
|
||||
# add mysql query to virtual
|
||||
mysql:
|
||||
virtual_mailbox_domains:
|
||||
table: virtual_domains
|
||||
select_field: 1
|
||||
where_field: name
|
||||
virtual_alias_maps:
|
||||
table: virtual_aliases
|
||||
select_field: destination
|
||||
where_field: email
|
||||
virtual_mailbox_maps:
|
||||
table: virtual_users
|
||||
select_field: 1
|
||||
where_field: email
|
||||
|
||||
aliases:
|
||||
# manage single aliases
|
||||
# this uses the aliases file defined in the minion config, /etc/aliases by default
|
||||
@ -137,6 +228,13 @@ postfix:
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
mapping:
|
||||
transport_maps:
|
||||
- DOMAIN_NAME: ':[IP_ADDRESS]'
|
||||
|
||||
smpt_tls_policy_maps:
|
||||
- example.com: encrypt
|
||||
- .example.com: encrypt
|
||||
|
||||
smtp_sasl_password_maps:
|
||||
- smtp.example.com: myaccount:somepassword
|
||||
|
||||
@ -152,3 +250,24 @@ postfix:
|
||||
- someuser_1@example.com
|
||||
- someuser_2@example.com
|
||||
- singlealiasexample: someuser_3@example.com
|
||||
|
||||
|
||||
###
|
||||
#
|
||||
# Multiple virtual_alias_maps entries:
|
||||
#
|
||||
# You are free to define alternative mapping names
|
||||
# and use them as 'variables' in your Postfix config:
|
||||
# (Credit for the idea and the example goes to @roskens.)
|
||||
|
||||
postfix:
|
||||
config:
|
||||
virtual_alias_maps: $virtual_alias_1_maps $virtual_alias_2_maps
|
||||
virtual_alias_1_maps: hash:/etc/postfix/virtual
|
||||
virtual_alias_2_maps: pcre:/etc/postfix/virtual.pcre
|
||||
mapping:
|
||||
virtual_alias_1_maps:
|
||||
root:
|
||||
- me
|
||||
virtual_alias_2_maps:
|
||||
- '/(\S+)_(devel|preprod|prod)@sub.example.com$/': '$(1)@$(2).sub.example.com'
|
||||
|
13
postfix/_mapdata/_mapdata.jinja
Normal file
13
postfix/_mapdata/_mapdata.jinja
Normal file
@ -0,0 +1,13 @@
|
||||
# yamllint disable rule:indentation rule:line-length
|
||||
# {{ grains.get("osfinger", grains.os) }}
|
||||
---
|
||||
{#- use salt.slsutil.serialize to avoid encoding errors on some platforms #}
|
||||
{{ salt["slsutil.serialize"](
|
||||
"yaml",
|
||||
map,
|
||||
default_flow_style=False,
|
||||
allow_unicode=True,
|
||||
)
|
||||
| regex_replace("^\s+'$", "'", multiline=True)
|
||||
| trim
|
||||
}}
|
22
postfix/_mapdata/init.sls
Normal file
22
postfix/_mapdata/init.sls
Normal file
@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=sls
|
||||
---
|
||||
{#- Get the `tplroot` from `tpldir` #}
|
||||
{%- set tplroot = tpldir.split("/")[0] %}
|
||||
{%- from tplroot ~ "/map.jinja" import postfix with context %}
|
||||
|
||||
{%- set _mapdata = {
|
||||
"values": postfix,
|
||||
} %}
|
||||
{%- do salt["log.debug"]("### MAP.JINJA DUMP ###\n" ~ _mapdata | yaml(False)) %}
|
||||
|
||||
{%- set output_dir = "/temp" if grains.os_family == "Windows" else "/tmp" %}
|
||||
{%- set output_file = output_dir ~ "/salt_mapdata_dump.yaml" %}
|
||||
|
||||
{{ tplroot }}-mapdata-dump:
|
||||
file.managed:
|
||||
- name: {{ output_file }}
|
||||
- source: salt://{{ tplroot }}/_mapdata/_mapdata.jinja
|
||||
- template: jinja
|
||||
- context:
|
||||
map: {{ _mapdata | yaml }}
|
@ -1,3 +0,0 @@
|
||||
# Managed by config management
|
||||
# See man 5 aliases for format
|
||||
{{pillar['postfix']['aliases']['content']}}
|
@ -1,117 +1,156 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
include:
|
||||
- postfix
|
||||
|
||||
/etc/postfix:
|
||||
postfix-config-file-directory-config-path:
|
||||
file.directory:
|
||||
- name: {{ postfix.config_path }}
|
||||
- user: root
|
||||
- group: root
|
||||
- dir_mode: 755
|
||||
- file_mode: 644
|
||||
- group: {{ postfix.root_grp }}
|
||||
- dir_mode: '0755'
|
||||
- file_mode: '0644'
|
||||
- makedirs: True
|
||||
|
||||
/etc/postfix/main.cf:
|
||||
postfix-config-file-managed-main.cf:
|
||||
file.managed:
|
||||
- name: {{ postfix.config_path }}/main.cf
|
||||
- source: salt://postfix/files/main.cf
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: 644
|
||||
- group: {{ postfix.root_grp }}
|
||||
- mode: '0644'
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
- template: jinja
|
||||
- context:
|
||||
postfix: {{ postfix|tojson }}
|
||||
|
||||
{% if 'vmail' in pillar.get('postfix', '') %}
|
||||
/etc/postfix/virtual_alias_maps.cf:
|
||||
postfix-config-file-managed-virtual-alias-maps.cf:
|
||||
file.managed:
|
||||
- name: {{ postfix.config_path }}/virtual_alias_maps.cf
|
||||
- source: salt://postfix/files/virtual_alias_maps.cf
|
||||
- user: root
|
||||
- group: postfix
|
||||
- mode: 640
|
||||
- mode: '0640'
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
- template: jinja
|
||||
|
||||
/etc/postfix/virtual_mailbox_domains.cf:
|
||||
postfix-config-file-managed-virtual-mailbox-domains.cf:
|
||||
file.managed:
|
||||
- name: {{ postfix.config_path }}/virtual_mailbox_domains.cf
|
||||
- source: salt://postfix/files/virtual_mailbox_domains.cf
|
||||
- user: root
|
||||
- group: postfix
|
||||
- mode: 640
|
||||
- mode: '0640'
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
- template: jinja
|
||||
|
||||
/etc/postfix/virtual_mailbox_maps.cf:
|
||||
postfix-config-file-managed-virtual-mailbox-maps.cf:
|
||||
file.managed:
|
||||
- name: {{ postfix.config_path }}/virtual_mailbox_maps.cf
|
||||
- source: salt://postfix/files/virtual_mailbox_maps.cf
|
||||
- user: root
|
||||
- group: postfix
|
||||
- mode: 640
|
||||
- mode: '0640'
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
- template: jinja
|
||||
{% endif %}
|
||||
|
||||
{% if salt['pillar.get']('postfix:manage_master_config', True) %}
|
||||
/etc/postfix/master.cf:
|
||||
{% import_yaml "postfix/services.yaml" as postfix_master_services %}
|
||||
postfix-config-file-managed-master.cf:
|
||||
file.managed:
|
||||
- name: {{ postfix.config_path }}/master.cf
|
||||
- source: salt://postfix/files/master.cf
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: 644
|
||||
- group: {{ postfix.root_grp }}
|
||||
- mode: '0644'
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
- template: jinja
|
||||
{% endif %}
|
||||
|
||||
{% if 'transport' in pillar.get('postfix', '') %}
|
||||
/etc/postfix/transport:
|
||||
file.managed:
|
||||
- source: salt://postfix/files/transport
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: 644
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- template: jinja
|
||||
|
||||
run-postmap:
|
||||
cmd.wait:
|
||||
- name: /usr/sbin/postmap /etc/postfix/transport
|
||||
- cwd: /
|
||||
- watch:
|
||||
- file: /etc/postfix/transport
|
||||
- context:
|
||||
postfix: {{ postfix|tojson }}
|
||||
postfix_master_services: {{ postfix_master_services|tojson }}
|
||||
{% endif %}
|
||||
|
||||
{%- for domain in salt['pillar.get']('postfix:certificates', {}).keys() %}
|
||||
|
||||
postfix_{{ domain }}_ssl_certificate:
|
||||
|
||||
postfix-config-file-managed-{{ domain }}-ssl-certificate:
|
||||
file.managed:
|
||||
- name: /etc/postfix/ssl/{{ domain }}.crt
|
||||
- name: {{ postfix.config_path }}/ssl/{{ domain }}.crt
|
||||
- makedirs: True
|
||||
- contents_pillar: postfix:certificates:{{ domain }}:public_cert
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
|
||||
postfix_{{ domain }}_ssl_key:
|
||||
postfix-config-file-managed-{{ domain }}-ssl-key:
|
||||
file.managed:
|
||||
- name: /etc/postfix/ssl/{{ domain }}.key
|
||||
- mode: 600
|
||||
- name: {{ postfix.config_path }}/ssl/{{ domain }}.key
|
||||
- mode: '0600'
|
||||
- makedirs: True
|
||||
- contents_pillar: postfix:certificates:{{ domain }}:private_key
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
|
||||
{% endfor %}
|
||||
|
||||
# manage various mappings
|
||||
{% for mapping, data in salt['pillar.get']('postfix:mapping', {}).items() %}
|
||||
{%- set need_postmap = False %}
|
||||
{%- set file_path = salt['pillar.get']('postfix:config:' ~ mapping) %}
|
||||
{%- if file_path.startswith('proxy:') %}
|
||||
{#- Discard the proxy:-prefix #}
|
||||
{%- set _, file_type, file_path = file_path.split(':') %}
|
||||
{%- elif ':' in file_path %}
|
||||
{%- set file_type, file_path = file_path.split(':') %}
|
||||
{%- else %}
|
||||
{%- set file_type = postfix.default_database_type %}
|
||||
{%- endif %}
|
||||
{%- if not file_path.startswith('/') %}
|
||||
{%- set file_path = postfix.config_path ~ '/' ~ file_path %}
|
||||
{%- endif %}
|
||||
{%- if file_type in ("btree", "cdb", "cidr", "dbm", "hash", "pcre", "regexp", "sdbm") %}
|
||||
{%- set need_postmap = True %}
|
||||
{%- endif %}
|
||||
postfix-config-file-managed-{{ mapping }}:
|
||||
file.managed:
|
||||
- name: {{ file_path }}
|
||||
- source: salt://postfix/files/mapping.j2
|
||||
- user: root
|
||||
- group: {{ postfix.root_grp }}
|
||||
{%- if mapping.endswith('_sasl_password_maps') %}
|
||||
- mode: '0600'
|
||||
{%- else %}
|
||||
- mode: '0644'
|
||||
{%- endif %}
|
||||
- template: jinja
|
||||
- context:
|
||||
data: {{ data|json() }}
|
||||
- require:
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- file: postfix-config-file-managed-main.cf
|
||||
{%- if need_postmap %}
|
||||
postfix-config-cmd-run-{{ mapping }}:
|
||||
cmd.run:
|
||||
- name: {{ postfix.xbin_prefix }}/sbin/postmap {{ file_path }}
|
||||
- cwd: /
|
||||
- onchanges:
|
||||
- file: postfix-config-file-managed-{{ mapping }}
|
||||
- watch_in:
|
||||
- service: postfix-init-service-running-postfix
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
|
16
postfix/defaults.yaml
Normal file
16
postfix/defaults.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
postfix:
|
||||
aliases_file: /etc/aliases
|
||||
config_path: /etc/postfix
|
||||
package: postfix
|
||||
postsrsd_pkg: postsrsd
|
||||
postgrey_pkg: postgrey
|
||||
root_grp: root
|
||||
setgid_group: postdrop
|
||||
daemon_directory: /usr/libexec/postfix
|
||||
service: postfix
|
||||
xbin_prefix: /usr
|
||||
dovecot_deliver: /usr/lib/dovecot/deliver
|
||||
default_database_type: hash
|
@ -1,18 +1,24 @@
|
||||
{%- from "postfix/map.jinja" import postfix with context -%}
|
||||
{%- set config = salt['pillar.get']('postfix:config', {}) -%}
|
||||
{% set processed_parameters = ['aliases_file', 'virtual', 'sasl_passwd', 'sender_canonical'] %}
|
||||
|
||||
{#- " | list": Python3.6 retuns dict_keys here, which needs to be converted into a list here. -#}
|
||||
{%- set processed_parameters = salt['pillar.get']('postfix:mapping', {}).keys() | list %}
|
||||
|
||||
{%- macro set_parameter(parameter, default=None) -%}
|
||||
{% set value = config.get(parameter, default) %}
|
||||
{%- if value is not none %}
|
||||
{%- if value is number or value is string -%}
|
||||
{{ parameter }} = {{ value }}
|
||||
{%- elif value is iterable -%}
|
||||
{{ parameter }} = {{ value | join(', ')}}
|
||||
{{ parameter }} = {{ value | join('\n') | indent(parameter | length + 3) }}
|
||||
{%- endif -%}
|
||||
{%- do processed_parameters.append(parameter) %}
|
||||
{%- endif %}
|
||||
{%- endmacro -%}
|
||||
# Managed by config management
|
||||
|
||||
#
|
||||
# This file is managed by salt.
|
||||
# Modify the salt pillar in the postfix formula that generates this file instead.
|
||||
#
|
||||
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
||||
|
||||
|
||||
@ -25,6 +31,13 @@
|
||||
{{ set_parameter('biff', 'no') }}
|
||||
{{ set_parameter('compatibility_level', '2') }}
|
||||
|
||||
# must be set
|
||||
# See: https://serverfault.com/questions/952776/warning-undefined-parameter-mua-sender-restrictions-when-postconf-n
|
||||
{{ set_parameter('smtpd_restriction_classes', 'mua_sender_restrictions, mua_client_restrictions, mua_helo_restrictions') }}
|
||||
{{ set_parameter('mua_client_restrictions', 'permit_sasl_authenticated, reject') }}
|
||||
{{ set_parameter('mua_sender_restrictions', 'permit_sasl_authenticated, reject') }}
|
||||
{{ set_parameter('mua_helo_restrictions', 'permit_mynetworks, reject_non_fqdn_hostname, reject_invalid_hostname, permit') }}
|
||||
|
||||
# appending .domain is the MUA's job.
|
||||
{{ set_parameter('append_dot_mydomain', 'no') }}
|
||||
|
||||
@ -33,6 +46,11 @@
|
||||
|
||||
{{ set_parameter('readme_directory', 'no') }}
|
||||
|
||||
# Apply default setgid_group
|
||||
{{ set_parameter('setgid_group', postfix.setgid_group) }}
|
||||
# Set daemon directory
|
||||
{{ set_parameter('daemon_directory', postfix.daemon_directory) }}
|
||||
|
||||
{%- set relay_restrictions = ['permit_mynetworks'] %}
|
||||
{%- set recipient_restrictions = ['permit_mynetworks'] %}
|
||||
|
||||
@ -69,6 +87,7 @@
|
||||
{%- endif %}
|
||||
|
||||
{{ set_parameter('myhostname', grains['fqdn']) }}
|
||||
{#- TODO: The following two may not be the same: #}
|
||||
{{ set_parameter('alias_maps', 'hash:' ~ postfix.aliases_file) }}
|
||||
{{ set_parameter('alias_database', 'hash:' ~ postfix.aliases_file) }}
|
||||
{{ set_parameter('mydestination', [grains['fqdn'], 'localhost', 'localhost.localdomain', grains['domain']]) }}
|
||||
@ -77,6 +96,7 @@
|
||||
{{ set_parameter('mailbox_size_limit', '0') }}
|
||||
{{ set_parameter('recipient_delimiter', '+') }}
|
||||
{{ set_parameter('inet_interfaces', 'all') }}
|
||||
{{ set_parameter('inet_protocols', 'all') }}
|
||||
{{ set_parameter('message_size_limit', '41943040') }}
|
||||
|
||||
{%- if config.get('relayhost') %}
|
||||
@ -97,17 +117,23 @@ policy-spf_time_limit = {{ policyd_spf.get('time_limit', '3600s') }}
|
||||
{%- endif %}
|
||||
{{ set_parameter('smtpd_recipient_restrictions', recipient_restrictions) }}
|
||||
|
||||
{% if 'virtual' in pillar.get('postfix','') %}
|
||||
virtual_alias_maps = hash:/etc/postfix/virtual
|
||||
{% endif %}
|
||||
{# From init.sls #}
|
||||
{%- for mapping, data in salt['pillar.get']('postfix:mapping', {}).items() %}
|
||||
{%- set file_path = salt['pillar.get']('postfix:config:' ~ mapping) %}
|
||||
{%- if file_path.startswith('proxy:') %}
|
||||
{#- Discard the proxy:-prefix #}
|
||||
{%- set _, file_type, file_path = file_path.split(':') %}
|
||||
{%- elif ':' in file_path %}
|
||||
{%- set file_type, file_path = file_path.split(':') %}
|
||||
{%- else %}
|
||||
{%- set file_type = postfix.default_database_type %}
|
||||
{%- endif %}
|
||||
{%- if not file_path.startswith('/') %}
|
||||
{%- set file_path = postfix.config_path ~ '/' ~ file_path %}
|
||||
{%- endif %}
|
||||
|
||||
{% if 'sasl_passwd' in pillar.get('postfix','') %}
|
||||
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
|
||||
{% endif %}
|
||||
|
||||
{% if 'sender_canonical' in pillar.get('postfix','') %}
|
||||
sender_canonical_maps = hash:/etc/postfix/sender_canonical
|
||||
{% endif %}
|
||||
{{ set_parameter(mapping, file_type ~ ':' ~ file_path) }}
|
||||
{% endfor %}
|
||||
|
||||
{# Accept arbitrary parameters -#}
|
||||
{% for parameter in config -%}
|
||||
|
@ -1,21 +1,27 @@
|
||||
# Managed by config management
|
||||
|
||||
{#- Some files (mainly the aliases one) require key and values
|
||||
to be separated with a colon. For this `colon: True` should
|
||||
be passed to the template #}
|
||||
{%- if colon is not defined %}
|
||||
{%- set colon = False %}
|
||||
{%- endif %}
|
||||
{%- macro format_value(key, value) %}
|
||||
{#- Some settings, like virtual_alias_maps can take multiple values. Handle this case. -#}
|
||||
{%- if value is iterable and value is not string -%}
|
||||
{{ key }} {{ value|join(", ") }}
|
||||
{{ key }}{% if colon %}:{% endif %} {{ value|join(", ") }}
|
||||
{%- else -%}
|
||||
{{ key }} {{ value }}
|
||||
{{ key }}{% if colon %}:{% endif %} {{ value }}
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- if data is mapping %}
|
||||
{% for key, value in data.iteritems() %}
|
||||
{% for key, value in data.items() %}
|
||||
{{ format_value(key, value) }}
|
||||
{%- endfor -%}
|
||||
{%- else %}
|
||||
{#- Some settings need order, handle OrderedDict #}
|
||||
{% for item in data %}
|
||||
{{ format_value(item.keys()[0], item.values()[0]) }}
|
||||
{%- set key, value = item.popitem() %}
|
||||
{{ format_value(key, value) }}
|
||||
{%- endfor -%}
|
||||
{%- endif %}
|
||||
|
@ -1,4 +1,66 @@
|
||||
{% set master_config = salt['pillar.get']('postfix:master_config', {}) -%}
|
||||
{%- set master_config = salt['pillar.get']('postfix:master_config', {}) -%}
|
||||
{#-
|
||||
# Handle the case that the pillar data does not provide any service
|
||||
# configuration but submission parameters are provided in the pillar.
|
||||
# This is important for backwards compatibility with sites that are using
|
||||
# the previous enable_submission pillar settings.
|
||||
-#}
|
||||
{%- set additional_services = {} -%}
|
||||
{%- if master_config.get('enable_submission', False) and not salt[
|
||||
'pillar.get']('postfix:master_config:services:submission', False) -%}
|
||||
{%- do additional_services.update({'submission': {'chroot': False,
|
||||
'command': 'smtpd',
|
||||
'enable': True,
|
||||
'type': 'inet',
|
||||
'args': [],
|
||||
'private': False}}) -%}
|
||||
{%- if master_config.get('submission', False) -%}
|
||||
{%- for parameter, value in master_config.get('submission', {}).items() -%}
|
||||
{%- if value is number or value is string -%}
|
||||
{%- do additional_services['submission']['args'].append('-o %s=%s' % (
|
||||
parameter, value)) -%}
|
||||
{%- elif value is iterable -%}
|
||||
{%- do additional_services['submission']['args'].append('-o %s=%s' % (
|
||||
parameter, ','.join(value))) -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- else -%}
|
||||
{%- do additional_services[
|
||||
'submission']['args'].extend(['# -o syslog_name=postfix/submission',
|
||||
'-o smtpd_tls_security_level=encrypt',
|
||||
'-o smtpd_sasl_auth_enable=yes',
|
||||
'# -o smtpd_reject_unlisted_recipient=no',
|
||||
'# -o smtpd_client_restrictions=$mua_client_restrictions',
|
||||
'# -o smtpd_helo_restrictions=$mua_helo_restrictions',
|
||||
'# -o smtpd_sender_restrictions=$mua_sender_restrictions',
|
||||
'# -o smtpd_recipient_restrictions=',
|
||||
'# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject',
|
||||
'# -o milter_macro_daemon_name=ORIGINATING'
|
||||
]) -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
|
||||
{#- Format the postfix service parameters correctly -#}
|
||||
{%- macro service_param(service, service_name, parameter_name, default='-') -%}
|
||||
{#- Fetch the value from the passed service dictionary or fall back to the
|
||||
# service defaults by chaining .get() commands. #}
|
||||
{%- set value = service.get(parameter_name,
|
||||
postfix_master_services.defaults[service_name].get(
|
||||
parameter_name, default)) -%}
|
||||
{%- if value is sameas false -%}
|
||||
n
|
||||
{%- elif value is sameas true -%}
|
||||
y
|
||||
{%- elif value is number or value is string -%}
|
||||
{{ value }}
|
||||
{%- else -%}
|
||||
-
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
#
|
||||
# This file is managed by salt.
|
||||
# Modify the salt pillar in the postfix formula that generates this file instead.
|
||||
#
|
||||
# Postfix master process configuration file. For details on the format
|
||||
# of the file, see the master(5) manual page (command: "man 5 master" or
|
||||
@ -10,62 +72,109 @@
|
||||
# service type private unpriv chroot wakeup maxproc command + args
|
||||
# (yes) (yes) (no) (never) (100)
|
||||
# ==========================================================================
|
||||
smtp inet n - n - - smtpd
|
||||
#smtp inet n - n - 1 postscreen
|
||||
#smtpd pass - - n - - smtpd
|
||||
#dnsblog unix - - n - 0 dnsblog
|
||||
#tlsproxy unix - - n - 0 tlsproxy
|
||||
{% if master_config.get('enable_submission', False) %}
|
||||
submission inet n - n - - smtpd
|
||||
# -o syslog_name=postfix/submission
|
||||
-o smtpd_tls_security_level=encrypt
|
||||
-o smtpd_sasl_auth_enable=yes
|
||||
# -o smtpd_reject_unlisted_recipient=no
|
||||
# -o smtpd_client_restrictions=$mua_client_restrictions
|
||||
# -o smtpd_helo_restrictions=$mua_helo_restrictions
|
||||
# -o smtpd_sender_restrictions=$mua_sender_restrictions
|
||||
# -o smtpd_recipient_restrictions=
|
||||
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
|
||||
# -o milter_macro_daemon_name=ORIGINATING
|
||||
{% endif %}
|
||||
#smtps inet n - n - - smtpd
|
||||
# -o syslog_name=postfix/smtps
|
||||
# -o smtpd_tls_wrappermode=yes
|
||||
# -o smtpd_sasl_auth_enable=yes
|
||||
# -o smtpd_reject_unlisted_recipient=no
|
||||
# -o smtpd_client_restrictions=$mua_client_restrictions
|
||||
# -o smtpd_helo_restrictions=$mua_helo_restrictions
|
||||
# -o smtpd_sender_restrictions=$mua_sender_restrictions
|
||||
# -o smtpd_recipient_restrictions=
|
||||
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
|
||||
# -o milter_macro_daemon_name=ORIGINATING
|
||||
#628 inet n - n - - qmqpd
|
||||
pickup unix n - n 60 1 pickup
|
||||
cleanup unix n - n - 0 cleanup
|
||||
qmgr unix n - n 300 1 qmgr
|
||||
#qmgr unix n - n 300 1 oqmgr
|
||||
tlsmgr unix - - n 1000? 1 tlsmgr
|
||||
rewrite unix - - n - - trivial-rewrite
|
||||
bounce unix - - n - 0 bounce
|
||||
defer unix - - n - 0 bounce
|
||||
trace unix - - n - 0 bounce
|
||||
verify unix - - n - 1 verify
|
||||
flush unix n - n 1000? 0 flush
|
||||
proxymap unix - - n - - proxymap
|
||||
proxywrite unix - - n - 1 proxymap
|
||||
smtp unix - - n - - smtp
|
||||
relay unix - - n - - smtp
|
||||
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
|
||||
showq unix n - n - - showq
|
||||
error unix - - n - - error
|
||||
retry unix - - n - - error
|
||||
discard unix - - n - - discard
|
||||
local unix - n n - - local
|
||||
virtual unix - n n - - virtual
|
||||
lmtp unix - - n - - lmtp
|
||||
anvil unix - - n - 1 anvil
|
||||
scache unix - - n - 1 scache
|
||||
{%- for service_name in postfix_master_services.order %}
|
||||
{#- Try to get the service configuration from the pillar if present.
|
||||
# Next try if the service has been dynamically configured and is present in
|
||||
# the additional_services dictionary.
|
||||
# If absent, fall back to the defaults provided in services.jinja -#}
|
||||
{%- set service = salt['pillar.get']('postfix:master_config:services:%s' % (
|
||||
service_name,),
|
||||
additional_services.get(service_name,
|
||||
postfix_master_services.defaults[service_name])) -%}
|
||||
{%- if service.get('enable', True) -%}
|
||||
{%- set comment = '' -%}
|
||||
{%- else -%}
|
||||
{%- set comment = '#' -%}
|
||||
{%- endif %}
|
||||
{{ "%s%-9s %-5s %-7s %-7s %-7s %-7s %-7s %s" | format(comment,
|
||||
service_param(service, service_name, 'service', service_name),
|
||||
service_param(service, service_name, 'type'),
|
||||
service_param(service, service_name, 'private'),
|
||||
service_param(service, service_name, 'unpriv'),
|
||||
service_param(service, service_name, 'chroot'),
|
||||
service_param(service, service_name, 'wakeup'),
|
||||
service_param(service, service_name, 'maxproc'),
|
||||
service_param(service, service_name, 'command', service_name)) -}}
|
||||
{%- if service.args is not none -%}
|
||||
{%- for option in service.get('args', postfix_master_services.defaults[
|
||||
service_name].get('args', [])) -%}
|
||||
{%- if option.startswith('#') %}
|
||||
{{ option }}
|
||||
{%- else %}
|
||||
{{ comment }} {{ option }}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
#
|
||||
{%- set handled_extra_services = [] -%}
|
||||
{%- macro extra_service(service_name, wrap=False) -%}
|
||||
{%- do handled_extra_services.append(service_name) -%}
|
||||
{%- set service = salt['pillar.get']('postfix:master_config:services:%s' % (
|
||||
service_name,),
|
||||
postfix_master_services.defaults[service_name]) -%}
|
||||
{%- if service.get('enable', True) -%}
|
||||
{%- set comment = '' -%}
|
||||
{%- else -%}
|
||||
{%- set comment = '#' -%}
|
||||
{%- endif -%}
|
||||
{{ "%s%-9s %-5s %-7s %-7s %-7s %-7s %-7s %s" | format(comment,
|
||||
service_param(service, service_name, 'service', service_name),
|
||||
service_param(service, service_name, 'type'),
|
||||
service_param(service, service_name, 'private'),
|
||||
service_param(service, service_name, 'unpriv'),
|
||||
service_param(service, service_name, 'chroot'),
|
||||
service_param(service, service_name, 'wakeup'),
|
||||
service_param(service, service_name, 'maxproc'),
|
||||
service_param(service, service_name, 'command', service_name)) }}
|
||||
{%- if 'no_args' in service -%}
|
||||
{%- set parameter_str = "%s %s" | format(comment,service_param(service, service_name, 'extras', '')) -%}
|
||||
{%- else -%}
|
||||
{%- if 'flags' in service or 'flags' in postfix_master_services.defaults[service_name] -%}
|
||||
{%- set parameter_str = "%s flags=%s user=%s argv=%s %s" | format(comment,
|
||||
service_param(service, service_name, 'flags'),
|
||||
service_param(service, service_name, 'user'),
|
||||
service_param(service, service_name, 'argv'),
|
||||
service_param(service, service_name, 'extras', '')) -%}
|
||||
{%- else -%}
|
||||
{%- set parameter_str = "%s user=%s argv=%s %s" | format(comment,
|
||||
service_param(service, service_name, 'user'),
|
||||
service_param(service, service_name, 'argv'),
|
||||
service_param(service, service_name, 'extras', '')) -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}{# if 'no_args' in service #}
|
||||
{%- if wrap %}
|
||||
{{ parameter_str | wordwrap(width=wrap, break_long_words=False, wrapstring='\n%s ' | format(comment)) }}
|
||||
{%- else %}
|
||||
{{ parameter_str }}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{#- Handle legacy configuration of services for backwards compatibility
|
||||
by extending the services dictionary accordingly #}
|
||||
{%- if salt['pillar.get']('postfix:policyd-spf:enabled', False) %}
|
||||
{%- do postfix_master_services.defaults.update({'policy-spf': {
|
||||
'command': 'spawn',
|
||||
'chroot': False,
|
||||
'enable': True,
|
||||
'type': 'unix',
|
||||
'unpriv': False,
|
||||
'user': 'nobody',
|
||||
'argv': '%s/bin/policyd-spf' | format(postfix.xbin_prefix)}}) %}
|
||||
{%- endif %}
|
||||
{%- if master_config.get('enable_dovecot', False) -%}
|
||||
{%- set dovecot = master_config.get('dovecot', {} )%}
|
||||
{%- do postfix_master_services.defaults.update({'dovecot': {
|
||||
'command': 'pipe',
|
||||
'chroot': False,
|
||||
'enable': True,
|
||||
'extras': '-d ${recipient}',
|
||||
'flags': dovecot.get('flags', 'DRhu'),
|
||||
'type': 'unix',
|
||||
'unpriv': False,
|
||||
'user': '%s:%s' | format(dovecot.get('user', 'vmail'), dovecot.get('group', 'vmail')),
|
||||
'argv': dovecot.get('argv', postfix.dovecot_deliver) }}) %}
|
||||
{%- endif %}
|
||||
# ====================================================================
|
||||
# Interfaces to non-Postfix software. Be sure to examine the manual
|
||||
# pages of the non-Postfix software to find out what options it wants.
|
||||
@ -78,8 +187,7 @@ scache unix - - n - 1 scache
|
||||
# maildrop. See the Postfix MAILDROP_README file for details.
|
||||
# Also specify in main.cf: maildrop_destination_recipient_limit=1
|
||||
#
|
||||
#maildrop unix - n n - - pipe
|
||||
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
|
||||
{{ extra_service('maildrop') }}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
@ -97,41 +205,42 @@ scache unix - - n - 1 scache
|
||||
# Cyrus 2.1.5 (Amos Gouaux)
|
||||
# Also specify in main.cf: cyrus_destination_recipient_limit=1
|
||||
#
|
||||
#cyrus unix - n n - - pipe
|
||||
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
|
||||
{{ extra_service('cyrus') }}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Old example of delivery via Cyrus.
|
||||
#
|
||||
#old-cyrus unix - n n - - pipe
|
||||
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
|
||||
{{ extra_service('old-cyrus') }}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# See the Postfix UUCP_README file for configuration details.
|
||||
#
|
||||
#uucp unix - n n - - pipe
|
||||
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
|
||||
{{ extra_service('uucp') }}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Other external delivery methods.
|
||||
#
|
||||
#ifmail unix - n n - - pipe
|
||||
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
|
||||
{{ extra_service('ifmail') }}
|
||||
#
|
||||
#bsmtp unix - n n - - pipe
|
||||
# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
|
||||
{{ extra_service('bsmtp') }}
|
||||
#
|
||||
#scalemail-backend unix - n n - 2 pipe
|
||||
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
|
||||
# ${nexthop} ${user} ${extension}
|
||||
{{ extra_service('scalemail-backend', 79) }}
|
||||
#
|
||||
#mailman unix - n n - - pipe
|
||||
# flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
|
||||
# ${nexthop} ${user}
|
||||
{% if salt['pillar.get']('postfix:policyd-spf:enabled', False) %}
|
||||
policy-spf unix - n n - - spawn
|
||||
user=nobody argv=/usr/bin/policyd-spf
|
||||
{{ extra_service('mailman', 79) }}
|
||||
{#- Handle custom services configured as pillars by extending the services
|
||||
dictionary for all defined services that have not been otherwise be
|
||||
handled yet. -#}
|
||||
{%- for service in salt['pillar.get']('postfix:master_config:services', []) if not service in handled_extra_services -%}
|
||||
{%- do postfix_master_services.defaults.update({service: salt['pillar.get']('postfix:master_config:services:%s' % (service,))}) -%}
|
||||
{%- endfor -%}
|
||||
{%- for service in postfix_master_services.defaults if not service in handled_extra_services and not service in postfix_master_services.order %}
|
||||
#
|
||||
{%- if postfix_master_services.defaults[service].get('wrap', False) %}
|
||||
{{ extra_service(service, 78) }}
|
||||
{%- else %}
|
||||
{{ extra_service(service) }}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
|
@ -1,17 +0,0 @@
|
||||
#
|
||||
# This file is managed by salt
|
||||
#
|
||||
|
||||
{% set config = salt['pillar.get']('postfix:transport', {}) -%}
|
||||
{% macro set_parameter(parameter, default=None) -%}
|
||||
{% set value = config.get(parameter, default) -%}
|
||||
{% if value is not none -%}
|
||||
{{ parameter }} {{ value }}
|
||||
{% endif -%}
|
||||
{% endmacro -%}
|
||||
|
||||
{# Accept arbitrary parameters -#}
|
||||
{% for parameter in config -%}
|
||||
{{ set_parameter(parameter) }}
|
||||
{% endfor -%}
|
||||
|
@ -1,3 +1,10 @@
|
||||
{%- if 'mysql' in salt['pillar.get']('postfix:config:virtual_alias_maps', '') %}
|
||||
{%- set config = salt['pillar.get']('postfix:mysql:virtual_alias_maps', {}) -%}
|
||||
{%- for key,value in salt['pillar.get']('postfix:vmail').items() %}
|
||||
{{ key }} = {{ value }}
|
||||
{%- endfor %}
|
||||
query = SELECT {{ config.select_field|default('destination') }} FROM {{ config.table|default('virtual_aliases') }} WHERE {{ config.where_field|default('email') }}='%s'
|
||||
{%- else %}
|
||||
{% set config = salt['pillar.get']('postfix:vmail', {}) -%}
|
||||
{% macro set_parameter(parameter, default=None) -%}
|
||||
{% set value = config.get(parameter, default) -%}
|
||||
@ -14,4 +21,4 @@
|
||||
{{ set_parameter('table', 'alias') }}
|
||||
{{ set_parameter('select_field', 'goto') }}
|
||||
{{ set_parameter('where_field', 'address') }}
|
||||
|
||||
{%- endif %}
|
||||
|
@ -1,3 +1,10 @@
|
||||
{%- if 'mysql' in salt['pillar.get']('postfix:config:virtual_mailbox_domains', '') %}
|
||||
{%- set config = salt['pillar.get']('postfix:mysql:virtual_mailbox_domains', {}) -%}
|
||||
{%- for key,value in salt['pillar.get']('postfix:vmail').items() %}
|
||||
{{ key }} = {{ value }}
|
||||
{%- endfor %}
|
||||
query = SELECT {{ config.select_field|default('1') }} FROM {{ config.table|default('virtual_domains') }} WHERE {{ config.where_field|default('name') }}='%s'
|
||||
{%- else %}
|
||||
{% set config = salt['pillar.get']('postfix:vmail', {}) -%}
|
||||
{% macro set_parameter(parameter, default=None) -%}
|
||||
{% set value = config.get(parameter, default) -%}
|
||||
@ -14,4 +21,4 @@
|
||||
{{ set_parameter('table', 'domain') }}
|
||||
{{ set_parameter('select_field', 'domain') }}
|
||||
{{ set_parameter('where_field', 'domain') }}
|
||||
|
||||
{%- endif %}
|
||||
|
@ -1,3 +1,10 @@
|
||||
{%- if 'mysql' in salt['pillar.get']('postfix:config:virtual_mailbox_maps', '') %}
|
||||
{%- set config = salt['pillar.get']('postfix:mysql:virtual_mailbox_maps', {}) -%}
|
||||
{%- for key,value in salt['pillar.get']('postfix:vmail').items() %}
|
||||
{{ key }} = {{ value }}
|
||||
{%- endfor %}
|
||||
query = SELECT {{ config.select_field|default('1') }} FROM {{ config.table|default('virtual_users') }} WHERE {{ config.where_field|default('email') }}='%s'
|
||||
{%- else %}
|
||||
{% set config = salt['pillar.get']('postfix:vmail', {}) -%}
|
||||
{% macro set_parameter(parameter, default=None) -%}
|
||||
{% set value = config.get(parameter, default) -%}
|
||||
@ -14,4 +21,4 @@
|
||||
{{ set_parameter('table', 'mailbox') }}
|
||||
{{ set_parameter('select_field', 'maildir') }}
|
||||
{{ set_parameter('where_field', 'username') }}
|
||||
|
||||
{%- endif %}
|
||||
|
117
postfix/init.sls
117
postfix/init.sls
@ -1,19 +1,48 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
postfix:
|
||||
{%- if grains.os_family == "Suse" %}
|
||||
# The existence of this file prevents the system to
|
||||
# overwrite files from salt when installing.
|
||||
postfix-init-file-managed-postfix.configured:
|
||||
file.managed:
|
||||
- name: /var/adm/postfix.configured
|
||||
- contents: ''
|
||||
- mode: '0644'
|
||||
- user: 'root'
|
||||
- group: 'root'
|
||||
- require_in:
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
{%- endif %}
|
||||
|
||||
postfix-init-pkg-installed-postfix:
|
||||
pkg.installed:
|
||||
- name: {{ postfix.package }}
|
||||
{%- if grains.os_family == "FreeBSD" %}
|
||||
- force: True
|
||||
- batch: True
|
||||
{%- endif %}
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
service.running:
|
||||
- enable: {{ salt['pillar.get']('postfix:enable_service', True) }}
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- watch:
|
||||
- pkg: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
|
||||
{# Used for newaliases, postalias and postconf #}
|
||||
{%- set default_database_type = salt['pillar.get']('postfix:config:default_database_type', 'hash') %}
|
||||
postfix-init-service-running-postfix:
|
||||
service.running:
|
||||
- name: postfix
|
||||
- enable: {{ salt['pillar.get']('postfix:enable_service', True) }}
|
||||
- reload: {{ salt['pillar.get']('postfix:reload_service', True) }}
|
||||
- require:
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
- watch:
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
|
||||
{%- if salt['pillar.get']('postfix:reload_service', True) %}
|
||||
# Restart postfix if the package was changed.
|
||||
# This also provides an ID to be used in a watch_in statement.
|
||||
postfix-init-service-running-postfix-restart:
|
||||
service.running:
|
||||
- name: postfix
|
||||
- watch:
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
{%- endif %}
|
||||
|
||||
# manage /etc/aliases if data found in pillar
|
||||
{% if 'aliases' in pillar.get('postfix', '') %}
|
||||
@ -23,78 +52,48 @@ postfix:
|
||||
{%- if ':' in file_path %}
|
||||
{%- set file_type, file_path = postfix.aliases_file.split(':') %}
|
||||
{%- else %}
|
||||
{%- set file_type = default_database_type %}
|
||||
{%- set file_type = postfix.default_database_type %}
|
||||
{%- endif %}
|
||||
{%- if file_type in ("btree", "cdb", "dbm", "hash", "sdbm") %}
|
||||
{%- set need_newaliases = True %}
|
||||
{%- endif %}
|
||||
postfix_alias_database:
|
||||
postfix-init-file-managed-alias-database:
|
||||
file.managed:
|
||||
- name: {{ file_path }}
|
||||
- source: salt://postfix/aliases
|
||||
{% if salt['pillar.get']('postfix:aliases:content', None) is string %}
|
||||
- contents_pillar: postfix:aliases:content
|
||||
{% else %}
|
||||
- source: salt://postfix/files/mapping.j2
|
||||
{% endif %}
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: 644
|
||||
- group: {{ postfix.root_grp }}
|
||||
- mode: '0644'
|
||||
- template: jinja
|
||||
- context:
|
||||
data: {{ salt['pillar.get']('postfix:aliases:present') }}
|
||||
colon: True
|
||||
- require:
|
||||
- pkg: postfix
|
||||
- pkg: postfix-init-pkg-installed-postfix
|
||||
|
||||
{%- if need_newaliases %}
|
||||
cmd.wait:
|
||||
postfix-init-cmd-run-new-aliases:
|
||||
cmd.run:
|
||||
- name: newaliases
|
||||
- cwd: /
|
||||
- watch:
|
||||
- onchanges:
|
||||
- file: {{ file_path }}
|
||||
{%- endif %}
|
||||
{% else %}
|
||||
{%- for user, target in salt['pillar.get']('postfix:aliases:present', {}).items() %}
|
||||
postfix_alias_present_{{ user }}:
|
||||
postfix-init-alias-present-{{ user }}:
|
||||
alias.present:
|
||||
- name: {{ user }}
|
||||
- target: {{ target }}
|
||||
{%- endfor %}
|
||||
{%- for user in salt['pillar.get']('postfix:aliases:absent', {}) %}
|
||||
postfix_alias_absent_{{ user }}:
|
||||
postfix-init-alias-absent-{{ user }}:
|
||||
alias.absent:
|
||||
- name: {{ user }}
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
# manage various mappings
|
||||
{% for mapping, data in salt['pillar.get']('postfix:mapping', {}).items() %}
|
||||
{%- set need_postmap = False %}
|
||||
{%- set file_path = salt['pillar.get']('postfix:config:' ~ mapping) %}
|
||||
{%- if ':' in file_path %}
|
||||
{%- set file_type, file_path = file_path.split(':') %}
|
||||
{%- else %}
|
||||
{%- set file_type = default_database_type %}
|
||||
{%- endif %}
|
||||
{%- if file_type in ("btree", "cdb", "dbm", "hash", "sdbm") %}
|
||||
{%- set need_postmap = True %}
|
||||
{%- endif %}
|
||||
postfix_{{ mapping }}:
|
||||
file.managed:
|
||||
- name: {{ file_path }}
|
||||
- source: salt://postfix/files/mapping.j2
|
||||
- user: root
|
||||
- group: root
|
||||
{%- if mapping.endswith('_sasl_password_maps') %}
|
||||
- mode: 600
|
||||
{%- else %}
|
||||
- mode: 644
|
||||
{%- endif %}
|
||||
- template: jinja
|
||||
- context:
|
||||
data: {{ data|json() }}
|
||||
- require:
|
||||
- pkg: postfix
|
||||
{%- if need_postmap %}
|
||||
cmd.wait:
|
||||
- name: /usr/sbin/postmap {{ file_path }}
|
||||
- cwd: /
|
||||
- watch:
|
||||
- file: {{ file_path }}
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
|
@ -1,9 +1,10 @@
|
||||
smtp.input:
|
||||
postfix-iptables-iptables-chain-present-smtp-input:
|
||||
iptables.chain_present:
|
||||
-
|
||||
- name: smtp.input
|
||||
|
||||
smtp.iptables.tcp:
|
||||
postfix-iptables-iptables-insert-smtp-iptables-tcp:
|
||||
iptables.insert:
|
||||
- name: smtp.iptables.tcp
|
||||
- table: filter
|
||||
- position: 1
|
||||
- chain: smtp.input
|
||||
@ -14,11 +15,11 @@ smtp.iptables.tcp:
|
||||
- proto: tcp
|
||||
- save: True
|
||||
|
||||
smtp.iptables.filter:
|
||||
postfix-iptables-iptables-insert-smtp-iptables-filter:
|
||||
iptables.insert:
|
||||
- name: smtp.iptables.filter
|
||||
- table: filter
|
||||
- position: 1
|
||||
- chain: INPUT
|
||||
- jump: smtp.input
|
||||
- save: True
|
||||
|
||||
|
@ -1,36 +1,14 @@
|
||||
{% set postfix = salt['grains.filter_by']({
|
||||
'Debian': {
|
||||
'package': 'postfix',
|
||||
'policyd_spf_pkg': 'postfix-policyd-spf-python',
|
||||
'postsrsd_pkg': 'postsrsd',
|
||||
'postgrey_pkg': 'postgrey',
|
||||
'pcre_pkg': 'postfix-pcre',
|
||||
'mysql_pkg': 'postfix-mysql',
|
||||
'service': 'postfix',
|
||||
'aliases_file': '/etc/aliases',
|
||||
},
|
||||
'Gentoo': {
|
||||
'package': 'mail-mta/postfix',
|
||||
'policyd_spf_pkg': 'mail-filter/pypolicyd-spf',
|
||||
'postsrsd_pkg': 'mail-filter/postsrsd',
|
||||
'postgrey_pkg': 'mail-filter/postgrey',
|
||||
'service': 'postfix',
|
||||
'aliases_file': '/etc/mail/aliases',
|
||||
},
|
||||
'RedHat': {
|
||||
'package': 'postfix',
|
||||
'policyd_spf_pkg': 'pypolicyd-spf',
|
||||
'postsrsd_pkg': 'postsrsd',
|
||||
'postgrey_pkg': 'postgrey',
|
||||
'service': 'postfix',
|
||||
'aliases_file': '/etc/aliases',
|
||||
},
|
||||
'Arch' : {
|
||||
'package': 'postfix',
|
||||
'policyd_spf_pkg': 'python-postfix-policyd-spf',
|
||||
'postsrsd_pkg': 'postsrsd',
|
||||
'postgrey_pkg': 'postgrey',
|
||||
'service': 'postfix',
|
||||
'aliases_file': '/etc/aliases',
|
||||
},
|
||||
}, merge=salt['pillar.get']('postfix:lookup')) %}
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=jinja
|
||||
|
||||
{% import_yaml "postfix/defaults.yaml" as defaults %}
|
||||
{% import_yaml "postfix/osfamilymap.yaml" as os_familymap %}
|
||||
|
||||
{% set postfix = salt['grains.filter_by'](
|
||||
defaults,
|
||||
merge=salt['grains.filter_by'](
|
||||
os_familymap,
|
||||
merge=salt['pillar.get']('postfix:lookup', {}),
|
||||
),
|
||||
base='postfix')
|
||||
%}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
mysql:
|
||||
postfix-mysql-pkg-installed-mysql:
|
||||
pkg.installed:
|
||||
- name: {{ postfix.mysql_pkg }}
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
|
36
postfix/osfamilymap.yaml
Normal file
36
postfix/osfamilymap.yaml
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
Arch:
|
||||
policyd_spf_pkg: python-postfix-policyd-spf
|
||||
daemon_directory: /usr/lib/postfix/bin
|
||||
|
||||
Debian:
|
||||
policyd_spf_pkg: postfix-policyd-spf-python
|
||||
pcre_pkg: postfix-pcre
|
||||
mysql_pkg: postfix-mysql
|
||||
daemon_directory: /usr/lib/postfix/sbin
|
||||
|
||||
FreeBSD:
|
||||
policyd_spf_pkg: py27-postfix-policyd-spf-python
|
||||
aliases_file: /etc/mail/aliases
|
||||
xbin_prefix: /usr/local
|
||||
config_path: /usr/local/etc/postfix
|
||||
root_grp: wheel
|
||||
daemon_directory: /usr/local/libexec/postfix
|
||||
dovecot_deliver: /usr/local/libexec/dovecot/deliver
|
||||
|
||||
Gentoo:
|
||||
package: mail-mta/postfix
|
||||
policyd_spf_pkg: mail-filter/pypolicyd-spf
|
||||
postsrsd_pkg: mail-filter/postsrsd
|
||||
postgrey_pkg: mail-filter/postgrey
|
||||
aliases_file: /etc/mail/aliases
|
||||
dovecot_deliver: /usr/libexec/dovecot/deliver
|
||||
|
||||
RedHat:
|
||||
policyd_spf_pkg: pypolicyd-spf
|
||||
|
||||
Suse:
|
||||
setgid_group: maildrop
|
||||
daemon_directory: /usr/lib/postfix/bin
|
@ -1,7 +1,7 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
pcre:
|
||||
postfix-pcre-pkg-installed-pcre:
|
||||
pkg.installed:
|
||||
- name: {{ postfix.pcre_pkg }}
|
||||
- watch_in:
|
||||
- service: postfix
|
||||
- service: postfix-init-service-running-postfix
|
||||
|
@ -1,5 +1,5 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
policyd_spf:
|
||||
postfix-policyd-spf-pkg-installed-policyd_spf:
|
||||
pkg.installed:
|
||||
- name: {{ postfix.policyd_spf_pkg }}
|
||||
|
@ -1,15 +1,15 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
postgrey:
|
||||
postfix-postgrey-pkg-installed-postgrey:
|
||||
pkg.installed:
|
||||
- name: {{ postfix.postgrey_pkg }}
|
||||
- watch_in:
|
||||
- service: postgrey
|
||||
|
||||
postfix-postgrey-service-running-postgrey:
|
||||
service.running:
|
||||
- name: postgrey
|
||||
- enable: {{ salt['pillar.get']('postfix:postgrey:enable_service', True) }}
|
||||
- require:
|
||||
- pkg: postgrey
|
||||
- pkg: postfix-postgrey-pkg-installed-postgrey
|
||||
- watch:
|
||||
- pkg: postgrey
|
||||
- pkg: postfix-postgrey-pkg-installed-postgrey
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{% from "postfix/map.jinja" import postfix with context %}
|
||||
|
||||
postsrsd:
|
||||
postfix-postsrsd-pkg-latest-postsrsd:
|
||||
pkg.latest:
|
||||
- name: {{ postfix.postsrsd_pkg }}
|
||||
|
||||
|
347
postfix/services.yaml
Normal file
347
postfix/services.yaml
Normal file
@ -0,0 +1,347 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
# Default Postfix master processes as defined by postfix
|
||||
#
|
||||
# The dictionary is keyed off the service name ("smtp", "smtpd", etc.) except
|
||||
# for the few cases the service name is repeated to illustrate alternative
|
||||
# options in the file.
|
||||
# In such a case the second entry has a unique identifier appended, e.g.
|
||||
# "smtp-unix". The 'service' attribute is used to provide the service name
|
||||
# that will be rendered thus overriding the usual key to prevent clashes.
|
||||
#
|
||||
|
||||
defaults:
|
||||
# Postfix internal services/processes defaults
|
||||
smtp:
|
||||
chroot: false
|
||||
command: smtpd
|
||||
private: false
|
||||
type: inet
|
||||
|
||||
smtp-postscreen:
|
||||
chroot: false
|
||||
command: postscreen
|
||||
enable: false
|
||||
maxproc: 1
|
||||
private: false
|
||||
service: smtp
|
||||
type: inet
|
||||
|
||||
smtpd:
|
||||
chroot: false
|
||||
enable: false
|
||||
type: pass
|
||||
|
||||
dnsblog:
|
||||
chroot: false
|
||||
enable: false
|
||||
maxproc: 0
|
||||
type: unix
|
||||
|
||||
tlsproxy:
|
||||
chroot: false
|
||||
enable: false
|
||||
maxproc: 0
|
||||
type: unix
|
||||
|
||||
submission:
|
||||
args:
|
||||
- '-o syslog_name=postfix/submission'
|
||||
- '-o smtpd_tls_security_level=encrypt'
|
||||
- '-o smtpd_sasl_auth_enable=yes'
|
||||
- '-o smtpd_reject_unlisted_recipient=no'
|
||||
- '-o smtpd_client_restrictions=$mua_client_restrictions'
|
||||
- '-o smtpd_helo_restrictions=$mua_helo_restrictions'
|
||||
- '-o smtpd_sender_restrictions=$mua_sender_restrictions'
|
||||
- '-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject'
|
||||
- '-o milter_macro_daemon_name=ORIGINATING'
|
||||
chroot: false
|
||||
command: smtpd
|
||||
enable: false
|
||||
private: false
|
||||
type: inet
|
||||
|
||||
smtps:
|
||||
args:
|
||||
- '-o syslog_name=postfix/smtps'
|
||||
- '-o smtpd_tls_wrappermode=yes'
|
||||
- '-o smtpd_sasl_auth_enable=yes'
|
||||
- '-o smtpd_reject_unlisted_recipient=no'
|
||||
- '-o smtpd_client_restrictions=$mua_client_restrictions'
|
||||
- '-o smtpd_helo_restrictions=$mua_helo_restrictions'
|
||||
- '-o smtpd_sender_restrictions=$mua_sender_restrictions'
|
||||
- '-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject'
|
||||
- '-o milter_macro_daemon_name=ORIGINATING'
|
||||
chroot: false
|
||||
command: smtpd
|
||||
enable: false
|
||||
private: false
|
||||
type: inet
|
||||
|
||||
'628':
|
||||
chroot: false
|
||||
command: qmqpd
|
||||
enable: false
|
||||
private: false
|
||||
type: inet
|
||||
|
||||
pickup:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
private: false
|
||||
type: unix
|
||||
wakeup: 60
|
||||
|
||||
cleanup:
|
||||
chroot: false
|
||||
maxproc: 0
|
||||
private: false
|
||||
type: unix
|
||||
|
||||
qmgr:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
private: false
|
||||
type: unix
|
||||
wakeup: 300
|
||||
|
||||
qmgr-oqmgr:
|
||||
chroot: false
|
||||
command: oqmgr
|
||||
enable: false
|
||||
maxproc: 1
|
||||
private: false
|
||||
service: qmgr
|
||||
type: unix
|
||||
wakeup: 300
|
||||
|
||||
tlsmgr:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
type: unix
|
||||
wakeup: '1000?'
|
||||
|
||||
rewrite:
|
||||
chroot: false
|
||||
command: trivial-rewrite
|
||||
type: unix
|
||||
|
||||
bounce:
|
||||
chroot: false
|
||||
maxproc: 0
|
||||
type: unix
|
||||
|
||||
defer:
|
||||
chroot: false
|
||||
command: bounce
|
||||
maxproc: 0
|
||||
type: unix
|
||||
|
||||
trace:
|
||||
chroot: false
|
||||
command: bounce
|
||||
maxproc: 0
|
||||
type: unix
|
||||
|
||||
smtp-unix:
|
||||
chroot: false
|
||||
command: smtp
|
||||
service: smtp
|
||||
type: unix
|
||||
|
||||
verify:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
type: unix
|
||||
|
||||
flush:
|
||||
chroot: false
|
||||
maxproc: 0
|
||||
private: false
|
||||
type: unix
|
||||
wakeup: '1000?'
|
||||
|
||||
proxymap:
|
||||
chroot: false
|
||||
type: unix
|
||||
|
||||
proxywrite:
|
||||
chroot: false
|
||||
command: proxymap
|
||||
maxproc: 1
|
||||
type: unix
|
||||
|
||||
relay:
|
||||
args:
|
||||
- '# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5'
|
||||
chroot: false
|
||||
command: smtp
|
||||
type: unix
|
||||
|
||||
showq:
|
||||
chroot: false
|
||||
private: false
|
||||
type: unix
|
||||
|
||||
error:
|
||||
chroot: false
|
||||
type: unix
|
||||
|
||||
retry:
|
||||
chroot: false
|
||||
command: error
|
||||
type: unix
|
||||
|
||||
discard:
|
||||
chroot: false
|
||||
type: unix
|
||||
|
||||
local:
|
||||
chroot: false
|
||||
type: unix
|
||||
unpriv: false
|
||||
|
||||
virtual:
|
||||
chroot: false
|
||||
type: unix
|
||||
unpriv: false
|
||||
|
||||
lmtp:
|
||||
chroot: false
|
||||
type: unix
|
||||
|
||||
anvil:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
type: unix
|
||||
|
||||
scache:
|
||||
chroot: false
|
||||
maxproc: 1
|
||||
type: unix
|
||||
|
||||
# Postfix MDA definitions, these are optional and commented out by default
|
||||
maildrop:
|
||||
argv: /usr/local/bin/maildrop
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '-d ${recipient}'
|
||||
flags: DRhu
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: vmail
|
||||
|
||||
cyrus:
|
||||
argv: /cyrus/bin/deliver
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: "-e -r ${sender} -m ${extension} ${user}"
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: cyrus
|
||||
|
||||
old-cyrus:
|
||||
argv: /cyrus/bin/deliver
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '-e -m ${extension} ${user}'
|
||||
flags: R
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: cyrus
|
||||
|
||||
uucp:
|
||||
argv: uux
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '-r -n -z -a$sender - $nexthop!rmail ($recipient)'
|
||||
flags: Fqhu
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: uucp
|
||||
|
||||
ifmail:
|
||||
argv: /usr/lib/ifmail/ifmail
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '-r $nexthop ($recipient)'
|
||||
flags: F
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: ftn
|
||||
|
||||
bsmtp:
|
||||
argv: /usr/local/sbin/bsmtp
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '-f $sender $nexthop $recipient'
|
||||
flags: Fq.
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: bsmtp
|
||||
|
||||
scalemail-backend:
|
||||
argv: /usr/lib/scalemail/bin/scalemail-store
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '${nexthop} ${user} ${extension}'
|
||||
flags: R
|
||||
maxproc: 2
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: scalemail
|
||||
|
||||
mailman:
|
||||
argv: /usr/lib/mailman/bin/postfix-to-mailman.py
|
||||
chroot: false
|
||||
command: pipe
|
||||
enable: false
|
||||
extras: '${nexthop} ${user}'
|
||||
flags: FR
|
||||
type: unix
|
||||
unpriv: false
|
||||
user: list
|
||||
|
||||
|
||||
# Service order inside the master.cf file
|
||||
order:
|
||||
- smtp
|
||||
- smtp-postscreen
|
||||
- smtpd
|
||||
- dnsblog
|
||||
- tlsproxy
|
||||
- submission
|
||||
- smtps
|
||||
- '628'
|
||||
- pickup
|
||||
- cleanup
|
||||
- qmgr
|
||||
- qmgr-oqmgr
|
||||
- tlsmgr
|
||||
- rewrite
|
||||
- bounce
|
||||
- defer
|
||||
- trace
|
||||
- verify
|
||||
- flush
|
||||
- proxymap
|
||||
- proxywrite
|
||||
- smtp-unix
|
||||
- relay
|
||||
- showq
|
||||
- error
|
||||
- retry
|
||||
- discard
|
||||
- local
|
||||
- virtual
|
||||
- lmtp
|
||||
- anvil
|
||||
- scache
|
30
pre-commit_semantic-release.sh
Executable file
30
pre-commit_semantic-release.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
###############################################################################
|
||||
# (A) Update `FORMULA` with `${nextRelease.version}`
|
||||
###############################################################################
|
||||
sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA
|
||||
|
||||
|
||||
###############################################################################
|
||||
# (B) Use `m2r2` to convert automatically produced `.md` docs to `.rst`
|
||||
###############################################################################
|
||||
|
||||
# Install `m2r2`
|
||||
pip3 install m2r2
|
||||
|
||||
# Copy and then convert the `.md` docs
|
||||
cp ./*.md docs/
|
||||
cd docs/ || exit
|
||||
m2r2 --overwrite ./*.md
|
||||
|
||||
# Change excess `H1` headings to `H2` in converted `CHANGELOG.rst`
|
||||
sed -i -e '/^=.*$/s/=/-/g' CHANGELOG.rst
|
||||
sed -i -e '1,4s/-/=/g' CHANGELOG.rst
|
||||
|
||||
# Use for debugging output, when required
|
||||
# cat AUTHORS.rst
|
||||
# cat CHANGELOG.rst
|
||||
|
||||
# Return back to the main directory
|
||||
cd ..
|
18
release-rules.js
Normal file
18
release-rules.js
Normal file
@ -0,0 +1,18 @@
|
||||
// No release is triggered for the types commented out below.
|
||||
// Commits using these types will be incorporated into the next release.
|
||||
//
|
||||
// NOTE: Any changes here must be reflected in `CONTRIBUTING.md`.
|
||||
module.exports = [
|
||||
{breaking: true, release: 'major'},
|
||||
// {type: 'build', release: 'patch'},
|
||||
// {type: 'chore', release: 'patch'},
|
||||
// {type: 'ci', release: 'patch'},
|
||||
{type: 'docs', release: 'patch'},
|
||||
{type: 'feat', release: 'minor'},
|
||||
{type: 'fix', release: 'patch'},
|
||||
{type: 'perf', release: 'patch'},
|
||||
{type: 'refactor', release: 'patch'},
|
||||
{type: 'revert', release: 'patch'},
|
||||
{type: 'style', release: 'patch'},
|
||||
{type: 'test', release: 'patch'},
|
||||
];
|
107
release.config.js
Normal file
107
release.config.js
Normal file
@ -0,0 +1,107 @@
|
||||
module.exports = {
|
||||
branch: 'master',
|
||||
repositoryUrl: 'https://github.com/saltstack-formulas/postfix-formula',
|
||||
plugins: [
|
||||
['@semantic-release/commit-analyzer', {
|
||||
preset: 'angular',
|
||||
releaseRules: './release-rules.js',
|
||||
}],
|
||||
'@semantic-release/release-notes-generator',
|
||||
['@semantic-release/changelog', {
|
||||
changelogFile: 'CHANGELOG.md',
|
||||
changelogTitle: '# Changelog',
|
||||
}],
|
||||
['@semantic-release/exec', {
|
||||
prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}',
|
||||
}],
|
||||
['@semantic-release/git', {
|
||||
assets: ['*.md', 'docs/*.rst', 'FORMULA'],
|
||||
}],
|
||||
'@semantic-release/github',
|
||||
],
|
||||
generateNotes: {
|
||||
preset: 'angular',
|
||||
writerOpts: {
|
||||
// Required due to upstream bug preventing all types being displayed.
|
||||
// Bug: https://github.com/conventional-changelog/conventional-changelog/issues/317
|
||||
// Fix: https://github.com/conventional-changelog/conventional-changelog/pull/410
|
||||
transform: (commit, context) => {
|
||||
const issues = []
|
||||
|
||||
commit.notes.forEach(note => {
|
||||
note.title = `BREAKING CHANGES`
|
||||
})
|
||||
|
||||
// NOTE: Any changes here must be reflected in `CONTRIBUTING.md`.
|
||||
if (commit.type === `feat`) {
|
||||
commit.type = `Features`
|
||||
} else if (commit.type === `fix`) {
|
||||
commit.type = `Bug Fixes`
|
||||
} else if (commit.type === `perf`) {
|
||||
commit.type = `Performance Improvements`
|
||||
} else if (commit.type === `revert`) {
|
||||
commit.type = `Reverts`
|
||||
} else if (commit.type === `docs`) {
|
||||
commit.type = `Documentation`
|
||||
} else if (commit.type === `style`) {
|
||||
commit.type = `Styles`
|
||||
} else if (commit.type === `refactor`) {
|
||||
commit.type = `Code Refactoring`
|
||||
} else if (commit.type === `test`) {
|
||||
commit.type = `Tests`
|
||||
} else if (commit.type === `build`) {
|
||||
commit.type = `Build System`
|
||||
// } else if (commit.type === `chore`) {
|
||||
// commit.type = `Maintenance`
|
||||
} else if (commit.type === `ci`) {
|
||||
commit.type = `Continuous Integration`
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
if (commit.scope === `*`) {
|
||||
commit.scope = ``
|
||||
}
|
||||
|
||||
if (typeof commit.hash === `string`) {
|
||||
commit.shortHash = commit.hash.substring(0, 7)
|
||||
}
|
||||
|
||||
if (typeof commit.subject === `string`) {
|
||||
let url = context.repository
|
||||
? `${context.host}/${context.owner}/${context.repository}`
|
||||
: context.repoUrl
|
||||
if (url) {
|
||||
url = `${url}/issues/`
|
||||
// Issue URLs.
|
||||
commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => {
|
||||
issues.push(issue)
|
||||
return `[#${issue}](${url}${issue})`
|
||||
})
|
||||
}
|
||||
if (context.host) {
|
||||
// User URLs.
|
||||
commit.subject = commit.subject.replace(/\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => {
|
||||
if (username.includes('/')) {
|
||||
return `@${username}`
|
||||
}
|
||||
|
||||
return `[@${username}](${context.host}/${username})`
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// remove references that already appear in the subject
|
||||
commit.references = commit.references.filter(reference => {
|
||||
if (issues.indexOf(reference.issue) === -1) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
return commit
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
50
test/integration/default/README.md
Normal file
50
test/integration/default/README.md
Normal file
@ -0,0 +1,50 @@
|
||||
# InSpec Profile: `default`
|
||||
|
||||
This shows the implementation of the `default` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
|
||||
|
||||
## Verify a profile
|
||||
|
||||
InSpec ships with built-in features to verify a profile structure.
|
||||
|
||||
```bash
|
||||
$ inspec check default
|
||||
Summary
|
||||
-------
|
||||
Location: default
|
||||
Profile: profile
|
||||
Controls: 4
|
||||
Timestamp: 2019-06-24T23:09:01+00:00
|
||||
Valid: true
|
||||
|
||||
Errors
|
||||
------
|
||||
|
||||
Warnings
|
||||
--------
|
||||
```
|
||||
|
||||
## Execute a profile
|
||||
|
||||
To run all **supported** controls on a local machine use `inspec exec /path/to/profile`.
|
||||
|
||||
```bash
|
||||
$ inspec exec default
|
||||
..
|
||||
|
||||
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
|
||||
8 examples, 0 failures
|
||||
```
|
||||
|
||||
## Execute a specific control from a profile
|
||||
|
||||
To run one control from the profile use `inspec exec /path/to/profile --controls name`.
|
||||
|
||||
```bash
|
||||
$ inspec exec default --controls package
|
||||
.
|
||||
|
||||
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
|
||||
1 examples, 0 failures
|
||||
```
|
||||
|
||||
See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb).
|
9
test/integration/default/controls/pkgs_spec.rb
Normal file
9
test/integration/default/controls/pkgs_spec.rb
Normal file
@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
control 'Postfix packages' do
|
||||
title 'should be installed'
|
||||
|
||||
describe package('postfix') do
|
||||
it { should be_installed }
|
||||
end
|
||||
end
|
20
test/integration/default/controls/postfix_maps_spec.rb
Normal file
20
test/integration/default/controls/postfix_maps_spec.rb
Normal file
@ -0,0 +1,20 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
control 'Postfix maps' do
|
||||
title 'maps have been generated properly'
|
||||
|
||||
describe command('postmap -q example.com /etc/postfix/transport') do
|
||||
its('stdout') { should eq "10.1.1.1\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
|
||||
describe command('postmap -q example.com /etc/postfix/tls_policy') do
|
||||
its('stdout') { should eq "encrypt\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
|
||||
describe command('postmap -q .example.com /etc/postfix/tls_policy') do
|
||||
its('stdout') { should eq "encrypt\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
end
|
25
test/integration/default/controls/postfix_maps_type_spec.rb
Normal file
25
test/integration/default/controls/postfix_maps_type_spec.rb
Normal file
@ -0,0 +1,25 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
control 'Postfix map types' do
|
||||
title 'maps types are generated properly'
|
||||
|
||||
# CIDR
|
||||
describe command('postmap -q "192.168.0.0/16" /etc/postfix/check_cidr') do
|
||||
its('stdout') { should eq "REJECT\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
|
||||
# PCRE
|
||||
describe command(
|
||||
'postmap -q "/^(?!owner-)(.*)-outgoing@(.*)/" /etc/postfix/check_pcre'
|
||||
) do
|
||||
its('stdout') { should eq "550 Use ${1}@${2} instead\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
|
||||
# REGEXP
|
||||
describe command('postmap -q "/[%!@].*[%!@]/" /etc/postfix/check_client_access') do
|
||||
its('stdout') { should eq "550 Sender-specified routing rejected\n" }
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
||||
end
|
73
test/integration/default/controls/postfix_spec.rb
Normal file
73
test/integration/default/controls/postfix_spec.rb
Normal file
@ -0,0 +1,73 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
control 'Postfix config' do
|
||||
title 'config is generated correctly'
|
||||
|
||||
describe postfix_conf do
|
||||
its('biff') { should cmp 'no' }
|
||||
its('compatibility_level') { should cmp '2' }
|
||||
its('append_dot_mydomain') { should cmp 'no' }
|
||||
its('readme_directory') { should cmp 'no' }
|
||||
its('smtpd_sasl_auth_enable') { should cmp 'yes' }
|
||||
its('smtpd_sasl_path') { should cmp '/var/run/dovecot/auth-client' }
|
||||
its('smtpd_sasl_type') { should cmp 'dovecot' }
|
||||
its('smtpd_sasl_security_options') { should cmp 'noanonymous' }
|
||||
its('smtpd_sasl_tls_security_options') { should cmp '$smtpd_sasl_security_options' }
|
||||
its('smtpd_tls_auth_only') { should cmp 'yes' }
|
||||
its('smtpd_use_tls') { should cmp 'yes' }
|
||||
its('smtpd_tls_loglevel') { should cmp '1' }
|
||||
its('smtpd_tls_security_level') { should cmp 'may' }
|
||||
its('smtp_tls_CApath') { should cmp '/etc/ssl/certs' }
|
||||
its('smtpd_tls_cert_file') { should cmp '/etc/postfix/ssl/server-cert.crt' }
|
||||
its('smtpd_tls_key_file') { should cmp '/etc/postfix/ssl/server-cert.key' }
|
||||
its('smtpd_tls_session_cache_database') do
|
||||
should cmp 'btree:${data_directory}/smtpd_scache'
|
||||
end
|
||||
its('smtpd_tls_mandatory_ciphers') { should cmp 'high' }
|
||||
its('tls_preempt_cipherlist') { should cmp 'yes' }
|
||||
its('smtp_tls_loglevel') { should cmp '1' }
|
||||
its('smtp_tls_security_level') { should cmp 'may' }
|
||||
its('smtp_tls_session_cache_database') do
|
||||
should cmp 'btree:${data_directory}/smtp_scache'
|
||||
end
|
||||
its('myhostname') { should cmp 'localhost' }
|
||||
its('alias_maps') { should cmp 'hash:/etc/aliases' }
|
||||
its('alias_database') { should cmp 'hash:/etc/aliases' }
|
||||
its('mydestination') { should cmp 'localhost, localhost.localdomain' }
|
||||
its('relayhost') { should cmp '' }
|
||||
its('mynetworks') { should cmp '127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128' }
|
||||
its('mailbox_size_limit') { should cmp '0' }
|
||||
its('recipient_delimiter') { should cmp '+' }
|
||||
its('inet_interfaces') { should cmp '127.0.0.1' }
|
||||
its('inet_protocols') { should cmp 'all' }
|
||||
its('message_size_limit') { should cmp '41943040' }
|
||||
its('smtpd_recipient_restrictions') do
|
||||
should cmp 'permit_mynetworks,'\
|
||||
' permit_sasl_authenticated,'\
|
||||
' reject_unauth_destination'
|
||||
end
|
||||
its('transport_maps') { should cmp 'hash:/etc/postfix/transport' }
|
||||
its('smtp_tls_policy_maps') { should cmp 'hash:/etc/postfix/tls_policy' }
|
||||
its('smtp_sasl_password_maps') { should cmp 'hash:/etc/postfix/sasl_passwd' }
|
||||
its('sender_canonical_maps') { should cmp 'hash:/etc/postfix/sender_canonical' }
|
||||
its('relay_recipient_maps') { should cmp 'hash:/etc/postfix/relay_domains' }
|
||||
its('virtual_alias_maps') { should cmp 'hash:/etc/postfix/virtual' }
|
||||
its('local_transport') { should cmp 'virtual' }
|
||||
its('local_recipient_maps') { should cmp '$virtual_mailbox_maps' }
|
||||
its('smtpd_relay_restrictions') do
|
||||
should cmp 'permit_mynetworks, '\
|
||||
'permit_sasl_authenticated, '\
|
||||
'reject_unauth_destination'
|
||||
end
|
||||
its('smtpd_sasl_local_domain') { should cmp '$mydomain' }
|
||||
its('smtpd_tls_session_cache_timeout') { should cmp '3600s' }
|
||||
its('relay_domains') { should cmp '$mydestination' }
|
||||
its('smtp_use_tls') { should cmp 'yes' }
|
||||
its('smtp_tls_cert_file') do
|
||||
should cmp '/etc/postfix/ssl/example.com-relay-client-cert.crt'
|
||||
end
|
||||
its('smtp_tls_key_file') do
|
||||
should cmp '/etc/postfix/ssl/example.com-relay-client-cert.key'
|
||||
end
|
||||
end
|
||||
end
|
14
test/integration/default/controls/service_spec.rb
Normal file
14
test/integration/default/controls/service_spec.rb
Normal file
@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
control 'Postfix service' do
|
||||
title 'should be running'
|
||||
|
||||
describe service('postfix') do
|
||||
it { should be_enabled }
|
||||
it { should be_running }
|
||||
end
|
||||
|
||||
describe port(25) do
|
||||
it { should be_listening }
|
||||
end
|
||||
end
|
28
test/integration/default/inspec.yml
Normal file
28
test/integration/default/inspec.yml
Normal file
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
name: default
|
||||
title: postfix formula
|
||||
maintainer: SaltStack Formulas
|
||||
license: Apache-2.0
|
||||
summary: Verify that the postfix formula is setup and configured correctly
|
||||
depends:
|
||||
- name: share
|
||||
path: test/integration/share
|
||||
supports:
|
||||
- platform-name: debian
|
||||
- platform-name: ubuntu
|
||||
- platform-name: centos
|
||||
- platform-name: fedora
|
||||
- platform-name: opensuse
|
||||
- platform-name: suse
|
||||
- platform-name: freebsd
|
||||
- platform-name: openbsd
|
||||
- platform-name: amazon
|
||||
- platform-name: oracle
|
||||
- platform-name: arch
|
||||
- platform-name: gentoo
|
||||
- platform-name: almalinux
|
||||
- platform-name: rocky
|
||||
- platform-name: mac_os_x
|
||||
- platform: windows
|
22
test/integration/share/README.md
Normal file
22
test/integration/share/README.md
Normal file
@ -0,0 +1,22 @@
|
||||
# InSpec Profile: `share`
|
||||
|
||||
This shows the implementation of the `share` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
|
||||
|
||||
Its goal is to share the libraries between all profiles.
|
||||
|
||||
## Libraries
|
||||
|
||||
### `system`
|
||||
|
||||
The `system` library provides easy access to system dependent information:
|
||||
|
||||
- `system.platform`: based on `inspec.platform`, modify to values that are more consistent from a SaltStack perspective
|
||||
- `system.platform[:family]` provide a family name for Arch and Gentoo
|
||||
- `system.platform[:name]` append `linux` to both `amazon` and `oracle`; ensure Windows platforms are resolved as simply `windows`
|
||||
- `system.platform[:release]` tweak Arch, Amazon Linux, Gentoo, openSUSE and Windows:
|
||||
- `Arch` is always `base-latest`
|
||||
- `Amazon Linux` release `2018` is resolved as `1`
|
||||
- `Gentoo` release is trimmed to its major version number and then the init system is appended (i.e. `sysv` or `sysd`)
|
||||
- `openSUSE` is resolved as `tumbleweed` if the `platform[:release]` is in date format
|
||||
- `Windows` uses the widely-used release number (e.g. `8.1` or `2019-server`) in place of the actual system release version
|
||||
- `system.platform[:finger]` is the concatenation of the name and the major release number (except for Ubuntu, which gives `ubuntu-20.04` for example)
|
25
test/integration/share/inspec.yml
Normal file
25
test/integration/share/inspec.yml
Normal file
@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
name: share
|
||||
title: InSpec shared resources
|
||||
maintainer: SaltStack Formulas
|
||||
license: Apache-2.0
|
||||
summary: shared resources
|
||||
supports:
|
||||
- platform-name: debian
|
||||
- platform-name: ubuntu
|
||||
- platform-name: centos
|
||||
- platform-name: fedora
|
||||
- platform-name: opensuse
|
||||
- platform-name: suse
|
||||
- platform-name: freebsd
|
||||
- platform-name: openbsd
|
||||
- platform-name: amazon
|
||||
- platform-name: oracle
|
||||
- platform-name: arch
|
||||
- platform-name: gentoo
|
||||
- platform-name: almalinux
|
||||
- platform-name: rocky
|
||||
- platform-name: mac_os_x
|
||||
- platform: windows
|
138
test/integration/share/libraries/system.rb
Normal file
138
test/integration/share/libraries/system.rb
Normal file
@ -0,0 +1,138 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# system.rb -- InSpec resources for system values
|
||||
# Author: Daniel Dehennin <daniel.dehennin@ac-dijon.fr>
|
||||
# Copyright (C) 2020 Daniel Dehennin <daniel.dehennin@ac-dijon.fr>
|
||||
|
||||
# rubocop:disable Metrics/ClassLength
|
||||
class SystemResource < Inspec.resource(1)
|
||||
name 'system'
|
||||
|
||||
attr_reader :platform
|
||||
|
||||
def initialize
|
||||
super
|
||||
@platform = build_platform
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def build_platform
|
||||
{
|
||||
family: build_platform_family,
|
||||
name: build_platform_name,
|
||||
release: build_platform_release,
|
||||
finger: build_platform_finger,
|
||||
codename: build_platform_codename
|
||||
}
|
||||
end
|
||||
|
||||
def build_platform_family
|
||||
case inspec.platform[:name]
|
||||
when 'arch', 'gentoo'
|
||||
inspec.platform[:name]
|
||||
else
|
||||
inspec.platform[:family]
|
||||
end
|
||||
end
|
||||
|
||||
def build_platform_name
|
||||
case inspec.platform[:name]
|
||||
when 'amazon', 'oracle', 'rocky'
|
||||
"#{inspec.platform[:name]}linux"
|
||||
when /^windows_/
|
||||
inspec.platform[:family]
|
||||
else
|
||||
inspec.platform[:name]
|
||||
end
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity
|
||||
def build_platform_release
|
||||
case inspec.platform[:name]
|
||||
when 'amazon'
|
||||
# `2018` relase is named `1` in `kitchen.yml`
|
||||
inspec.platform[:release].gsub(/2018.*/, '1')
|
||||
when 'arch'
|
||||
'base-latest'
|
||||
when 'gentoo'
|
||||
"#{inspec.platform[:release].split('.')[0]}-#{derive_gentoo_init_system}"
|
||||
when 'mac_os_x'
|
||||
inspec.command('sw_vers -productVersion').stdout.to_s
|
||||
when 'opensuse'
|
||||
# rubocop:disable Style/NumericLiterals,Layout/LineLength
|
||||
inspec.platform[:release].to_i > 20210101 ? 'tumbleweed' : inspec.platform[:release]
|
||||
# rubocop:enable Style/NumericLiterals,Layout/LineLength
|
||||
when 'windows_8.1_pro'
|
||||
'8.1'
|
||||
when 'windows_server_2022_datacenter'
|
||||
'2022-server'
|
||||
when 'windows_server_2019_datacenter'
|
||||
'2019-server'
|
||||
when 'windows_server_2016_datacenter'
|
||||
'2016-server'
|
||||
else
|
||||
inspec.platform[:release]
|
||||
end
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity
|
||||
|
||||
def derive_gentoo_init_system
|
||||
inspec.command('systemctl').exist? ? 'sysd' : 'sysv'
|
||||
end
|
||||
|
||||
def build_platform_finger
|
||||
"#{build_platform_name}-#{build_finger_release}"
|
||||
end
|
||||
|
||||
def build_finger_release
|
||||
case inspec.platform[:name]
|
||||
when 'ubuntu'
|
||||
build_platform_release.split('.').slice(0, 2).join('.')
|
||||
else
|
||||
build_platform_release.split('.')[0]
|
||||
end
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity
|
||||
def build_platform_codename
|
||||
case build_platform_finger
|
||||
when 'ubuntu-22.04'
|
||||
'jammy'
|
||||
when 'ubuntu-20.04'
|
||||
'focal'
|
||||
when 'ubuntu-18.04'
|
||||
'bionic'
|
||||
when 'debian-11'
|
||||
'bullseye'
|
||||
when 'debian-10'
|
||||
'buster'
|
||||
when 'debian-9'
|
||||
'stretch'
|
||||
when 'almalinux-8'
|
||||
"AlmaLinux #{build_platform_release} (Arctic Sphynx)"
|
||||
when 'amazonlinux-2'
|
||||
'Amazon Linux 2'
|
||||
when 'arch-base-latest'
|
||||
'Arch Linux'
|
||||
when 'centos-7'
|
||||
'CentOS Linux 7 (Core)'
|
||||
when 'centos-8'
|
||||
'CentOS Stream 8'
|
||||
when 'opensuse-tumbleweed'
|
||||
'openSUSE Tumbleweed'
|
||||
when 'opensuse-15'
|
||||
"openSUSE Leap #{build_platform_release}"
|
||||
when 'oraclelinux-8', 'oraclelinux-7'
|
||||
"Oracle Linux Server #{build_platform_release}"
|
||||
when 'gentoo-2-sysd', 'gentoo-2-sysv'
|
||||
'Gentoo/Linux'
|
||||
when 'rockylinux-8'
|
||||
"Rocky Linux #{build_platform_release} (Green Obsidian)"
|
||||
else
|
||||
''
|
||||
end
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength,Metrics/CyclomaticComplexity
|
||||
end
|
||||
# rubocop:enable Metrics/ClassLength
|
183
test/salt/pillar/default.sls
Normal file
183
test/salt/pillar/default.sls
Normal file
@ -0,0 +1,183 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
postfix:
|
||||
manage_master_config: true
|
||||
master_config:
|
||||
# Preferred way of managing services/processes. This allows for finegrained
|
||||
# control over each service. See postfix/services.yaml for defaults that can
|
||||
# be overridden.
|
||||
services:
|
||||
smtp:
|
||||
# Limit to no more than 10 smtp processes
|
||||
maxproc: 10
|
||||
# Disable oldstyle TLS wrapped SMTP
|
||||
smtps:
|
||||
enable: false
|
||||
# Enable submission service on port 587/tcp with custom options
|
||||
submission:
|
||||
enable: true
|
||||
args:
|
||||
- "-o smtpd_tls_security_level=encrypt"
|
||||
- "-o smtpd_sasl_auth_enable=yes"
|
||||
- "-o smtpd_client_restrictions=permit_sasl_authenticated,reject"
|
||||
tlsproxy:
|
||||
enable: true
|
||||
chroot: true
|
||||
|
||||
# Backwards compatible definition of dovecot delivery in master.cf
|
||||
enable_dovecot: false
|
||||
# Backwards compatible definition of submission listener in master.cf
|
||||
enable_submission: false
|
||||
|
||||
enable_service: true
|
||||
reload_service: true
|
||||
|
||||
config:
|
||||
smtpd_banner: $myhostname ESMTP $mail_name
|
||||
smtp_tls_CApath: /etc/ssl/certs
|
||||
biff: 'no'
|
||||
append_dot_mydomain: 'no'
|
||||
readme_directory: 'no'
|
||||
myhostname: localhost
|
||||
mydestination: localhost, localhost.localdomain
|
||||
relayhost: ''
|
||||
mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
mailbox_size_limit: 0
|
||||
recipient_delimiter: +
|
||||
# using all has problems in centos with ipv6
|
||||
inet_interfaces: 127.0.0.1
|
||||
inet_protocols: all
|
||||
|
||||
# Alias
|
||||
alias_maps: hash:/etc/aliases
|
||||
# This is the list of files for the newaliases
|
||||
# cmd to process (see postconf(5) for details).
|
||||
# Only local hash/btree/dbm files:
|
||||
alias_database: hash:/etc/aliases
|
||||
|
||||
local_transport: virtual
|
||||
local_recipient_maps: $virtual_mailbox_maps
|
||||
transport_maps: hash:/etc/postfix/transport
|
||||
|
||||
# Other map types
|
||||
check_client_access_maps: regexp:/etc/postfix/check_client_access
|
||||
check_cidr_maps: cidr:/etc/postfix/check_cidr
|
||||
check_pcre_maps: pcre:/etc/postfix/check_pcre
|
||||
|
||||
# SMTP server
|
||||
smtpd_tls_session_cache_database: btree:${data_directory}/smtpd_scache
|
||||
smtpd_use_tls: 'yes'
|
||||
smtpd_sasl_auth_enable: 'yes'
|
||||
smtpd_sasl_type: dovecot
|
||||
smtpd_sasl_path: /var/run/dovecot/auth-client
|
||||
smtpd_recipient_restrictions: >-
|
||||
permit_mynetworks,
|
||||
permit_sasl_authenticated,
|
||||
reject_unauth_destination
|
||||
smtpd_relay_restrictions: >-
|
||||
permit_mynetworks,
|
||||
permit_sasl_authenticated,
|
||||
reject_unauth_destination
|
||||
smtpd_sasl_security_options: noanonymous
|
||||
smtpd_sasl_tls_security_options: $smtpd_sasl_security_options
|
||||
smtpd_tls_auth_only: 'yes'
|
||||
smtpd_sasl_local_domain: $mydomain
|
||||
smtpd_tls_loglevel: 1
|
||||
smtpd_tls_session_cache_timeout: 3600s
|
||||
|
||||
relay_domains: '$mydestination'
|
||||
|
||||
# SMTP server certificate and key (from pillar data)
|
||||
smtpd_tls_cert_file: /etc/postfix/ssl/server-cert.crt
|
||||
smtpd_tls_key_file: /etc/postfix/ssl/server-cert.key
|
||||
|
||||
# SMTP client
|
||||
smtp_tls_session_cache_database: btree:${data_directory}/smtp_scache
|
||||
smtp_use_tls: 'yes'
|
||||
smtp_tls_cert_file: /etc/postfix/ssl/example.com-relay-client-cert.crt
|
||||
smtp_tls_key_file: /etc/postfix/ssl/example.com-relay-client-cert.key
|
||||
smtp_tls_policy_maps: hash:/etc/postfix/tls_policy
|
||||
|
||||
smtp_sasl_password_maps: hash:/etc/postfix/sasl_passwd
|
||||
sender_canonical_maps: hash:/etc/postfix/sender_canonical
|
||||
relay_recipient_maps: hash:/etc/postfix/relay_domains
|
||||
virtual_alias_maps: hash:/etc/postfix/virtual
|
||||
|
||||
aliases:
|
||||
# manage single aliases
|
||||
# this uses the aliases file defined in the minion config, /etc/aliases by default
|
||||
use_file: false
|
||||
present:
|
||||
root: info@example.com
|
||||
absent:
|
||||
- root
|
||||
|
||||
certificates:
|
||||
server-cert:
|
||||
public_cert: |
|
||||
-----BEGIN CERTIFICATE-----
|
||||
(Your primary SSL certificate: smtp.example.com.crt)
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
(Your intermediate certificate: example-ca.crt)
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
(Your root certificate: trusted-root.crt)
|
||||
-----END CERTIFICATE-----
|
||||
private_key: |
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
(Your Private key)
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
example.com-relay-client-cert:
|
||||
public_cert: |
|
||||
-----BEGIN CERTIFICATE-----
|
||||
(Your primary SSL certificate: smtp.example.com.crt)
|
||||
-----END CERTIFICATE-----
|
||||
private_key: |
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
(Your Private key)
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
mapping:
|
||||
transport_maps:
|
||||
- example.com: '10.1.1.1'
|
||||
|
||||
smtp_tls_policy_maps:
|
||||
- example.com: encrypt
|
||||
- .example.com: encrypt
|
||||
|
||||
smtp_sasl_password_maps:
|
||||
- smtp.example.com: myaccount:somepassword
|
||||
|
||||
sender_canonical_maps:
|
||||
- root: servers@example.com
|
||||
- nagios: alerts@example.com
|
||||
|
||||
relay_recipient_maps:
|
||||
- example.com: OK
|
||||
|
||||
virtual_alias_maps:
|
||||
- groupaliasexample:
|
||||
- someuser_1@example.com
|
||||
- someuser_2@example.com
|
||||
- singlealiasexample: someuser_3@example.com
|
||||
|
||||
check_client_access_maps:
|
||||
- '/[%!@].*[%!@]/':
|
||||
- 550 Sender-specified routing rejected
|
||||
|
||||
check_cidr_maps:
|
||||
- '192.168.1.1':
|
||||
- OK
|
||||
- '192.168.0.0/16':
|
||||
- REJECT
|
||||
- '2001:db8::1':
|
||||
- OK
|
||||
- '2001:db8::/32':
|
||||
- REJECT
|
||||
|
||||
check_pcre_maps:
|
||||
- '/^(?!owner-)(.*)-outgoing@(.*)/':
|
||||
- 550 Use ${1}@${2} instead
|
Loading…
Reference in New Issue
Block a user