mail: Bounce-Abruf liest RFC 6533, All-Inkl-Freitext und ganze INBOX

Befund aus 151 echten Rücklaeufern: 2 SmarterMail-DSNs
(message/global-delivery-status) und 2 Freitext-Hinweise des eigenen
Relays (X-KASMail-Error, formal auto-replied) fielen durch. Policy- und
Quota-Codes zaehlen weich statt hart. Abruf ohne UNSEEN-Filter, weil
das Verschieben die Zustandsmarke ist.

Dazu Schutz in tests/TestCase.php: Suite bricht ab, wenn ein Config-Cache
sie auf die Dev-Datenbank umlenkt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-15 15:27:09 +00:00
parent 71d9639491
commit fddfd8a61c
9 changed files with 323 additions and 15 deletions

View file

@ -3,8 +3,25 @@
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use RuntimeException;
abstract class TestCase extends BaseTestCase
{
//
/**
* Schutz vor einem gecachten `bootstrap/cache/config.php`: Der überlagert
* die phpunit.xml-Umgebung, die Suite läuft dann gegen die Dev-Datenbank
* aus der .env — und `RefreshDatabase` leert sie (passiert am
* 15.09.2026, 3 GB Bestandskopie weg). Lieber laut abbrechen.
*/
protected function setUp(): void
{
parent::setUp();
if (config('database.default') !== 'sqlite' || config('database.connections.sqlite.database') !== ':memory:') {
throw new RuntimeException(sprintf(
'Tests laufen gegen „%s“ statt SQLite :memory: — vermutlich liegt ein Config-Cache. `php artisan config:clear` und erneut starten.',
config('database.default'),
));
}
}
}