{"id":15022807,"url":"https://github.com/markt-de/puppet-postfix","last_synced_at":"2025-09-30T07:30:41.985Z","repository":{"id":48049290,"uuid":"94716764","full_name":"markt-de/puppet-postfix","owner":"markt-de","description":"Puppet module to configure Postfix with multi instance support","archived":false,"fork":true,"pushed_at":"2023-12-06T08:40:09.000Z","size":170,"stargazers_count":2,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-16T05:15:09.900Z","etag":null,"topics":["postfix","puppet"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/oxc/postfix/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jiuka/puppet-postfix","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markt-de.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-06-18T22:32:15.000Z","updated_at":"2023-12-06T08:50:55.000Z","dependencies_parsed_at":"2023-08-08T21:35:08.662Z","dependency_job_id":null,"html_url":"https://github.com/markt-de/puppet-postfix","commit_stats":null,"previous_names":["markt-de/puppet-postfix","oxc/puppet-postfix"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markt-de%2Fpuppet-postfix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markt-de%2Fpuppet-postfix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markt-de%2Fpuppet-postfix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markt-de%2Fpuppet-postfix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markt-de","download_url":"https://codeload.github.com/markt-de/puppet-postfix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234712852,"owners_count":18875523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["postfix","puppet"],"created_at":"2024-09-24T19:58:24.405Z","updated_at":"2025-09-30T07:30:41.648Z","avatar_url":"https://github.com/markt-de.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# puppet-postfix\n\n[![Build Status](https://github.com/markt-de/puppet-postfix/actions/workflows/ci.yaml/badge.svg)](https://github.com/markt-de/puppet-postfix/actions/workflows/ci.yaml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/markt/postfix.svg)](https://forge.puppetlabs.com/markt/postfix)\n[![Puppet Forge](https://img.shields.io/puppetforge/dt/markt/postfix.svg)](https://forge.puppetlabs.com/markt/postfix)\n\n#### Table of Contents\n\n1. [Description](#description)\n1. [Usage](#usage)\n    * [Types](#types)\n1. [Reference](#reference)\n1. [Limitations](#limitations)\n1. [Development](#development)\n    - [Contributing](#contributing)\n\n## Description\n\nAn extremely flexible Puppet module to manage Postfix installation. Manage main.cf settings and master.cf entries by postconf backed native types. Both types include support for multiple Postfix instances. The Postfix instances can be managed with a native type too.\n\n## Usage\n\nThe easiest way to use this module is to specify all desired configuration in Hiera.\nHere is a close-to-real-life example:\n\n```yaml\npostfix::main_config:\n  alias_database: hash:/etc/aliases\n  alias_maps: hash:/etc/aliases\n  append_dot_mydomain: no\n  biff: no\n  inet_protocols: all\n  inet_interfaces: all\n  mydestination: '$myhostname, localdomain, localhost'\n  myorigin: '$mydomain'\n  mynetworks:\n    - '10.40.0.0/24'\n    - '127.0.0.0/8'\n    - '[::ffff:127.0.0.0]/104'\n    - '[::1]/128'\n  readme_directory: no\n  recipient_delimiter: +\n  smtpd_banner: '$myhostname ESMTP $mail_name'\n  smtpd_relay_restrictions:\n    - permit_mynetworks\n    - permit_sasl_authenticated\n    - defer_unauth_destination\n  smtpd_use_tls: yes\n  smtpd_tls_cert_file: \u0026postfix_cert /etc/postfix/ssl/postfix.crt\n  smtpd_tls_key_file: \u0026postfix_key /etc/postfix/ssl/postfix.key\n  smtpd_sasl_auth_enable: no # only enable for mandatory tls ports\n  smtpd_sasl_type: dovecot\n  smtpd_sasl_path: private/auth\n  # sasl only encrypted\n  smtpd_tls_auth_only: yes\n  smtpd_tls_security_level: may\n  virtual_transport: 'lmtp:unix:private/dovecot-lmtp'\n  milter_protocol: 6\n  common_milters: \u003e-\n    { inet:localhost:11332,\n    connect_timeout=10s,\n    default_action=accept }\n  smtpd_milters: '$common_milters'\n  non_smtpd_milters: '$common_milters'\n  milter_mail_macros: i {mail_addr} {client_addr} {client_name} {auth_authen}\n\npostfix::master_services:\n  # merged with the defaults defined in data/modules/postfix.yaml\n  smtps/inet: { ensure: present }\n  submission/inet: { ensure: present }\n```\n\nThis will create `postconf` and `postconf_master` resources for each setting.\nThe resource types can also be used directly as described below.\n\n### Generating default master.cf entries\n\nIn order to generate the default `postconf_master` hiera entries needed to run postfix,\nyou can use the provided master2hierayaml.rb script:\n\n```sh\nscripts/master2hierayaml.rb /usr/share/doc/postfix/defaults/master.cf \u003e data/modules/postfix.yaml\n```\n\nIt will try to parse active as well as commented entries and lines, and output warnings\nto stderr if it fails to do so. However, check the output carefully, otherwise you might\nend up with a non-working mail system.\n\n### Purging unmanaged entries\n\nBy default, this module will warn about unmanaged config entries in any managed `main.cf`\nand `master.cf`, but not remove them. To enable purging of those resources, set purge_main\nand purge_master to true:\n\n```yaml\npostfix::purge_main: true\npostfix::purge_master: true\n```\n\n### Types\n\nThe `postconf` type enables you to set or rest postconf parameters.\n\n```puppet\n  postconf { 'myhostname':\n    value =\u003e 'foo.bar',\n  }\n```\n\nThe `postmulti` type allows you to create, de/activate and destroy postfix\npostmulti instances with pupppet.\n\nBy default `ensure` is set to `active` but can be set to `inactive` or `absent`\nrespectively to deactivate or remove an postmulti instance.\n\nWhen using postmulti the resource name must begin with `postfix-`:\n\n```puppet\n  postmulti { 'postfix-foo': }\n```\n\nUsing the `::` syntax in resource titles allows you to manage different postfix instances.\nIn the following example the `foo::myhostname` postconf resource would internally\nset the Postfix configuration directory to `/etc/postfix-foo` and configure the parameter\nin this instance.\n\n```puppet\n  postconf { 'foo::myhostname':\n    parameter =\u003e 'myhostname',\n    value     =\u003e 'foo.bar',\n  }\n```\n\nThe `postconf_master` type enables you to manage the master.cf entries.\n\n```puppet\n  postconf_master { 'mytransport/unix':\n    command =\u003e 'smtp',\n  }\n```\n\nThe `service` and `type` params allow you to define the postconf_master service/type independently from\nthe resource name. Using the `::` syntax in resource titles again allows you to manage different postfix instances.\n\n```puppet\n  postconf_master { 'mytransport/unix':\n    command =\u003e 'smtp',\n  }\n\n  postconf_master { 'foo::mytransport/unix':\n    service    =\u003e 'mytransport',\n    type       =\u003e 'unix',\n    command    =\u003e 'smtp',\n  }\n```\n\n## Reference\n\nClasses and parameters are documented in [REFERENCE.md](REFERENCE.md).\n\n## Limitations\n\nThe postfix version of RHEL7 does not support postconf_master. An alternative version is available from the [IUS Community Project](https://ius.io/).\n\n## Development\n\n### Contributing\n\nPlease use the GitHub issues functionality to report any bugs or requests for new features. Feel free to fork and submit pull requests for potential contributions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkt-de%2Fpuppet-postfix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkt-de%2Fpuppet-postfix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkt-de%2Fpuppet-postfix/lists"}