is_server) return; $selector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); $bits = (int) config('mailpool.defaults.dkim_bits', 2048); // Service erledigt: Key generieren, DB (upsert) pflegen, Helper ausführen, OpenDKIM reloaden app(\App\Services\DkimService::class)->generateForDomain($domain, $bits, $selector); // DNS-Records: aktiven Key aus DB lesen und provisionieren $active = $domain->dkimKeys()->where('is_active', true)->latest()->first(); if ($active) { app(\App\Services\DnsRecordService::class)->provision( $domain, $active->selector, "v=DKIM1; k=rsa; p={$active->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 // { // if ($domain->is_server) { // return; // } // // $selector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); // $bits = (int) config('mailpool.defaults.dkim_bits', 2048); // // $res = app(\App\Services\DkimService::class) // ->generateForDomain($domain, $bits, $selector); // // // 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), // ] // ); // } /** * Beim Löschen alle DKIM-Selector dieser Domain aus OpenDKIM entfernen. */ public function deleted(Domain $domain): void { try { /** @var \App\Services\DkimService $svc */ $svc = app(\App\Services\DkimService::class); // Entferne DKIM aus OpenDKIM Config $svc->removeForDomain($domain); // Optionale lokale Dateien löschen $path = storage_path("app/private/dkim/{$domain->domain}"); if (is_dir($path)) { \Illuminate\Support\Facades\File::deleteDirectory($path); } // Reload OpenDKIM \Illuminate\Support\Facades\Process::run(['sudo','-n','/usr/bin/systemctl','reload','opendkim']); Log::info("Domain deleted + DKIM cleaned", ['domain' => $domain->domain]); } catch (\Throwable $e) { Log::error("Domain delete cleanup failed", [ 'domain' => $domain->domain, 'error' => $e->getMessage(), ]); } } public function forceDeleted(Domain $domain): void { $this->deleted($domain); } }