Come appare il messaggio
postfix/smtpd[3105]: NOQUEUE: reject: RCPT from unknown[203.0.113.30]: 450 4.1.8 <root@server1.localdomain>: Sender address rejected: Domain not found; from=<root@server1.localdomain> to=<admin@example.com> proto=ESMTPCause frequenti
- L'indirizzo mittente usa un dominio inventato come
.localo.localdomain, spesso nella posta di cron o del monitoraggio. - Il dominio del mittente non ha davvero record A o MX, per un errore di battitura o un dominio non ancora configurato.
- Il DNS del server ricevente è guasto o lento, quindi un dominio valido sembra mancare. Il codice 4xx indica un rifiuto temporaneo.
- Un dominio nuovo o spostato il cui DNS non si è ancora propagato o è stato cancellato per errore.
Verifica
- Il dominio del mittente ha un record MX?
- Ha un record A?
dig +short A example.com - Qual è lo stato DNS del dominio?
dig example.com MX | grep -E 'status:' - Quali controlli sul mittente sono attivi?
postconf -n | grep -E 'smtpd_sender_restrictions|unknown_address_reject_code|myorigin'
Soluzione
- Se il dominio è finto, cambia il mittente. Per il tuo server imposta un dominio reale:
myorigin = example.cominmain.cf, oppure riscrivi il mittente consender_canonical_maps. - Per app e cron, imposta nelle loro impostazioni un indirizzo mittente reale in un dominio che ha record DNS.
- Risolvi il DNS mancante: pubblica un record A o MX per il dominio del mittente e controlla la zona per errori di battitura.
- Se il problema è il tuo resolver, provalo con
dig example.com MX @1.1.1.1e ripara/etc/resolv.confo il resolver locale. - Solo come ultima risorsa, togli
reject_unknown_sender_domaindasmtpd_sender_restrictions. Quel controllo blocca molta spazzatura.
Domande frequenti
Perché è un 450 e non un 550?
Postfix usa unknown_address_reject_code, che per default è 450 (riprova più tardi). I mittenti ritentano, quindi un breve problema DNS non fa perdere posta. Imposta 550 solo se vuoi un rifiuto definitivo.
La mail arriverà comunque?
Un server mittente ritenta per giorni. Se il dominio del mittente è finto non riuscirà mai, quindi correggi l'indirizzo alla fonte.