Jump to content
Froxlor Forum
  • 0

Dkim, rspamd, Verständnis


nickcha

Question

Moin,

ich hab mich die letzten Tage durch die Signierung der Mails via DKIM gekämpft. Ich hab es jetzt mit rspamd am laufen - allerdings nicht in Verbindung mit Froxlor. Ich erstelle die Keys händisch für jede Domain und nutze einen externen Nameserver in welchen ich die Keys pro Domain eintrage. Mage jetzt nicht die beste Konfiguration sein, aber es sind auch nicht so viele Domains.

Ich bräuchte von Froxlor zwei Dinge: einen in einem Verzeichnis geschriebenen privaten Schlüssel der via rspamd genutzt werden kann. Momentan währe dies in meinem Fall: $domain.$selector.key und dann bräuchte ich irgendwo den öffentlichen Schlüssel welche ich dann händisch in die externen Nameserver eintragen kann. Bei ISPconfig ist das relativ einfach gelöst. Dort werden die Keys im Frontend ausgegeben. Ich kenne auch einige Hoster welche es Endkunden exakt so anbieten: den Public key zum kopieren. 

Mir ist klar das der Anspruch ist DKIM in Verbindung mit Naemeserver laufen zu lassen aber das geht an einem Use-Case vorbei: eigener E-Mail Sever, keine eigener Nameserver. Ich frage mich ob es nicht einfacher wäre DKIM unabhängig vom DNS bereitzustellen? Würde das nicht vieles vereinfachen und eine gute Lösung bieten?

Einen guten Rutsch! 

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Froxlor schreibt doch auf Wunsch (Einstellungen) eine Datei voller Domains, Separatoren und Keydateinamen sowie die privaten Keys in ein Verzeichnis.

Ich habe dazu einen dirty hack, der das in eine rspmad-Konfiguration übersetzt

#!/bin/bash

chown root._rspamd /etc/postfix/dkim/*

SIGNFILE=/tmp/dkim_signing.conf

echo "# If false, messages with empty envelope from are not signed" >$SIGNFILE
echo "allow_envfrom_empty = true;" >>$SIGNFILE
echo "# If true, envelope/header domain mismatch is ignored" >>$SIGNFILE
echo "allow_hdrfrom_mismatch = true;" >>$SIGNFILE
echo "# If true, multiple from headers are allowed (but only first is used)" >>$SIGNFILE
echo "allow_hdrfrom_multiple = false;" >>$SIGNFILE
echo "# If true, username does not need to contain matching domain" >>$SIGNFILE
echo "allow_username_mismatch = true;" >>$SIGNFILE
echo "# If false, messages from local networks are not selected for signing" >>$SIGNFILE
echo "sign_local = true;" >>$SIGNFILE
echo "# If false, messages from domains not defined here will not be signed" >>$SIGNFILE
echo "try_fallback = false;" >>$SIGNFILE
echo "symbol = "DKIM_SIGNED";" >>$SIGNFILE
echo "use_domain = "envelope";" >>$SIGNFILE

echo "domain {" >>$SIGNFILE

cat /etc/postfix/dkim/dkim-keys.conf | while read LINE; do
        DOMAIN=`echo $LINE | awk -F: '{ print $2 }'`
        echo "  $DOMAIN {" >>$SIGNFILE
        ED_ENABLED="no"
        if [ -f /etc/postfix/dkim/$DOMAIN.pubkey ]; then
                ED_ENABLED="yes"
                ED_SELECTOR=`head -n 1 /etc/postfix/dkim/$DOMAIN.pubkey | awk -F. '{print $1}'`
                echo "    selectors [" >>$SIGNFILE
                echo "      {" >>$SIGNFILE
                echo "        path = \"/etc/postfix/dkim/$DOMAIN.privkey\";" >>$SIGNFILE
                echo "        selector = \"$ED_SELECTOR\";" >>$SIGNFILE
                echo "      }," >>$SIGNFILE
                echo "      {" >>$SIGNFILE
        fi
        KEY=`echo $LINE | awk -F: '{ print $3 }'`
        echo "        path = \"$KEY\";" >>$SIGNFILE
        SELECTOR=`echo $KEY | awk -F/ '{ print $5 }' | awk -F. '{ print $1 }'`
        echo "        selector = \"$SELECTOR\";" >>$SIGNFILE
        if [ $ED_ENABLED = "yes" ]; then
                echo "      }" >>$SIGNFILE
                echo "    ]" >>$SIGNFILE
        fi
        echo "  }" >>$SIGNFILE
done

echo "}" >>$SIGNFILE

cp $SIGNFILE /etc/rspamd/local.d/dkim_signing.conf
systemctl reload rspamd

rm $SIGNFILE

Das Skript kannst Du auch durch Froxlor triggern lassen, siehe DKIM-Einstellungen.

Link to comment
Share on other sites

  • 0

Ich hatte hier eine Version die Mails doppelt signiert mit SHA und ellyptischen Kurven - da letzteres noch nicht viel Support hat, jetzt die abgespeckte Version
 

#!/bin/bash

chown root._rspamd /etc/postfix/dkim/*

SIGNFILE=/tmp/dkim_signing.conf

echo "# If false, messages with empty envelope from are not signed" >$SIGNFILE
echo "allow_envfrom_empty = true;" >>$SIGNFILE
echo "# If true, envelope/header domain mismatch is ignored" >>$SIGNFILE
echo "allow_hdrfrom_mismatch = true;" >>$SIGNFILE
echo "# If true, multiple from headers are allowed (but only first is used)" >>$SIGNFILE
echo "allow_hdrfrom_multiple = false;" >>$SIGNFILE
echo "# If true, username does not need to contain matching domain" >>$SIGNFILE
echo "allow_username_mismatch = true;" >>$SIGNFILE
echo "# If false, messages from local networks are not selected for signing" >>$SIGNFILE
echo "sign_local = true;" >>$SIGNFILE
echo "# If false, messages from domains not defined here will not be signed" >>$SIGNFILE
echo "try_fallback = false;" >>$SIGNFILE
echo "symbol = "DKIM_SIGNED";" >>$SIGNFILE
echo "use_domain = "envelope";" >>$SIGNFILE

echo "domain {" >>$SIGNFILE

cat /etc/postfix/dkim/dkim-keys.conf | while read LINE; do
        DOMAIN=`echo $LINE | awk -F: '{ print $2 }'`
        echo "  $DOMAIN {" >>$SIGNFILE
        KEY=`echo $LINE | awk -F: '{ print $3 }'`
        echo "        path = \"$KEY\";" >>$SIGNFILE
        SELECTOR=`echo $KEY | awk -F/ '{ print $5 }' | awk -F. '{ print $1 }'`
        echo "        selector = \"$SELECTOR\";" >>$SIGNFILE
        echo "  }" >>$SIGNFILE
done

echo "}" >>$SIGNFILE

cp $SIGNFILE /etc/rspamd/local.d/dkim_signing.conf
systemctl reload rspamd

rm $SIGNFILE

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...