Het probleem
Een multifunctional op kantoor kon zijn scans niet meer mailen. De melding: "SMTP email server error. The server might be down or busy." DNS, netwerk en poort 587 waren in orde.
De werkelijke oorzaak zat in TLS. De mailprovider accepteert op TLS 1.2 alleen drie AEAD-ciphers (ECDHE met AES-GCM of ChaCha20). De printer ondersteunt STARTTLS, maar geen van die drie. De generieke foutmelding verraadde dat niet.
De oplossing
Een kleine Postfix-relay op de monitoringhost:
- Printer → relay: TLS verplicht, met een eigen certificaat dat de printer valideert.
- Relay → provider:
smtp_tls_security_level=secure, dus alleen met een geldig certificaat. - Drie losse restricties: alleen de IP-adressen van de printers, SASL-authenticatie en een vast afzenderdomein (met SPF, DKIM en DMARC ingericht).
Het image
Het gangbare Postfix-image had tientallen kritieke en honderden hoge kwetsbaarheden waarvoor al een fix bestond. De "edge"-variant was op een andere manier kapot. Daarom bouw ik het image zelf, in dezelfde repository:
- een
apt-get upgradebovenop de basis en het verwijderen van een overbodige Python-omgeving: nul HIGH/CRITICAL; - de deploy bouwt op de host zonder cache, scant het resultaat met Trivy en weigert bij bevindingen;
- het nieuwe image wordt pas actief na een rooktest, anders gaat het automatisch terug naar
:previous; - een wekelijkse geplande pipeline herbouwt het image, zodat beveiligingsupdates vanzelf meekomen.
Resultaat
De scanner mailt weer, via een relay die zichzelf actueel houdt en niet uitrolt als hij kwetsbaar is. Het hele project staat in één repository: compose, Dockerfile, CI, deploy-script en documentatie.