Postfix/Dovecot-Server mit Letsencrypt und mehreren Domains

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Postfix/Dovecot-Server mit Letsencrypt und mehreren Domains

Andreas-2
Hallo und guten Morgen,

ich habe einen Mailserver der für mehrere Domains zuständig ist:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
bounce_queue_lifetime = 1h
broken_sasl_auth_clients = yes
compatibility_level = 2
disable_vrfy_command = yes
greylist = permit_dnswl_client list.dnswl.org, check_policy_service inet:
127.0.0.1:10023
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
maximal_backoff_time = 15m
maximal_queue_lifetime = 1h
message_size_limit = 26214400
milter_default_action = accept
milter_protocol = 6
minimal_backoff_time = 300s
mydestination = mx.germany.com, localhost.germany.com, localhost
myhostname = mx.germany.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.66/32
192.168.1.84/32 192.168.1.75/32
myorigin = /etc/mailname
non_smtpd_milters = inet:127.0.0.1:12248
plaintext_reject_code = 550
postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/
postscreen_access.cidr
postscreen_bare_newline_enable = no
postscreen_blacklist_action = drop
postscreen_cache_cleanup_interval = 24h
postscreen_cache_map = proxy:btree:$data_directory/postscreen_cache
postscreen_dnsbl_action = drop
postscreen_dnsbl_sites = b.barracudacentral.org=127.0.0.2*7
dnsbl.inps.de=127.0.0.2*7 bl.mailspike.net=127.0.0.2*5
bl.mailspike.net=127.0.0.[10;11;12]*4 dnsbl.sorbs.net=127.0.0.10*8
dnsbl.sorbs.net=127.0.0.5*6 dnsbl.sorbs.net=127.0
.0.7*3 dnsbl.sorbs.net=127.0.0.8*2 dnsbl.sorbs.net=127.0.0.6*2
dnsbl.sorbs.net=127.0.0.9*2 zen.spamhaus.org=127.0.0.[10;11]*8
zen.spamhaus.org=127.0.0.[4..7]*6 zen.spamhaus.org=127.0.0.3*4
zen.spamhaus.org=127.0.0.2*3 hostkarma.jun
kemailfilter.com=127.0.0.2*3 hostkarma.junkemailfilter.com=127.0.0.4*1
hostkarma.junkemailfilter.com=127.0.1.2*1 wl.mailspike.net=127.0.0.
[18;19;20]*-2 hostkarma.junkemailfilter.com=127.0.0.1*-2
postscreen_dnsbl_threshold = 8
postscreen_dnsbl_ttl = 5m
postscreen_greet_action = enforce
postscreen_greet_banner = $smtpd_banner
postscreen_greet_ttl = 2d
postscreen_greet_wait = 3s
postscreen_non_smtp_command_enable = no
postscreen_pipelining_enable = no
proxy_read_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_sender_acl.cf,
proxy:mysql:/etc/postfix/sql/mysql_tls_enforce_out_policy.cf, proxy:mysql:/
etc/postfix/sql/mysql_tls_enforce_in_policy.cf, $local_recipient_maps
$mydestina
tion $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps
$virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps
$sender_canonical_maps $recipient_canonical_maps $relocated_maps
$transport_maps $m
ynetworks $smtpd_sender_login_maps
queue_run_delay = 300s
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relay_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_mxdomain_maps.cf
relay_recipient_maps = proxy:mysql:/etc/postfix/sql/
mysql_relay_recipient_maps.cf
relayhost =
sender_dependent_default_transport_maps = proxy:mysql:/etc/postfix/sql/
mysql_tls_enforce_out_policy.cf
smtp_dns_support_level = dnssec
smtp_header_checks = pcre:/etc/postfix/submission_header_cleanup
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1
smtp_tls_security_level = dane
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname
smtpd_client_restrictions = permit_mynetworks check_client_access hash:/etc/
postfix/without_ptr reject_unknown_client_hostname
smtpd_data_restrictions = reject_unauth_pipelining, permit
smtpd_delay_reject = yes
smtpd_error_sleep_time = 10s
smtpd_hard_error_limit = ${stress?1}${stress:5}
smtpd_helo_required = yes
smtpd_milters = inet:127.0.0.1:12248
smtpd_proxy_timeout = 600s
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
reject_invalid_helo_hostname, reject_unknown_reverse_client_hostname,
reject_unauth_destination
smtpd_restriction_classes = greylist
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth_dovecot
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/sql/
mysql_virtual_sender_acl.cf
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch,
permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated,
reject_unlisted_sender, reject_unknown_sender_domain
smtpd_soft_error_limit = 3
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/mail/mail.crt
smtpd_tls_ciphers = high
smtpd_tls_dh1024_param_file = /etc/ssl/mail/dhparams.pem
smtpd_tls_eecdh_grade = strong
smtpd_tls_exclude_ciphers = ECDHE-RSA-RC4-SHA, RC4, aNULL
smtpd_tls_key_file = /etc/ssl/mail/mail.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA, RC4, aNULL
smtpd_tls_mandatory_protocols = !SSLv3
smtpd_tls_protocols = !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA
+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:
+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!
ECDSA:CAMELLIA256-SHA
:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
tls_preempt_cipherlist = yes
tls_ssl_options = NO_COMPRESSION
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_spamalias_maps.cf, proxy:mysql:/
etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/
sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/
mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/
mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/
mysql_virtual_alias_domain_mailbox_maps.cf
virtual_minimum_uid = 104
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:5000

Letsencrypt habe ich auf
lrwxrwxrwx 1 root root 50 Sep 16 17:41 /etc/ssl/mail/mail.crt -> /etc/
letsencrypt/live/mx.example.com/fullchain.pem
umgelenkt, damit ich Letsencrypt automatisch die Zertifikate erneuern lassen
kann.

Jetzt ist der Server aber auch für Domains wie beispielsweise schwoaba.de
zuständig. Ist gewünscht, dass der Mailserver anstatt über mx.example.com mit
mail.schwoaba.de in den Mailclients angesprochen werden kann.

Meine Frage ist es jetzt, wie kann ich Postfix und Dovecot so konfigurieren,
dass das Zertifikat beide Domains mit beiden Hosts akzeptiert?
certbot --apache -d mail.example.com -d mail.schwoaba.de -d mx.example.com
will er verständlicherweise nicht machen, da nur mx.example.com als
Virtualhost gibt.

Grüße und besten Dank

Andreas


Reply | Threaded
Open this post in threaded view
|

Re: Postfix/Dovecot-Server mit Letsencrypt und mehreren Domains

Mathias Jeschke
Hallo Andreas,

On 21.09.18 08:57, Andreas wrote:

> Meine Frage ist es jetzt, wie kann ich Postfix und Dovecot so konfigurieren,
> dass das Zertifikat beide Domains mit beiden Hosts akzeptiert?
> certbot --apache -d mail.example.com -d mail.schwoaba.de -d mx.example.com
> will er verständlicherweise nicht machen, da nur mx.example.com als
> Virtualhost gibt.

Wenn Du pro Domain/Zertifikat eine IP-Adresse vorhälst, kannst Du in der
master.cf den smtpd-Instanzen die entprechenden TLS-Parameter mitgeben.

Wenn alles unter einer IP laufen soll, hast Du keine Chance, weil laut
Manpage Postfix kein SNI unterstützt.

http://www.postfix.org/TLS_README.html
> There are no plans to implement SNI in the Postfix SMTP server.

Für Dovecot ist hier alles beschrieben:
https://wiki.dovecot.org/SSL/DovecotConfiguration

Cheers,
Mathias
Reply | Threaded
Open this post in threaded view
|

Re: Postfix/Dovecot-Server mit Letsencrypt und mehreren Domains

Werner Flamme
In reply to this post by Andreas-2
Andreas schrieb am 21.09.18 um 08:57:
> Hallo und guten Morgen,

Moin :)

> Meine Frage ist es jetzt, wie kann ich Postfix und Dovecot so konfigurieren,
> dass das Zertifikat beide Domains mit beiden Hosts akzeptiert?

Für Dovecot ist das einfach. Es ist auf
<https://wiki.dovecot.org/SSL/DovecotConfiguration> im Abschnitt
"Multiple SSL certificates" beschrieben, in dem Fall wohl bei "With
client TLS SNI (Server Name Indication) support".

> certbot --apache -d mail.example.com -d mail.schwoaba.de -d mx.example.com
> will er verständlicherweise nicht machen, da nur mx.example.com als
> Virtualhost gibt.

Wie Du an die Zertifikate kommst, musst Du schon selbst wissen. Meines
Wissens müssen die DNS-Einträge für die Domains existieren, ein Apache
Virtualhost ist nicht erforderlich. Das hängt vom
Authentifizierungsverfahren ab. Ich kann z. B. nur interaktiv erneuern,
weil ich ein Wildcard-Zertifikat habe, das geht nur per DNS-Einträgen.
Und der DNS-Dienst läuft nicht auf meiner Kiste, also muss ich jedesmal
bei meinem Provider im Web rumfummeln, um den Key anzupassen.

Werner

--

Reply | Threaded
Open this post in threaded view
|

Re: Postfix/Dovecot-Server mit Letsencrypt und mehreren Domains

Mathias Jeschke
In reply to this post by Mathias Jeschke
On 21.09.18 09:14, Mathias Jeschke wrote:

> Wenn alles unter einer IP laufen soll, hast Du keine Chance, weil laut
> Manpage Postfix kein SNI unterstützt.

Nachtrag:

https://certbot.eff.org/faq/#can-i-get-a-certificate-for-multiple-domain-names-san-certificates

Wenn Du alle Domains in _einem_ Zertifikat haben kannst, brauchst Du
natürlich kein SNI, dann kannst Du einfach alle Hostnamen (SNA -
SubjectAlternativeName) dem cerbot mitgeben:

$ certbot certonly --standalone -d mail.example.com -d mail.domain.invalid

Cheers,
Mathias