On Sun, Jan 13, 2013 at 07:34:24AM +0000, Bry8 Star wrote:

> When can we expect a Postfix release, that will support DANE
> protocol ? so that it(postfix) can verify (using DANE & DNSSEC
> protocols) the signed (and free) SSL/TLS certificates(cert) (or
> fingerprints) which we can pre-add in TLSA, (CERT, HASTLS, etc) DNS
> (DNSSEC) records, and then it(postfix) will use those(cert) for
> secure (smtp) communication, and to verify SMTP servers.

If all goes well 2.11, with snapshots incrementally adding support
for DANE in the works.  DANE support is code-complete, but requires
further code review and testing.  To that end I would like to see
more mail receiving sites to sign their DNS zones, and publish TLSA
records for their MX hosts.

Thus far, I'm aware of just six MX hosts in four DNSSEC-enabled
domains that have TLSA records for SMTP.  Of these:

    - 5 publish "IN TLSA 3 1 1 ..." SHA256 public-key digest records,
      which is a best practice, that's exactly what most people should
      publish.

    - 1 publishes "IN TLSA 3 1 2" which is also fine, since the only
      difference is that the digest uses SHA512.

All six verify.  I'd like to also test:

        - "3 0 1" certificate digest RRs.
        - "3 1 0" full public key RRs.
        - "2 0 0" full certificate trust anchor RRs.
        - "2 1 1" public key digest trust anchor RRs.

For "IN TLSA 2 1 1" the trust-anchor certificate must appear in
the server's SSL handshake trust chain.  With just the public-key
digest, it is impossible to actually verify the chain.

I don't expect that administrators will publish their trust anchor
in full via DNS, rather they should publish the digest in DNS, and
provide the certificate in the SSL handshake.  (In practice they
should shun all certificate usages other than 3).

If you have a DNSSEC-signed zone and operate MX hosts for that
domain that support inbound STARTTLS, please publish TLSA records,
and let me know which domain has said MX hosts.

> Currently (Jan 12, 2013), the last+stable GnuTLS, now supports DANE,
> (and as of right now, OpenSSL (or any openssl modules) yet does not
> support DANE). Can postfix utilize DANE libraries from gnutls for DANE ?

We don't need a new OpenSSL, its verification callback provides
sufficient rope.

The DANE code in the verification callback is a miniscule portion
of the new code.  Most the hard work went into the SMTP policy
engine that finds, evaluates and caches TLSA RRs, making them
available to the SSL verification callback.  A bunch more effort
goes into making sure that MX record and host to address resolution
tracks the DNSSEC validation status of the results.

Also ~1000 lines of code in the command-line smtptls-finger utility
so one can test before deploying and debug TLS problems if something
goes wrong.

> The DnsSec-Tools.Org site shares PATCH (developed by Sparta) for
> (older) Postfix (and other software) to support DNSSEC, can someone
> expert apply it(patch) on the last+stable postfix ?
> http://www.dnssec-tools.org/howtos/postfix-2.3.x-dnssec-howto.txt

Their patch is largely misguided, no need for explicit DNSSEC
validation in Postfix.  You get that for free by deploying a
validating cache (say "unbound") on your machine, and configuring
Postfix to query that cache.  Far better to have DNSSEC validation
code in software focused squarely on DNSSEC support.

Once you do have access to Postfix with DANE support, you'll find
that initially it makes no difference at all, since there are as
yet essentially no SMTP servers that publish DANE records.

Since this is a chicken and egg problem, let's hope I'm laying an
egg. :-)

Perhaps, motivated by an MTA that supports DANE, receiving sites
will start to deploy DNSSEC signed zones and publish TLSA records.
This is going to take a few years, with the early adopters feeling
a bit lonely for a while...

If you're willing to be on the bleeding edge and want to help test
code Wietse has not reviewed yet, you can try on a suitable
non-critical system:

    $ git clone http://github.com/vdukhovni/postfix
    $ cd postfix/postfix
    $ make -f Makefile.init 'CCARGS=-DUSE_TLS' 'AUXLIBS=-lssl -lcrypto' 'OPT=' \
        makefiles # Add whatever else you need
    $ make
    $ make upgrade

The default branch is currently "DANE10", it may change in the
future, in which case if you're trying to stay current, you'll need
to checkout "DANE11", ... as they become available.

The documentation for DANE is at:

        html/TLS_README.html#client_tls_dane
        html/TLS_README.html#client_tls_policy

and various parameters linked from these.  The main immediately
usable feature is support for per-destination trust-anchors
(root CA replacements):

        html/postconf.5.html#smtp_tls_trust_anchor_file

which you can configure for a set of destinations without waiting
for them to do DNSSEC and TLSA.  Otherwise, until more of you deploy
DNSSEC and publish TLSA records, DANE will have negligible impact
on your outbound mail stream.

-- 
        Viktor.

Reply via email to