Feat: Standard DKIM-Selektor von mwl1 auf clb1 geändert

main v1.1.433
boban 2026-04-27 06:18:05 +02:00
parent afce3d9687
commit 7a89493efd
11 changed files with 25 additions and 24 deletions

View File

@ -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

View File

@ -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'));

View File

@ -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

View File

@ -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()

View File

@ -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()])

View File

@ -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)

View File

@ -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([

View File

@ -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),

View File

@ -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,

1
mailwolt-installer Submodule

@ -0,0 +1 @@
Subproject commit feefabe4aac9b01a93ad8d472fd01ecaf0e91524

View File

@ -7,7 +7,7 @@
@if(!$dkimOk)
<button
wire:click="regenerate('{{ $selector ?? ($domain->dkimKeys()->where('is_active', true)->latest()->value('selector') ?? 'mwl1') }}')"
wire:click="regenerate('{{ $selector ?? ($domain->dkimKeys()->where('is_active', true)->latest()->value('selector') ?? 'clb1') }}')"
wire:loading.attr="disabled"
class="inline-flex items-center gap-2 rounded-lg px-3 py-1.5 text-xs font-medium
border border-slate-600/40 bg-slate-800/40 hover:bg-slate-800 disabled:opacity-50">