From 7a89493efdb5102864fb8f64c05afdbaf1283d54 Mon Sep 17 00:00:00 2001 From: boban Date: Mon, 27 Apr 2026 06:18:05 +0200 Subject: [PATCH] =?UTF-8?q?Feat:=20Standard=20DKIM-Selektor=20von=20mwl1?= =?UTF-8?q?=20auf=20clb1=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Jobs/InstallDkimKey.php | 2 +- app/Livewire/Ui/Domain/DkimStatus.php | 8 ++++---- app/Livewire/Ui/Domain/Modal/DomainCreateModal.php | 2 +- app/Livewire/Ui/Domain/Modal/DomainDnsModal.php | 8 ++++---- app/Livewire/Ui/Nx/Domain/DnsDkim.php | 4 ++-- app/Observers/DomainObserver.php | 6 +++--- app/Services/DkimService.php | 8 ++++---- config/mailpool.php | 2 +- database/seeders/SystemDomainSeeder.php | 6 +++--- mailwolt-installer | 1 + resources/views/livewire/ui/domain/dkim-status.blade.php | 2 +- 11 files changed, 25 insertions(+), 24 deletions(-) create mode 160000 mailwolt-installer diff --git a/app/Jobs/InstallDkimKey.php b/app/Jobs/InstallDkimKey.php index 624afb8..3e4c523 100644 --- a/app/Jobs/InstallDkimKey.php +++ b/app/Jobs/InstallDkimKey.php @@ -21,7 +21,7 @@ class InstallDkimKey implements ShouldQueue public int $dkimKeyId, public string $privPath, public string $dnsTxtContent, - public string $selector = 'mwl1', + public string $selector = 'clb1', ) {} public function handle(): void diff --git a/app/Livewire/Ui/Domain/DkimStatus.php b/app/Livewire/Ui/Domain/DkimStatus.php index 07e8552..ae6486d 100644 --- a/app/Livewire/Ui/Domain/DkimStatus.php +++ b/app/Livewire/Ui/Domain/DkimStatus.php @@ -24,7 +24,7 @@ class DkimStatus extends Component ?: optional( $domain->dkimKeys()->where('is_active', true)->latest()->first() )->selector - ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + ?: (string) config('mailpool.defaults.dkim_selector', 'clb1'); } /** @@ -46,7 +46,7 @@ class DkimStatus extends Component // public function regenerate(?string $selector = null): void // { // $selector = $selector -// ?: ($this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1')); +// ?: ($this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'clb1')); // // Log::info('DKIM regenerate() CLICKED', [ // 'domain' => $this->domain->domain, @@ -79,7 +79,7 @@ class DkimStatus extends Component public function regenerate(?string $selector = null): void { $selector = $selector - ?: ($this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1')); + ?: ($this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'clb1')); Log::info('DKIM regenerate() CLICKED', [ 'domain' => $this->domain->domain, @@ -126,7 +126,7 @@ class DkimStatus extends Component public function render(): View { - $sel = $this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + $sel = $this->selector ?: (string) config('mailpool.defaults.dkim_selector', 'clb1'); $dkimOk = $this->isDkimReady($this->domain->domain, $sel); return view('livewire.ui.domain.dkim-status', compact('dkimOk')); diff --git a/app/Livewire/Ui/Domain/Modal/DomainCreateModal.php b/app/Livewire/Ui/Domain/Modal/DomainCreateModal.php index d967e3c..69d4182 100644 --- a/app/Livewire/Ui/Domain/Modal/DomainCreateModal.php +++ b/app/Livewire/Ui/Domain/Modal/DomainCreateModal.php @@ -52,7 +52,7 @@ class DomainCreateModal extends ModalComponent $this->max_quota_per_mailbox_mb = config('mailpool.defaults.max_quota_per_mailbox_mb', 3072); $this->total_quota_mb = (int)config('mailpool.defaults.total_quota_mb', 10240); - $this->dkim_selector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + $this->dkim_selector = (string) config('mailpool.defaults.dkim_selector', 'clb1'); $this->dkim_bits = (int) config('mailpool.defaults.dkim_bits', 2048); // Speicherpool-Grenze diff --git a/app/Livewire/Ui/Domain/Modal/DomainDnsModal.php b/app/Livewire/Ui/Domain/Modal/DomainDnsModal.php index 8ce8d5f..d527b6a 100644 --- a/app/Livewire/Ui/Domain/Modal/DomainDnsModal.php +++ b/app/Livewire/Ui/Domain/Modal/DomainDnsModal.php @@ -92,7 +92,7 @@ class DomainDnsModal extends ModalComponent $dmarc = "v=DMARC1; p=none; rua=mailto:dmarc@{$this->domainName}; pct=100"; $dkim = DB::table('dkim_keys')->where('domain_id', $d->id)->where('is_active', 1)->orderByDesc('id')->first(); - $selector = $dkim ? $dkim->selector : 'mwl1'; + $selector = $dkim ? $dkim->selector : 'clb1'; $dkimHost = "{$selector}._domainkey.{$this->domainName}"; $dkimTxt = $dkim && !str_starts_with(trim($dkim->public_key_txt), 'v=') ? 'v=DKIM1; k=rsa; p=' . trim($dkim->public_key_txt) @@ -674,7 +674,7 @@ class DomainDnsModal extends ModalComponent // $dmarc = "v=DMARC1; p=none; rua=mailto:dmarc@{$this->domainName}; pct=100"; // // $dkim = DB::table('dkim_keys')->where('domain_id', $d->id)->where('is_active', 1)->orderByDesc('id')->first(); -// $selector = $dkim ? $dkim->selector : 'mwl1'; +// $selector = $dkim ? $dkim->selector : 'clb1'; // $dkimHost = "{$selector}._domainkey.{$this->domainName}"; // $dkimTxt = $dkim && !str_starts_with(trim($dkim->public_key_txt), 'v=') // ? 'v=DKIM1; k=rsa; p=' . trim($dkim->public_key_txt) @@ -1059,7 +1059,7 @@ class DomainDnsModal extends ModalComponent // // $dkim = DB::table('dkim_keys') // ->where('domain_id', $d->id)->where('is_active', 1)->orderByDesc('id')->first(); -// $selector = $dkim ? $dkim->selector : 'mwl1'; +// $selector = $dkim ? $dkim->selector : 'clb1'; // $dkimHost = "{$selector}._domainkey.{$this->domainName}"; // $dkimTxt = $dkim && !str_starts_with(trim($dkim->public_key_txt), 'v=') // ? 'v=DKIM1; k=rsa; p=' . $dkim->public_key_txt @@ -1179,7 +1179,7 @@ class DomainDnsModal extends ModalComponent //// $mxHost = config('clubird.mx_fqdn', 'mx.' . $this->domain->domain); //// $selector = optional( //// DkimKey::where('domain_id', $this->domain->id)->where('is_active', true)->first() -//// )->selector ?? 'mwl1'; +//// )->selector ?? 'clb1'; //// //// $dkimTxt = optional( //// DkimKey::where('domain_id', $this->domain->id)->where('is_active', true)->first() diff --git a/app/Livewire/Ui/Nx/Domain/DnsDkim.php b/app/Livewire/Ui/Nx/Domain/DnsDkim.php index 64fcb8c..ef2816c 100644 --- a/app/Livewire/Ui/Nx/Domain/DnsDkim.php +++ b/app/Livewire/Ui/Nx/Domain/DnsDkim.php @@ -38,7 +38,7 @@ class DnsDkim extends Component { $domain = Domain::findOrFail($id); $selector = optional($domain->dkimKeys()->where('is_active', true)->latest()->first())->selector - ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + ?: (string) config('mailpool.defaults.dkim_selector', 'clb1'); try { /** @var DkimService $svc */ @@ -61,7 +61,7 @@ class DnsDkim extends Component public function render() { - $defaultSelector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + $defaultSelector = (string) config('mailpool.defaults.dkim_selector', 'clb1'); $mapped = Domain::where('is_server', false) ->with(['dkimKeys' => fn($q) => $q->where('is_active', true)->latest()]) diff --git a/app/Observers/DomainObserver.php b/app/Observers/DomainObserver.php index 8db08ad..6421d13 100644 --- a/app/Observers/DomainObserver.php +++ b/app/Observers/DomainObserver.php @@ -17,7 +17,7 @@ class DomainObserver { if ($domain->is_server) return; - $selector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + $selector = (string) config('mailpool.defaults.dkim_selector', 'clb1'); $bits = (int) config('mailpool.defaults.dkim_bits', 2048); try { @@ -56,7 +56,7 @@ class DomainObserver // Selector VOR dem Delete einsammeln (Relation oder direkte Query) $selectors = DkimKey::where('domain_id', $domain->id)->pluck('selector')->all(); - $selectors = $selectors ?: ['mwl1']; + $selectors = $selectors ?: ['clb1']; foreach ($selectors as $sel) { $cmd = ['sudo','-n','/usr/local/sbin/mailwolt-remove-dkim', $domain->domain, $sel]; @@ -136,7 +136,7 @@ class DomainObserver // return; // } // -// $selector = (string) config('mailpool.defaults.dkim_selector', 'mwl1'); +// $selector = (string) config('mailpool.defaults.dkim_selector', 'clb1'); // $bits = (int) config('mailpool.defaults.dkim_bits', 2048); // // $res = app(\App\Services\DkimService::class) diff --git a/app/Services/DkimService.php b/app/Services/DkimService.php index 8c34f99..d7a880b 100644 --- a/app/Services/DkimService.php +++ b/app/Services/DkimService.php @@ -15,7 +15,7 @@ class DkimService /** Erzeugt Keypair & gibt den TXT-Record (ohne Host) zurück. */ public function generateForDomain(Domain $domain, int $bits = 2048, string $selector = null): array { - $selector = $selector ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1'); + $selector = $selector ?: (string) config('mailpool.defaults.dkim_selector', 'clb1'); // $dirKey = $this->safeKey($domain->domain); // $selKey = $this->safeKey($selector, 32); @@ -205,7 +205,7 @@ class DkimService ? $domain->dkimKeys()->pluck('selector')->all() : \App\Models\DkimKey::whereHas('domain', fn($q) => $q->where('domain', $name)) ->pluck('selector')->all(); - $keys = $keys ?: ['mwl1']; + $keys = $keys ?: ['clb1']; } else { $keys = [$selector]; } @@ -241,7 +241,7 @@ class DkimService // : \App\Models\DkimKey::whereHas('domain', fn($q) => $q->where('domain', $name)) // ->pluck('selector')->all(); // -// $keys = $keys ?: ['mwl1']; // notfalls versuchen wir Standard +// $keys = $keys ?: ['clb1']; // notfalls versuchen wir Standard // } else { // $keys = [$selector]; // } @@ -265,7 +265,7 @@ class DkimService // public function removeForDomain(Domain|string $domain, ?string $selector = null): void // { // $name = $domain instanceof \App\Models\Domain ? $domain->domain : $domain; -// $selector = $selector ?: (string) config('mailpool.defaults.dkim_selector', 'mwl1'); +// $selector = $selector ?: (string) config('mailpool.defaults.dkim_selector', 'clb1'); // // // Root-Helper ausführen // $p = Process::run([ diff --git a/config/mailpool.php b/config/mailpool.php index 628710a..ac79b07 100644 --- a/config/mailpool.php +++ b/config/mailpool.php @@ -19,7 +19,7 @@ return [ 'fallback_du' => (bool) env('MAILPOOL_FALLBACK_DU', true), 'defaults' => [ - 'dkim_selector' => 'mwl1', + 'dkim_selector' => 'clb1', 'dkim_bits' => 2048, 'max_aliases' => (int) env('MAILPOOL_DEFAULT_MAX_ALIASES', 400), diff --git a/database/seeders/SystemDomainSeeder.php b/database/seeders/SystemDomainSeeder.php index c2166da..20dd751 100644 --- a/database/seeders/SystemDomainSeeder.php +++ b/database/seeders/SystemDomainSeeder.php @@ -305,7 +305,7 @@ class SystemDomainSeeder extends Seeder // // DKIM – Key erzeugen, falls keiner aktiv existiert // if (!$systemDomain->dkimKeys()->where('is_active', true)->exists()) { // [$privPem, $pubTxt] = $this->generateDkimKeyPair(); -// $selector = 'mwl1'; // frei wählbar, später rotieren +// $selector = 'clb1'; // frei wählbar, später rotieren // // DkimKey::create([ // 'domain_id' => $systemDomain->id, @@ -452,7 +452,7 @@ class SystemDomainSeeder extends Seeder // // DKIM – Key erzeugen, falls keiner aktiv existiert // if (!$systemDomain->dkimKeys()->where('is_active', true)->exists()) { // [$privPem, $pubTxt] = $this->generateDkimKeyPair(); -// $selector = 'mwl1'; // frei wählbar, später rotieren +// $selector = 'clb1'; // frei wählbar, später rotieren // // DkimKey::create([ // 'domain_id' => $systemDomain->id, @@ -569,7 +569,7 @@ class SystemDomainSeeder extends Seeder // // DKIM – Key erzeugen, falls keiner aktiv existiert // if (! $domain->dkimKeys()->where('is_active', true)->exists()) { // [$privPem, $pubTxt] = $this->generateDkimKeyPair(); -// $selector = 'mwl1'; // frei wählbar, z. B. rotierend später +// $selector = 'clb1'; // frei wählbar, z. B. rotierend später // // DkimKey::create([ // 'domain_id' => $domain->id, diff --git a/mailwolt-installer b/mailwolt-installer new file mode 160000 index 0000000..feefabe --- /dev/null +++ b/mailwolt-installer @@ -0,0 +1 @@ +Subproject commit feefabe4aac9b01a93ad8d472fd01ecaf0e91524 diff --git a/resources/views/livewire/ui/domain/dkim-status.blade.php b/resources/views/livewire/ui/domain/dkim-status.blade.php index 6568d37..affdfbc 100644 --- a/resources/views/livewire/ui/domain/dkim-status.blade.php +++ b/resources/views/livewire/ui/domain/dkim-status.blade.php @@ -7,7 +7,7 @@ @if(!$dkimOk)