generateForDomain($domain, $bits, $selector); $dk = \App\Models\DkimKey::create([ 'domain_id' => $domain->id, 'selector' => $res['selector'], 'private_key_pem' => $res['private_pem'], 'public_key_txt' => preg_replace('/^v=DKIM1; k=rsa; p=/', '', $res['dns_txt']), 'is_active' => true, ]); // Helper aufrufen (Pfad aus $res['priv_path']!) dispatch(new \App\Jobs\InstallDkimKey( domainId: $domain->id, dkimKeyId: $dk->id, privPath: $res['priv_path'], dnsTxtContent: $res['dns_txt'], )); // DNS-Records gleich anlegen/aktualisieren app(\App\Services\DnsRecordService::class)->provision( $domain, $dk->selector, "v=DKIM1; k=rsa; p={$dk->public_key_txt}", [ 'spf_tail' => \App\Models\Setting::get('mailpool.spf_tail', '~all'), 'spf_extra' => \App\Models\Setting::get('mailpool.spf_extra', []), 'dmarc_policy' => \App\Models\Setting::get('mailpool.dmarc_policy', 'none'), 'rua' => \App\Models\Setting::get('mailpool.rua', null), ] ); } // public function created(Domain $domain): void // { // // Standardwerte aus Config oder .env // $selector = config('mailwolt.dkim.selector', 'mwl1'); // $bits = (int) config('mailwolt.dkim.bits', 2048); // // // Keypair erzeugen // $res = app(DkimService::class)->generateForDomain( // domainId: $domain, // bits: $bits, // selector: $selector // ); // // // In dkim_keys speichern // $dk = DkimKey::create([ // 'domain_id' => $domain->id, // 'selector' => $res['selector'], // 'private_key_pem' => $res['private_pem'], // 'public_key_txt' => preg_replace('/^v=DKIM1; k=rsa; p=/', '', $res['dns_txt']), // 'is_active' => true, // ]); // // // Helper-Job zum Installieren starten // InstallDkimKey::dispatch( // domainId: $domain->id, // dkimKeyId: $dk->id, // privPath: $res['priv_path'], // dnsTxtContent: $res['dns_txt'] // )->afterCommit(); // } /** * Beim Löschen alle DKIM-Selector dieser Domain aus OpenDKIM entfernen. */ public function deleted(Domain $domain): void { // Falls SoftDeletes im Spiel, willst du evtl. forceDeleted spiegeln (s.u.) foreach ($domain->dkimKeys()->get() as $dk) { RemoveDkimKey::dispatch( domainId: $domain->id, selector: $dk->selector )->afterCommit(); } } public function forceDeleted(Domain $domain): void { $this->deleted($domain); } }