Wietse Venema:
> Chris Bamford:
> > Hello,
> >
> > I would like to know how Postfix handles client certificates for delivery
> > i.e. when it makes a remote connection to deliver email.
> >
> > Is it possible to control the certificate that is used per domain?
>
> The client certificate is a Postfix SMTP client setting; the
> certificate will be used for all email deliveries by that Postfix
> SMTP client.
>
> The following example uses one Postfix SMTP client per sender domain,
> each Postfix SMTP client having its own client certificate:
>
> /etc/postfix/main.cf:
> sender_dependent_default_transport_maps =
> hash:/etc/postfix/sender_transport
> # In case you need a cert for all other deliveries.
> # static:/etc/postfix/default-cert/pem
>
> /etc/postfix/sender_transport:
> # Searched by sender email address and @domain.
> @example.com smtp-example-com
> @example.org smtp-example-org
> ...
>
> /etc/postfix/master.cf:
> smtp-example-com .. .. .. .. .. .. .. smtp
> -o smtp_tls_cert_file=/etc/postfix/example-com-cert.pem
> smtp-example-org .. .. .. .. .. .. .. smtp
> -o smtp_tls_cert_file=/etc/postfix/example-org-cert.pem
> ...
>
> To make this more scalable, the Postfix SMTP client would need the
> opposite of tls_server_sni_maps, to dynamically choose the client
> certificate based on the sender info.
I suppose that each client certificate will be valid only with a
specific host, so you would have to update the sender_transport
table to return a transport:nexthop result.
/etc/postfix/main.cf:
sender_dependent_default_transport_maps =
hash:/etc/postfix/sender_transport
# In case you need a cert for all other deliveries.
# static:/etc/postfix/default-cert/pem
/etc/postfix/sender_transport:
# Searched by sender email address and @domain.
# Returns transport:nexthop.
@example.com smtp-example-com:relayhost-for-example.com
@example.org smtp-example-org:relayhost-for-example.org
...
/etc/postfix/master.cf:
smtp-example-com .. .. .. .. .. .. .. smtp
-o smtp_tls_cert_file=/etc/postfix/example-com-cert.pem
smtp-example-org .. .. .. .. .. .. .. smtp
-o smtp_tls_cert_file=/etc/postfix/example-org-cert.pem
...
> Wietse
>