<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fripost-ansible/roles/out/tasks, branch master</title>
<subtitle>Fripost ansible scripts</subtitle>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/'/>
<entry>
<title>Postfix: pin key material to our MX:es for fripost.org and its subdomains.</title>
<updated>2021-01-26T12:35:40+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2021-01-26T11:39:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=44100bab38d32596392a3bc7199b4daa202b4032'/>
<id>44100bab38d32596392a3bc7199b4daa202b4032</id>
<content type='text'>
This solves an issue where an attacker would strip the STARTTLS keyword
from the EHLO response, thereby preventing connection upgrade; or spoof
DNS responses to route outgoing messages to an attacker-controlled
SMTPd, thereby allowing message MiTM'ing.  With key material pinning in
place, smtp(8postfix) immediately aborts the connection (before the MAIL
command) and places the message into the deferred queue instead:

    postfix-out/smtp[NNN]: … dsn=4.7.5, status=undeliverable (Server certificate not verified)

This applies to the smarthost as well as for verification probes on the
Mail Submission Agent.  Placing message into the deferred queue might
yield denial of service, but we argue that it's better than a privacy
leak.

This only covers *internal messages* (from Fripost to Fripost) though:
only messages with ‘fripost.org’ (or a subdomain of such) as recipient
domain.  Other domains, even those using mx[12].fripost.org as MX, are
not covered.  A scalable solution for arbitrary domains would involve
either DANE and TLSA records, or MTA-STS [RFC8461].  Regardless, there
is some merit in hardcoding our internal policy (when the client and
server are both under our control) in the configuration.  It for
instance enables us to harden TLS ciphers and protocols, and makes the
verification logic independent of DNS.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This solves an issue where an attacker would strip the STARTTLS keyword
from the EHLO response, thereby preventing connection upgrade; or spoof
DNS responses to route outgoing messages to an attacker-controlled
SMTPd, thereby allowing message MiTM'ing.  With key material pinning in
place, smtp(8postfix) immediately aborts the connection (before the MAIL
command) and places the message into the deferred queue instead:

    postfix-out/smtp[NNN]: … dsn=4.7.5, status=undeliverable (Server certificate not verified)

This applies to the smarthost as well as for verification probes on the
Mail Submission Agent.  Placing message into the deferred queue might
yield denial of service, but we argue that it's better than a privacy
leak.

This only covers *internal messages* (from Fripost to Fripost) though:
only messages with ‘fripost.org’ (or a subdomain of such) as recipient
domain.  Other domains, even those using mx[12].fripost.org as MX, are
not covered.  A scalable solution for arbitrary domains would involve
either DANE and TLSA records, or MTA-STS [RFC8461].  Regardless, there
is some merit in hardcoding our internal policy (when the client and
server are both under our control) in the configuration.  It for
instance enables us to harden TLS ciphers and protocols, and makes the
verification logic independent of DNS.
</pre>
</div>
</content>
</entry>
<entry>
<title>Postfix: Install -lmdb in all roles using db=lmdb.</title>
<updated>2020-05-21T01:42:54+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2020-05-21T01:42:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=6fb829e49d421de9abac41325f5089357bf27f82'/>
<id>6fb829e49d421de9abac41325f5089357bf27f82</id>
<content type='text'>
And drop -ldap from all roles other than MX.  -lmdb is included in
roles/common but it can be helpful to have it individual roles as well
as they can be run individually.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And drop -ldap from all roles other than MX.  -lmdb is included in
roles/common but it can be helpful to have it individual roles as well
as they can be run individually.
</pre>
</div>
</content>
</entry>
<entry>
<title>Outgoing SMTP: masquerade internal hostnames.</title>
<updated>2018-12-12T12:46:44+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2018-12-11T20:15:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=7beb915bb8dddac847ca3aca85c187e314a6c0fa'/>
<id>7beb915bb8dddac847ca3aca85c187e314a6c0fa</id>
<content type='text'>
Use admin@fripost.org instead.  We were sending out (to the admin team)
system messages with non-existing or invalid envelope sender addresses,
such as &lt;logcheck@antilop.fripost.org&gt; or &lt;root@mistral.fripost.org&gt;.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use admin@fripost.org instead.  We were sending out (to the admin team)
system messages with non-existing or invalid envelope sender addresses,
such as &lt;logcheck@antilop.fripost.org&gt; or &lt;root@mistral.fripost.org&gt;.
</pre>
</div>
</content>
</entry>
<entry>
<title>Route all internal SMTP traffic through IPsec.</title>
<updated>2016-07-10T03:14:29+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2016-07-10T03:13:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=bf960a066466d7719ada8fe7bc3dec99d237b88a'/>
<id>bf960a066466d7719ada8fe7bc3dec99d237b88a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Postfix: don't share the master.cf between the instances.</title>
<updated>2016-07-10T02:53:37+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2016-07-10T02:53:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=1b744e0e6320dabaa62bc369addf7f0b89cdc107'/>
<id>1b744e0e6320dabaa62bc369addf7f0b89cdc107</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Configure munin nodes &amp; master.</title>
<updated>2015-06-10T16:37:19+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2015-06-10T13:35:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=b408390ae9311b7d703ce57c25a78dce23c31b16'/>
<id>b408390ae9311b7d703ce57c25a78dce23c31b16</id>
<content type='text'>
Interhost communications are protected by stunnel4.  The graphs are only
visible on the master itself, and content is generated by Fast CGI.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Interhost communications are protected by stunnel4.  The graphs are only
visible on the master itself, and content is generated by Fast CGI.
</pre>
</div>
</content>
</entry>
<entry>
<title>Hash certs using a lookup in the template instead of add a new task.</title>
<updated>2015-06-07T00:52:58+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2014-07-10T01:45:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=fcc307aafeb8438de12f339af0f5c83ab647c8a9'/>
<id>fcc307aafeb8438de12f339af0f5c83ab647c8a9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add a tag 'tls_policy' to facilitate rekeying.</title>
<updated>2015-06-07T00:52:43+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2014-07-07T22:47:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=f4f99dfdfcd0651f4365ab41716beffc1f147e35'/>
<id>f4f99dfdfcd0651f4365ab41716beffc1f147e35</id>
<content type='text'>
First generate all certs (-t genkey), then build the TLS policy maps (
-t tls_policy).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
First generate all certs (-t genkey), then build the TLS policy maps (
-t tls_policy).
</pre>
</div>
</content>
</entry>
<entry>
<title>Reload Postfix upon configuration change, but don't restart it.</title>
<updated>2015-06-07T00:52:24+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2014-07-03T22:37:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=58e65628313da8990f1e5cb26bfe4e10e128034e'/>
<id>58e65628313da8990f1e5cb26bfe4e10e128034e</id>
<content type='text'>
(Unless a new instance is created, or the master.cf change is modified.)
Changing some variables, such as inet_protocols, require a full restart,
but most of the time it's overkill.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(Unless a new instance is created, or the master.cf change is modified.)
Changing some variables, such as inet_protocols, require a full restart,
but most of the time it's overkill.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't restart/reload Postifx upon change of a file based database.</title>
<updated>2015-06-07T00:52:23+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2014-07-03T22:21:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.fripost.org/fripost-ansible/commit/?id=535741b9caaa7b1480d3a6e8290769b1e2e0a55e'/>
<id>535741b9caaa7b1480d3a6e8290769b1e2e0a55e</id>
<content type='text'>
And don't restart or reload either upon change of pcre: files that are
used by smtpd(8), cleanup(8) or local(8), following the suggestion from
http://www.postfix.org/DATABASE_README.html#detect .
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And don't restart or reload either upon change of pcre: files that are
used by smtpd(8), cleanup(8) or local(8), following the suggestion from
http://www.postfix.org/DATABASE_README.html#detect .
</pre>
</div>
</content>
</entry>
</feed>
