• General
  • Anfängerprobleme DKIM/TLS/Diffie-Hellman/DANE

Hallo erstmal an alle,

ich bin komplett neu in der Grommunio Welt und würde gerne meine bestehenden Office 365 Email Konten auf Grommunio umstellen. Ich habe mir dafür mal Testweise einen Server erstellt mit einer Domain bei welcher ich derzeit keine Mails sende.

Die Installation klappte soweit auch ganz gut und auch das Mail senden und empfangen funktioniert. Da es leider zu Grommunio kaum etwas gibt habe ich mir ein paar Mailcow Videos angeschaut betreffend der ganzen DNS Settings.

Das hat auch soweit geklappt, allerdings habe ich bei ein paar Einträgen Probleme bzw. Fragen. Vielleicht kann mir ja jemand weiterhelfen.

DKIM: Ich habe mir für meine Domain mit dem Befehl "rspamadm configwizard" einen DKIM Eintrag erzeugen lassen. Diesen habe ich auch in den DNS Settings meiner Domain eingetragen. In den Admin Settings von Grommunio ist der Punkt DKIM auch grün und der Eintrag wird richtig ausgelesen. Versende ich jetzt Mails an "Spam Test Server" wird immer angegeben das ich keine DKIM Signatur mitschicke. Muss ich das in Grommunio extra noch irgendwo aktivieren?

TLS: Hier wird "kritisiert" das der Server neben TLS 1.2. und 1.3 noch TLS 1.0 und TLS. 1.1 verwendet. Wie kann ich die beiden alten Protokolle in Grommunio dekativieren.

Bei dem Test auf internet.nl wird der Key Exchange Parameter Diffie-Hellman als "insufficient" eingestuft. Mit welchem DNS Eintrag kann ich das korrigieren. Genauso "DANE" - hier wird angegeben das es keinen TLSA Record gibt. Was ist hier einzutragen?

Leider habe ich hierzu keine Infos gefunden, in dem Mailcow Video wird auch nicht näher drauf eingegangen da es hier die Option gibt auf einen Button zu drücken und dann werden einem alle notwendigen DNS Einträge angezigt und man braucht nur mehr Copy und Paste nutzen.

Vielleicht kann mir ja jemand helfen meine Mailserver sicher zu machen

Vielen Dank schonmal im Vorraus
Grüße
Patrick

    patricksimon TLS: Hier wird "kritisiert" das der Server neben TLS 1.2. und 1.3 noch TLS 1.0 und TLS. 1.1 verwendet. Wie kann ich die beiden alten Protokolle in Grommunio dekativieren.

    Eingeschaltet lassen, sonst kannst Du an ältere Mailserver keine Mails senden.

    Zum DKIM, da muss man in einem Konfig File die Domain eintragen das die Signatur angehängt wird.
    Das schon angesehen: https://rspamd.com/doc/modules/dkim_signing.html

      Ich habe für meinen Mailserver die Datei komplett auskommentiert: (muss allerdings nach jedem Update des Pakets grommunio-common wieder erneut auskommentiert werden)
      /usr/share/grommunio-common/nginx/ssl_params.conf
      und die Parameter über die Datei: grommunio_custom-example.conf.include selbst gesetzt, denn Grommunio erlaubt durch den Parameter in /usr/share/grommunio-common/nginx.conf eigene Konfigurationsoptionen

      include /etc/nginx/conf.d/grommunio_custom-*.conf.include;
      ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
      ssl_session_tickets off;
      
      # curl https://ssl-config.mozilla.org/ffdhe4096.txt > /etc/pki/tls/dhparam.pem
      ssl_dhparam /etc/pki/tls/dhparam.pem;
      
      # intermediate configuration
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
      ssl_prefer_server_ciphers on;
      ssl_ecdh_curve x448:x25519:secp521r1:secp384r1;
      
      # OCSP stapling
      ssl_stapling on;
      ssl_stapling_verify on;

      Für IMAP nutze ich haproxy mit ähnlichen Einstellungen wie oben.
      Ich sehe nicht ein, dass meine Kunden mit weniger als TLS 1.2 verbinden dürfen.

      Für den Mailversand via Postfix nutze ich folg. Einstellung, da hat natürlich @WalterH recht:

      smtpd_tls_protocols = !SSLv2, !SSLv3
      smtpd_tls_mandatory_ciphers = low
      smtpd_tls_exclude_ciphers = aNULL
      tls_preempt_cipherlist = yes
      tls_low_cipherlist = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:CAMELLIA256-SHA:AES128-SHA:CAMELLIA128-SHA
      
      # Not actually 1024 bits, this applies to all DHE >= 1024 bits
      smtpd_tls_dh1024_param_file = /etc/pki/tls/dhparam.pem

        WalterH

        Danke den Link habe ich gesehen und mir auch angeschaut, bin aber eigentlich davon ausgegangen das die Datei durch den config wizzard richtig angelegt wurde.

        Die Datei schaut bei mir wie folgt aus

        sign_authenticated = true;
        use_domain = "header";
        allow_hdrfrom_mismatch = true;
        allow_hdrfrom_mismatch_sign_networks = true;
        allow_username_mismatch = true;
        use_esld = true;
        domain {
            meinedomain.at {
                selector = "dkim";
                path = "/var/lib/grommunio-antispam/dkim/meinedomain.at.dkim.key";
            }
        }

        Also wenn ich das richtig deute steht die Domain mit dem verlinkten Key drin. Oder übersehe ich was.

        Ich habe nur nicht ganz verstanden muss ich jetzt das was unter config wizzard rauskommt in den DNS Settings hinterlegen oder muss ich "rspamadm dkim_keygen -s 'test' -d example.com" ausführen und das ergebnis davon dann als dkim eintragen. Habe nämlich eigentlich beides versucht und bei beidem hat er sich beschwert das es keinen DKIM Eintrag gibt (habe dazwischen natürlich immer mehrere Stunden gewartet zur Sicherheit)

          GeneralProbe Ich habe für meinen Mailserver die Datei komplett auskommentiert: (muss allerdings nach jedem Update des Pakets grommunio-common wieder erneut auskommentiert werden)

          Das ist eine nicht unterstützte Konfiguration, nicht aufregen wenn nach einem Update irgendwas nicht mehr funktioniert.
          Die Vorgaben von grommunio sind technisch OK und auch den internationalen Standards entsprechend gesetzt! Da was umzubasteln ist riskant!

            patricksimon Ich habe eine Datei händisch angelegt:
            /etc/grommunio-antispam/override.d/dkim_signing.conf mit Inhalt:

            # override.d/dkim_signing.conf
            # If false, messages with empty envelope from are not signed
            allow_envfrom_empty = true;
            
            # If true, envelope/header domain mismatch is ignored
            allow_hdrfrom_mismatch = false;
            
            # If true, multiple from headers are allowed (but only first is used)
            allow_hdrfrom_multiple = false;
            
            # If true, username does not need to contain matching domain
            allow_username_mismatch = false;
            
            # Default path to key, can include '$domain' and '$selector' variables
            #path = "/var/lib/grommunio-antispam/dkim/$domain.$selector.key";
            path = "/var/lib/grommunio-antispam/dkim/$domain.key";
            
            # Default selector to use
            selector = "dkim";
            
            # If false, messages from authenticated users are not selected for signing
            sign_authenticated = true;
            
            # If false, messages from local networks are not selected for signing
            sign_local = true;
            
            # Map file of IP addresses/subnets to consider for signing
            # sign_networks = "/some/file"; # or url
            
            # Symbol to add when message is signed
            symbol = "DKIM_SIGNED";
            
            # Whether to fallback to global config
            try_fallback = true;
            
            # Domain to use for DKIM signing: can be "header" (MIME From), "envelope" (SMTP From), "recipient" (SMTP To), "auth" (SMTP username) or directly specified domain name
            use_domain = "header";
            
            # Domain to use for DKIM signing when sender is in sign_networks ("header"/"envelope"/"auth")
            #use_domain_sign_networks = "header";
            
            # Domain to use for DKIM signing when sender is a local IP ("header"/"envelope"/"auth")
            #use_domain_sign_local = "header";
            
            # Whether to normalise domains to eSLD
            use_esld = true;
            
            # Whether to get keys from Redis
            use_redis = false;
            
            # Hash for DKIM keys in Redis
            key_prefix = "DKIM_KEYS";
            
            # map of domains -> names of selectors (since rspamd 1.5.3)
            #selector_map = "/etc/grommunio-antispam/dkim_selectors.map";
            
            # map of domains -> paths to keys (since rspamd 1.5.3)
            #path_map = "/etc/grommunio-antispam/dkim_paths.map";
            
            # If `true` get pubkey from DNS record and check if it matches private key
            check_pubkey = false;
            
            # Set to `false` if you want to skip signing if public and private keys mismatch
            allow_pubkey_mismatch = true;
            
            # Domain specific settings
            domain {
            
              # Domain name is used as key
              DOMAIN1 {
                # Private key path
                path = "/var/lib/grommunio-antispam/dkim/<DOMAIN_KEY1>.key";
                # Selector
                selector = "dkim";
              }
              DOMAIN2 {
                # Private key path
                path = "/var/lib/grommunio-antispam/dkim/<DOMAINKEY2>.key";
                # Selector
                selector = "dkim";
              }
            }

            Alles macht der Installer nicht automatisch, DOMAIN1 und DOMAIN2 durch die richtigen Domains ersetzen.

            Vielen Dank werden ich mir mal anschauen.

            Habe jetzt noch eine zweite Testinstanz da ich mittlerweile auf den Proxmox Mail Gateway gestoßen bin und der ja dann DKIM usw. übernimmt. Empfangen klappt sogar schon nur das senden haut noch nicht nicht hin, das muss ich mir noch anschauen was da konfiguriert gehört. Habe bisher nur beim Setup die IP des Proxmox Mail Gateways bei dem Postfix Fenster eingetragen.

              patricksimon ipadresse:26
              muss eingetrragen werden für ausgehende mail pmg nimmt nur auf port 26 ausgehende mails an

              lg
              christian

              WalterH
              Ja, das ist mir bewusst.
              Deswegen haben wir schon mehrfach auf github und in den Webinaren das Thema angesprochen.
              Schließlich setzt z.B. das BSI TLS 1.2 als Minimum voraus, weshalb das für mich für Endkundenkommunikation die Richtlinie darstellt.
              https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Mindeststandards/Mindeststandard_BSI_TLS_Version_2_4.pdf?__blob=publicationFile&v=4

                GeneralProbe Das ist aber noch lange kein Grund in den grommunio Konfig Dateien umzubauen.

                Es müsste reichen, die Datei: /etc/grommunio-common/nginx/upstreams.d/wh-tls.conf mit diesen Inhalt:

                # WH 20250405 only enable TLS 1.2 and 1.3 in nginx
                ssl_protocols TLSv1.2 TLSv1.3;
                #

                anzulegen und den nginx zu restarten, damit sollte TLSv1 und TLSv1.1 abgeschaltet sein.

                  @WalterH @GeneralProbe @externa1

                  Danke erstmal für die Hilfe, ich manage jetzt sowohl Empfang als auch Versand über einen vorgeschalteten Proxmox Mail Gateway was die Sache ja deutlich vereinfacht da ich bestimmte DNS Einträge bzw Sicherheitsfeatures nur einmal administrieren muss.

                  Laut Internet.nl und ssllabs.com ist mein Mailserver jetzt soweit "sicher".


                  Danke jedenfalls für die Hilfe 👍

                  © 2020-2024 grommunio GmbH. All rights reserved. | https://grommunio.com | Data Protection | Legal notice