Faidon has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/79754


Change subject: exim: add DKIM for wikimedia.org domains
......................................................................

exim: add DKIM for wikimedia.org domains

This adds DKIM support to exim manifests with three different keys:
1) typical user/machine mails From: @wikimedia.org
2) wiki-mail, i.e. MediaWiki generated emails, also from: @wikimedia.org
3) lists.wikimedia.org mails

The first two share the domain with different selectors, while the third
one uses lists.wikimedia.org as the domain. This will effectively mean
that the wikimedia.org domain will soon have DKIM with *four* different
selectors: wikimedia, wiki-mail, fundraising (already exists), google
(for Google Apps originating mail, private key belonging to Google,
TBD).

The manifest could be a lot more DRY by having a separate ::dkim defined
type but this is left a later iteration.

The private repo & DNS changes required by this change have already been
done; preexisting DKIM policy record specifies that *some* mail may be
signed for this domain, so this is effectively a no-op change.

DKIM support was added in exim4 4.70 and hence *cannot* be applied
manually to mchenry as it is right now.

Change-Id: I727cf3c894b99cff761c6822d719a755f7cd9cbc
---
M manifests/mail.pp
M templates/exim/exim4.conf.SMTP_IMAP_MM.erb
2 files changed, 51 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/54/79754/1

diff --git a/manifests/mail.pp b/manifests/mail.pp
index f26175a..dda823a 100644
--- a/manifests/mail.pp
+++ b/manifests/mail.pp
@@ -169,6 +169,13 @@
                                group => Debian-exim,
                                mode => 0440,
                                content => 
template("exim/exim4.conf.SMTP_IMAP_MM.erb");
+                       "/etc/exim4/dkim/":
+                               ensure => 'directory',
+                               purge => true,
+                               owner => root,
+                               group => Debian-exim,
+                               mode => 0440,
+                               require => Package[exim4-config];
                        "/etc/exim4/system_filter":
                                owner => root,
                                group => Debian-exim,
@@ -184,25 +191,53 @@
                class mail_relay {
                        Class["exim::config"] -> Class[exim::roled::mail_relay]
 
-                       file {
-                               "/etc/exim4/relay_domains":
+                       file { '/etc/exim4/relay_domains':
                                        owner => root,
                                        group => root,
                                        mode => 0444,
                                        source => 
"puppet:///files/exim/exim4.secondary_relay_domains.conf";
+                       }
+                       file { '/etc/exim4/dkim/wikimedia.org-wikimedia.key':
+                               ensure  => present,
+                               owner   => 'root',
+                               group   => 'Debian-exim',
+                               mode    => '0440',
+                               content => 
'puppet:///private/dkim/wikimedia.org-wikimedia.key',
+                               require => File['/etc/exim4/dkim'],
+                               notify  => Service['exim4'],
                        }
                }
 
                class mailman {
                        Class["exim::config"] -> Class[exim::roled::mailman]
 
-                       file {
-                               "/etc/exim4/aliases/lists.wikimedia.org":
+                       file { '/etc/exim4/aliases/lists.wikimedia.org':
                                        owner => root,
                                        group => root,
                                        mode => 0444,
                                        source => 
"puppet:///files/exim/exim4.listserver_aliases.conf";
                        }
+                       file { 
'/etc/exim4/dkim/lists.wikimedia.org-wikimedia.key':
+                               ensure  => present,
+                               owner   => 'root',
+                               group   => 'Debian-exim',
+                               mode    => '0440',
+                               content => 
'puppet:///private/dkim/lists.wikimedia.org-wikimedia.key',
+                               require => File['/etc/exim4/dkim'],
+                               notify  => Service['exim4'],
+                       }
+               }
+
+               if ( $mediawiki_relay == "true" ) {
+                       file { '/etc/exim4/dkim/wikimedia.org-wiki-mail.key':
+                               ensure  => present,
+                               owner   => 'root',
+                               group   => 'Debian-exim',
+                               mode    => '0440',
+                               content => 
'puppet:///private/dkim/wikimedia.org-wiki-mail.key',
+                               require => File['/etc/exim4/dkim'],
+                               notify  => Service['exim4'],
+                       }
                }
 
                if ( $enable_mailman == "true" ) {
diff --git a/templates/exim/exim4.conf.SMTP_IMAP_MM.erb 
b/templates/exim/exim4.conf.SMTP_IMAP_MM.erb
index 7ce2707..804231c 100644
--- a/templates/exim/exim4.conf.SMTP_IMAP_MM.erb
+++ b/templates/exim/exim4.conf.SMTP_IMAP_MM.erb
@@ -665,6 +665,10 @@
 remote_smtp:
        driver = smtp
        hosts_avoid_tls = <; 0.0.0.0/0 ; 0::0/0
+       dkim_domain = wikimedia.org
+       dkim_selector = wikimedia
+       dkim_private_key = /etc/exim4/dkim/wikimedia.org-wikimedia.key
+       dkim_canon = relaxed
 <% if (enable_otrs_server == "false" ) -%>
        interface = <; <%= outbound_ips.join(" ; ") %>
 <% end -%>
@@ -676,6 +680,10 @@
        hosts_avoid_tls = <; 0.0.0.0/0 ; 0::0/0
        interface = <; <%= list_outbound_ips.join(" ; ") %>
        helo_data = lists.wikimedia.org
+       dkim_domain = lists.wikimedia.org
+       dkim_selector = wikimedia
+       dkim_private_key = /etc/exim4/dkim/lists.wikimedia.org-wikimedia.key
+       dkim_canon = relaxed
 <% end -%>
 
 <% if mediawiki_relay == "true" -%>
@@ -685,6 +693,10 @@
        hosts_avoid_tls = <; 0.0.0.0/0 ; 0::0/0
        interface = WIKI_INTERFACE
        helo_data = <; wiki-mail.wikimedia.org ; lists.wikimedia.org
+       dkim_domain = wikimedia.org
+       dkim_selector = wiki-mail
+       dkim_private_key = /etc/exim4/dkim/wikimedia.org-wiki-mail.key
+       dkim_canon = relaxed
 <% end -%>
 
 # Generic pipe local delivery transport (for use by alias/forward files)

-- 
To view, visit https://gerrit.wikimedia.org/r/79754
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I727cf3c894b99cff761c6822d719a755f7cd9cbc
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Faidon <fai...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to