diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2013-12-02 22:39:56 +0100 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2015-06-07 02:51:08 +0200 |
commit | c7080c68fb4594f01a2edc98a2014c109a5afe16 (patch) | |
tree | 1b5eb6b14ca62493d39bca40ceb98737ac1765ff | |
parent | 7d1622f3e5db18b40cab6cecfd3c2f1fab20d782 (diff) |
wibble
-rw-r--r-- | IMAP.yml | 3 | ||||
-rw-r--r-- | MX.yml | 1 | ||||
-rw-r--r-- | roles/common/tasks/mail.yml | 5 | ||||
-rw-r--r-- | roles/common/templates/etc/postfix/main.cf.j2 | 7 | ||||
-rw-r--r-- | roles/mx/tasks/main.yml | 3 | ||||
-rw-r--r-- | roles/mx/templates/etc/postfix/main.cf.j2 | 18 |
6 files changed, 18 insertions, 19 deletions
@@ -1,6 +1,5 @@ --- - name: Configure the IMAP server hosts: IMAP - sudo: True roles: - - IMAP + - { role: IMAP, inst: IMAP } @@ -1,9 +1,8 @@ --- - name: Configure the MX:es hosts: MX - sudo: True roles: - { role: mx, inst: MX } tags: - mail - postfix diff --git a/roles/common/tasks/mail.yml b/roles/common/tasks/mail.yml index c562c42..e8d61a8 100644 --- a/roles/common/tasks/mail.yml +++ b/roles/common/tasks/mail.yml @@ -16,50 +16,49 @@ - Restart Postfix - name: Link the dynamic maps & master.cf of each children to the master's # main.cf is specialized to each dedicated role, though file: src=../postfix/{{ item.1 }} dest=/etc/postfix-{{ postfix_instance[item.0].name }}/{{ item.1 }} owner=root group=root state=link force=yes register: r2 with_nested: - postfix_instance.keys() | intersect(group_names) | list - [ 'dynamicmaps.cf', 'master.cf' ] notify: - Restart Postfix - name: Configure Postfix (1) copy: src=etc/postfix/{{ item }} dest=/etc/postfix/{{ item }} owner=root group=root mode=0644 - register: r3 with_items: - master.cf - generic.pcre notify: - Reload Postfix - name: Configure Postfix (2) template: src=etc/postfix/main.cf.j2 dest=/etc/postfix/main.cf owner=root group=root mode=0644 - register: r4 + register: r3 notify: - Restart Postfix - name: Update the static local Postfix database postmap: cmd=postalias src=/etc/aliases db=cdb owner=root group=root mode=0644 # We're using CDB - name: Delete /etc/aliases.db file: path=/etc/aliases.db state=absent - name: Start Postfix service: name=postfix state=started - when: not (r1.changed or r2.changed or r3.changed or r4.changed) + when: not (r1.changed or r2.changed or r3.changed) - meta: flush_handlers diff --git a/roles/common/templates/etc/postfix/main.cf.j2 b/roles/common/templates/etc/postfix/main.cf.j2 index a856843..10d4244 100644 --- a/roles/common/templates/etc/postfix/main.cf.j2 +++ b/roles/common/templates/etc/postfix/main.cf.j2 @@ -18,46 +18,45 @@ append_dot_mydomain = no mynetworks_style = host inet_interfaces = loopback-only inet_protocols = ipv4 # No local delivery mydestination = local_transport = error:5.1.1 Mailbox unavailable alias_maps = local_recipient_maps = # All aliases are virtual default_database_type = cdb virtual_alias_maps = cdb:/etc/aliases alias_database = $virtual_alias_maps # Transform local FQDN addresses to addresses routable on the internet smtp_generic_maps = pcre:$config_directory/generic.pcre # Forward everything to our internal mailhub {% if 'MTA-out' in group_names %} -# TODO: use a UNIX socket instead -relay_transport = lmtp:unix:private/mta-out +relayhost = [127.0.0.1]:{{ MTA_out.port }} {% else %} -relayhost = [{{ MTA_out.IPv4 }}]:{{ MTA_out.port }} +relayhost = [{{ MTA_out.IPv4 }}]:{{ MTA_out.port }} {% endif %} -relay_domains = +relay_domains = # Tunnel everything through IPSec smtp_tls_security_level = none smtp_bind_address = 172.16.0.1 smtpd_tls_security_level = none # Turn off all TCP/IP listener ports except that dedicated to # samhain(8), which sadly cannot use pickup through the sendmail binary. master_service_disable = !16132.inet inet {% set multi_instance = False %} {%- for g in postfix_instance.keys() | sort -%} {%- if g in group_names -%} {%- if not multi_instance -%} {%- set multi_instance = True -%} ## Other postfix instances multi_instance_wrapper = $command_directory/postmulti -p -- multi_instance_enable = yes multi_instance_directories = {%- endif %} /etc/postfix-{{ postfix_instance[g].name }} diff --git a/roles/mx/tasks/main.yml b/roles/mx/tasks/main.yml index bd04feb..e2da61e 100644 --- a/roles/mx/tasks/main.yml +++ b/roles/mx/tasks/main.yml @@ -1,26 +1,27 @@ - name: Install Postfix & Postgrey apt: pkg={{ item }} with_items: - postfix - postfix-pcre - postfix-ldap + - postfix-cdb - postgrey - libnet-ldap-perl - libauthen-sasl-perl - name: Configure Postgrey lineinfile: dest=/etc/default/postgrey regexp='^POSTGREY_OPTS=' line='POSTGREY_OPTS="--privacy --unix=/var/spool/postfix-{{ postfix_instance[inst].name }}/private/postgrey"' owner=root group=root mode=0644 register: r notify: - Restart Postgrey - name: Start Postgrey service: name=postgrey state=started when: not r.changed - meta: flush_handlers @@ -36,40 +37,38 @@ - name: Create directory /etc/postfix-.../virtual file: path=/etc/postfix-{{ postfix_instance[inst].name }}/virtual owner=root group=root state=directory mode=0755 - name: Copy lookups tables copy: src=etc/postfix/virtual/{{ item }} dest=/etc/postfix-{{ postfix_instance[inst].name }}/virtual/{{ item }} owner=root group=root mode=0644 with_items: - mailbox_domains.cf - reserved_maps.pcre - alias_maps.cf - lists_maps.cf - alias_catchall_maps.cf - mailbox_maps.cf - reserved_transport_maps - transport_lists_maps.cf - notify: - - Restart Postfix - name: Compile the Reserved Transport Maps postmap: cmd=postalias instance={{ postfix_instance[inst].name }} src=/etc/postfix-{{ postfix_instance[inst].name }}/virtual/reserved_transport_maps db=cdb owner=root group=root mode=0644 - name: Copy reserved-alias.pl copy: src=usr/local/sbin/reserved-alias.pl dest=/usr/local/sbin/reserved-alias.pl owner=root group=root mode=0755 - name: Start Postfix service: name=postfix state=started when: not r.changed - meta: flush_handlers diff --git a/roles/mx/templates/etc/postfix/main.cf.j2 b/roles/mx/templates/etc/postfix/main.cf.j2 index 5c44781..8c1da35 100644 --- a/roles/mx/templates/etc/postfix/main.cf.j2 +++ b/roles/mx/templates/etc/postfix/main.cf.j2 @@ -6,93 +6,97 @@ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no readme_directory = no mail_owner = postfix delay_warning_time = 4h maximal_queue_lifetime = 5d myorigin = /etc/mailname myhostname = mx{{ mxno | default('') }}.$mydomain mydomain = {{ ansible_domain }} append_dot_mydomain = no # Turn off all TCP/IP listener ports except that necessary for the mail # exchange. master_service_disable = !smtp.inet inet queue_directory = /var/spool/postfix-{{ postfix_instance[inst].name }} data_directory = /var/lib/postfix-{{ postfix_instance[inst].name }} -multi_instance_group = {{ postfix_instance[inst].group }} +multi_instance_group = {{ postfix_instance[inst].group | default('') }} multi_instance_name = postfix-{{ postfix_instance[inst].name }} multi_instance_enable = yes # This server is a Mail eXchange mynetworks_style = host inet_interfaces = all inet_protocols = all # No local delivery mydestination = local_transport = error:5.1.1 Mailbox unavailable alias_maps = alias_database = local_recipient_maps = message_size_limit = 67108864 recipient_delimiter = + # Forward everything to our internal mailhub {% if 'MTA-out' in group_names %} -relay_transport = lmtp:unix:private/mta-out +relayhost = [127.0.0.1]:{{ MTA_out.port }} {% else %} -relayhost = [{{ MTA_out.IPv4 }}]:{{ MTA_out.port }} +relayhost = [{{ MTA_out.IPv4 }}]:{{ MTA_out.port }} {% endif %} -relay_domains = +relay_domains = +# Virtual transport {% if 'LDA' in group_names %} -virtual_transport = lmtp:unix:private/lda +virtual_transport = smtp:[127.0.0.1]:{{ LDA.port }} {% else %} virtual_transport = smtp:[{{ LDA.IPv4 }}]:{{ LDA.port }} {% endif %} virtual_mailbox_domains = ldap:$config_directory/virtual/mailbox_domains.cf virtual_alias_maps = pcre:$config_directory/virtual/reserved_maps.pcre ldap:$config_directory/virtual/alias_maps.cf ldap:$config_directory/virtual/lists_maps.cf ldap:$config_directory/virtual/alias_catchall_maps.cf virtual_mailbox_maps = ldap:$config_directory/virtual/mailbox_maps.cf mailbox_transport_maps = cdb:$config_directory/virtual/reserved_transport_maps ldap:$config_directory/virtual/transport_lists_maps.cf -# Pass the client information along to the content filter +# Don't rewrite remote headers local_header_rewrite_clients = +# Pass the client information along to the content filter smtp_send_xforward_command = yes +# Avoid splitting the envelope and scanning messages multiple times smtp_destination_recipient_limit = 1000 +# Tolerate occasional high latency smtp_data_done_timeout = 1200s # Tunnel everything through IPSec smtp_tls_security_level = none smtp_bind_address = 172.16.0.1 -# Virtual +# TLS smtpd_tls_security_level = may smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_CApath = /etc/ssl/certs/ smtpd_tls_session_cache_database= btree:$data_directory/smtpd_tls_session_cache smtpd_tls_received_header = yes smtpd_tls_ask_ccert = yes smtpd_tls_fingerprint_digest = sha1 smtpd_tls_eecdh_grade = strong tls_random_source = dev:/dev/urandom # http://en.linuxreviews.org/HOWTO_Stop_spam_using_Postfix # http://www.howtoforge.com/block_spam_at_mta_level_postfix strict_rfc821_envelopes = yes smtpd_delay_reject = yes disable_vrfy_command = yes |