'550', 'count'=>12], ...] public function mount(): void { $this->load(); } public function render() { return view('livewire.ui.mail.bounce-card'); } public function refresh(): void { $this->load(true); } protected function load(bool $force=false): void { // Parse last 2000 lines of mail log for status=bounced / defer / reject $log = @shell_exec('tail -n 2000 /var/log/mail.log 2>/dev/null') ?? ''; $this->bounces24h = preg_match_all('/status=bounced/i', $log); $counts = []; if ($log) { if (preg_match_all('/\s([45]\d\d)\s/m', $log, $m)) { foreach ($m[1] as $c) $counts[$c] = ($counts[$c] ?? 0) + 1; } } arsort($counts); $this->topCodes = collect($counts)->take(5)->map(fn($v,$k)=>['code'=>$k,'count'=>$v])->values()->all(); } }