2015-08-22 12:14:21 +02:00
|
|
|
{% from "postfix/map.jinja" import postfix with context %}
|
|
|
|
|
2015-03-25 12:49:57 +01:00
|
|
|
{% set config = salt['pillar.get']('postfix:config', {}) -%}
|
2015-01-09 18:05:14 +01:00
|
|
|
{% set processed_parameters = ['aliases', 'virtual'] -%}
|
2014-11-21 19:38:45 +01:00
|
|
|
{% macro set_parameter(parameter, default=None) -%}
|
|
|
|
{% set value = config.get(parameter, default) -%}
|
|
|
|
{% if value is not none -%}
|
2015-08-22 12:39:32 +02:00
|
|
|
{%- if value is number or value is string %}
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ parameter }} = {{ value }}
|
2015-08-22 12:39:32 +02:00
|
|
|
{%- elif value is iterable %}
|
|
|
|
{{ parameter }} =
|
|
|
|
{%- for v in value %}
|
|
|
|
{{ v }},
|
|
|
|
{%- endfor %}
|
|
|
|
{%- endif %}
|
2014-11-21 19:38:45 +01:00
|
|
|
{%- do processed_parameters.append(parameter) -%}
|
|
|
|
{% endif -%}
|
|
|
|
{% endmacro -%}
|
2014-08-20 03:42:08 +02:00
|
|
|
# Managed by config management
|
2014-08-20 02:32:47 +02:00
|
|
|
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
|
|
|
|
|
|
|
|
|
|
|
# Debian specific: Specifying a file name will cause the first
|
|
|
|
# line of that file to be used as the name. The Debian default
|
|
|
|
# is /etc/mailname.
|
|
|
|
#myorigin = /etc/mailname
|
|
|
|
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('smtpd_banner', '$myhostname ESMTP $mail_name') }}
|
|
|
|
{{ set_parameter('biff', 'no') }}
|
2015-06-21 01:22:23 +02:00
|
|
|
{{ set_parameter('compatibility_level', '2') }}
|
2014-08-20 02:32:47 +02:00
|
|
|
|
|
|
|
# appending .domain is the MUA's job.
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('append_dot_mydomain', 'no') }}
|
2014-08-20 02:32:47 +02:00
|
|
|
|
|
|
|
# Uncomment the next line to generate "delayed mail" warnings
|
|
|
|
#delay_warning_time = 4h
|
|
|
|
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('readme_directory', 'no') }}
|
2014-08-20 02:32:47 +02:00
|
|
|
|
|
|
|
# TLS parameters
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('smtpd_tls_cert_file', '/etc/ssl/certs/ssl-cert-snakeoil.pem') }}
|
|
|
|
{{ set_parameter('smtpd_tls_key_file', '/etc/ssl/private/ssl-cert-snakeoil.key') }}
|
|
|
|
{{ set_parameter('smtpd_use_tls', 'yes') }}
|
|
|
|
{{ set_parameter('smtpd_tls_session_cache_database', 'btree:${data_directory}/smtpd_scache') }}
|
|
|
|
{{ set_parameter('smtp_tls_session_cache_database', 'btree:${data_directory}/smtp_scache') }}
|
2014-08-20 02:32:47 +02:00
|
|
|
|
|
|
|
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
|
|
|
|
# information on enabling SSL in the smtp client.
|
|
|
|
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('myhostname', grains['fqdn']) }}
|
2015-08-22 12:14:21 +02:00
|
|
|
{{ set_parameter('alias_maps', 'hash:' ~ postfix.aliases) }}
|
|
|
|
{{ set_parameter('alias_database', 'hash:' ~ postfix.aliases) }}
|
2015-08-22 12:39:32 +02:00
|
|
|
{{ set_parameter('mydestination', [grains['fqdn'], 'localhost', 'localhost.localdomain', grains['domain']]) }}
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('relayhost', '') }}
|
2015-08-22 12:39:32 +02:00
|
|
|
{{ set_parameter('mynetworks', ['127.0.0.0/8', '[::ffff:127.0.0.0]/104', '[::1]/128']) }}
|
2014-11-21 19:38:45 +01:00
|
|
|
{{ set_parameter('mailbox_size_limit', '0') }}
|
|
|
|
{{ set_parameter('recipient_delimiter', '+') }}
|
|
|
|
{{ set_parameter('inet_interfaces', 'all') }}
|
2015-02-04 12:16:36 +01:00
|
|
|
{{ set_parameter('message_size_limit', '41943040') }}
|
2015-08-22 13:59:29 +02:00
|
|
|
|
|
|
|
{% set relay_restrictions = ['permit_mynetworks', 'permit_sasl_authenticated', 'defer_unauth_destination'] %}
|
|
|
|
{% set policyd_spf = salt['pillar.get']('postfix:policyd-spf', {}) %}
|
|
|
|
{% if policyd_spf.get('enabled', False) %}
|
|
|
|
{% set relay_restrictions = relay_restrictions + ['check_policy_server unix:private/policyd-spf'] %}
|
|
|
|
policy-spf_time_limit = {{ policyd_spf.get('time_limit', '3600s') }}
|
|
|
|
{% endif %}
|
|
|
|
{{ set_parameter('smtpd_relay_restrictions', relay_restrictions) }}
|
2014-08-20 03:42:08 +02:00
|
|
|
|
2015-08-22 13:26:26 +02:00
|
|
|
{% set recipient_restrictions = ['permit_mynetworks', 'permit_sasl_authenticated', 'reject_unauth_destination'] %}
|
|
|
|
{% set postgrey_config = salt['pillar.get']('postfix:postgrey', {}) %}
|
|
|
|
{% if postgrey_config.get('enabled', False) %}
|
|
|
|
{% set recipient_restrictions = recipient_restrictions + ['check_policy_service ' ~ postgrey_config.get('location', 'inet:127.0.0.1:10030')] %}
|
|
|
|
{% endif %}
|
|
|
|
{{ set_parameter('smtpd_recipient_restrictions', recipient_restrictions) }}
|
|
|
|
|
2014-08-20 03:42:08 +02:00
|
|
|
{% if 'virtual' in pillar.get('postfix','') %}
|
|
|
|
virtual_alias_maps = hash:/etc/postfix/virtual
|
|
|
|
{% endif %}
|
|
|
|
|
2014-11-21 19:38:45 +01:00
|
|
|
{# Accept arbitrary parameters -#}
|
|
|
|
{% for parameter in config -%}
|
|
|
|
{% if parameter not in processed_parameters -%}
|
|
|
|
{{ set_parameter(parameter) }}
|
|
|
|
{% endif -%}
|
|
|
|
{% endfor -%}
|