Plesk Onyx und der Mailserver

Plesk Onyx Nutzer wissen, dass man seinen Mailserer nur mit einem Zertifikat sichern kann, aber wenn man mehrere Hostings betreibt möchte man gerne auch die verschiedenen Hostings auf unterschiedlichen IPs laufen lassen.

In meinem Fall habe ich meine private Domain (inkl. IPv4/6) und dann noch weitere Hostings die sich eine IPv4 teilen, aber jede seine eigene IPv6 hat.

Folglich soll im privaten bereich Zertifikat 1 verteilt werden und für die anderen ein Zertifikat für IPv4/6 bzw. per Domain ein Zertifikat.

Plesk unterstützt dieses leider nicht von Haus. Ich habe also für jede Domain ein Let’s Encrypt Zertifikat, welches im CN die Domain beinhaltet, aber nicht mail.<domain>.<tld>. Im DNS Profil müssen also die MX Einträge so angepasst werden, dass die neutrale Domain authorisiert ist.

Jetzt muss man nur postfix & dovecot beibringen auf die IPs/Domains zu reagieren.

In der /etc/postfix/master.cf müssen dafür folgende Einstellungen gemacht werden.

Zu erst muss folgende Zeile auskommentiert werden:

#smtp inet n - - - - smtpd

Das Doppelkreutz kommentiert eine Zeile aus.
Als Nächstes muss für jedes Interface die zu verwendenen Zertifikate angegeben werden:

::1:smtp inet n - - - - smtpd
127.0.0.1:smtp inet n - - - - smtpd
1.1.1.2:smtp inet n - - - - smtpd -o smtp_helo_name=domain2.tld -o myhostname=domain2.tld -o smtpd_tls_key_file= /usr/local/psa/var/modules/letsencrypt/etc/live/domaind2.tld/privkey.pem -o smtpd_tls_cert_file=/usr/local/psa/var/modules/letsencrypt/etc/live/domaind2.tld/fullchain.pem
1.1.1.1:smtp inet n - - - - smtpd -o smtp_helo_name=privat.tld -o myhostname=privat.tld -o smtpd_tls_key_file=/usr/local/psa/var/modules/letsencrypt/etc/live/privat.tld/privkey.pem -o smtpd_tls_cert_file=/usr/local/psa/var/modules/letsencrypt/etc/live/privat.tld/fullchain.pem
2a03:4000:x:y::1:smtp inet n - - - - smtpd -o smtp_helo_name=privat.tld -o myhostname=privat.tld -o smtpd_tls_key_file=/usr/local/psa/var/modules/letsencrypt/etc/live/privat.tld/privkey.pem -o smtpd_tls_cert_file=/usr/local/psa/var/modules/letsencrypt/etc/live/privat.tld/fullchain.pem
2a03:4000:x:y::2:smtp inet n - - - - smtpd -o smtp_helo_name=domain2.tld -o myhostname=domain2.tld -o ssmtpd_tls_key_file=/usr/local/psa/var/modules/letsencrypt/etc/live/domaind2.tld/privkey.pem -o smtpd_tls_cert_file=/usr/local/psa/var/modules/letsencrypt/etc/live/domaind2.tld/fullchain.pem

Erreicht wurde, dass Postfix jetzt beim verbinden das richtige Zertifikat ausliefert und im ehlo/helo auch den richtigen Hostnamen anzeigt. Für Mailman ist es wichtig, dass die loopback Adressen (127.0.0.1/::1) auch definiert werden. Würden diese nicht explizit angegeben werden, dann würde kein Transport für lokale Maildienster erfolgen. Für die Loopback Adressen wird das Standardzertifikat aus der main.cf verwendet.
Abschließend muss postfix noch neugeladen werden service postfix reload
Testen kann man das mit openssl s_client -connect domain.tld:25 -starttls smtp

Als nächstes widmen wir uns Dovecot und erstellen die Datei /etc/dovecot/conf.d/00-ssl.conf
Dovecot hat den Vorteil, dass die Hostnamen aufgelöst werden und man nicht nach IP konfigurieren muss.

local domain.tld {
  protocol imap {
    ssl_cert = </usr/local/psa/var/modules/letsencrypt/etc/live/domaind.tld/fullchain.pem
    ssl_key  = </usr/local/psa/var/modules/letsencrypt/etc/live/domaind.tld/privkey.pem
  }

  protocol pop3 {
    ssl_cert = </usr/local/psa/var/modules/letsencrypt/etc/live/domaind.tld/fullchain.pem
    ssl_key  = </usr/local/psa/var/modules/letsencrypt/etc/live/domaind.tld/privkey.pem
  }
}

Dovecot prüft jetzt als erstes welcher Servername angesprochen wird und liefert das entsprechende Zertifikat aus. Falls der Name nicht existiert, dann nutzt Dovecot auch wieder das Standardzertifikat.
Nach einem service dovecot reload kann man auch hier wieder prüfen, ob das richtige Zertifikat ausgeliefert wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.