{% if ansible_prolog -%}
{% from 'templates/ansible/prolog.j2' import prolog with context %}
{{ prolog() }}
{% endif -%}

# 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.

smtpd_banner = $myhostname ESMTP $mail_name
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_ask_ccert = yes
smtpd_tls_req_ccert = no
smtpd_tls_auth_only = yes
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = aNULL, RC4, MD5
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_dh1024_param_file = /etc/ssl/private/dh2048.pem
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_session_cache_timeout = 3600
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtp_tls_cert_file = $smtpd_tls_cert_file
smtp_tls_key_file = $smtpd_tls_key_file
smtp_tls_mandatory_ciphers = $smtpd_tls_mandatory_ciphers
smtp_tls_mandatory_exclude_ciphers = $smtpd_tls_mandatory_exclude_ciphers
smtp_tls_protocols = $smtpd_tls_protocols
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_timeout = 3600
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = {{ ansible_fqdn }}
myorigin = $myhostname
mydomain = $myhostname
mydestination = {{ ansible_fqdn }} {{ ansible_hostname }}

alias_maps = hash:/etc/aliases
alias_database = $alias_maps

{% if smtp_relay_host is defined -%}
relayhost = {{ smtp_relay_host }}
{%- endif %}

{% if smtp_relay_domains is defined %}
relay_domains =
{% for domain in smtp_relay_domains %}
    {{ domain}}
{% endfor %}
{% endif %}

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 {% if postfix_mynetworks is defined %}{{ postfix_mynetworks }}{% endif %}

mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0

message_size_limit = 0

recipient_delimiter = +
inet_interfaces = all

disable_vrfy_command = yes

smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unauth_destination,
    reject_unknown_recipient_domain,
    permit

smtpd_client_restrictions =
    permit_mynetworks,
    reject_unauth_pipelining,
    reject_unauth_destination

smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks,
    reject_non_fqdn_helo_hostname,
    reject_invalid_helo_hostname

smtpd_sender_restrictions =
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain