ansible-role-postfix/templates/main.cf.j2
2020-07-28 21:15:21 +02:00

121 lines
4 KiB
Django/Jinja

# 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
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
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file = {{ postfix.ssl.cert }}
smtpd_tls_key_file = {{ postfix.ssl.key }}
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level = {{ postfix.ssl.incoming_security_level }}
smtpd_tls_auth_only = yes
smtp_tls_security_level = {{ postfix.ssl.outgoing_security_level }}
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
# SMTPD default settings
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
myhostname = {{ inventory_hostname }}
mydomain = {{ postfix.mydomain|d(ansible_domain) }}
myorigin = $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 {{ postfix.mynetworks|join(' ') }}
mydestination = {{ inventory_hostname_short }} {{ inventory_hostname }} localhost {{ postfix.mydestination|join(' ') }}
alias_maps = {{ postfix.virtual_alias_maps }}
relayhost = {{ postfix.relayhost }}
relay_domains = {{ postfix.relay_domains|join(', ') }}
relay_transport = {{ postfix.relay_transport }}
sender_dependent_relayhost_maps = {{ postfix.sender_dependent_relayhost_maps }}
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
message_size_limit = {{ postfix.message_size_limit }}
# Restrictions
smtpd_helo_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname
smtpd_sender_restrictions = reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_sender_login_mismatch,
permit_mynetworks,
permit_sasl_authenticated
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unlisted_recipient,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_non_fqdn_recipient,
permit
{% if ("mailbox_transport" in postfix and postfix.mailbox_transport == "dovecot")
or postfix.ldap.enable
%}
{# This applies when LDAP or dovecot are configured #}
smtpd_sasl_auth_enable = yes
{% endif %}
{% if ("mailbox_transport" in postfix and postfix.mailbox_transport == "dovecot")
and postfix.ldap.enable
%}
{# This applies when dovecot and LDAP are configured #}
dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
{% endif %}
{% if ("mailbox_transport" in postfix and postfix.mailbox_transport == "dovecot")
and not postfix.ldap.enable
%}
{# This applies when dovecot is configured, but not LDAP #}
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
{% endif %}
# Virtual maps
virtual_alias_domains = {{ postfix.virtual_alias_domains|join(' ') }}
virtual_alias_maps = {{ postfix.virtual_alias_maps }}
# opendkim
{% if postfix.enable_opendkim %}
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
{% endif %}