Come appare il messaggio
550 5.1.1 <anna@example.com>: Recipient address rejected: User unknown in virtual mailbox tableCause frequenti
- Refuso nell'indirizzo, oppure la casella è stata cancellata.
- Indirizzo assente in
virtual_mailbox_mapso alias assente invirtual_alias_maps. - File hash non ricostruito con
postmapdopo la modifica. - Dominio presente sia in
mydestinationsia invirtual_mailbox_domains: Postfix cerca allora utenti Unix locali (“User unknown in local recipient table”). - Dopo una migrazione l'MX punta ancora al vecchio server, che non ha più le caselle.
Verifica
- Mostra classi di dominio e mappe di Postfix
postconf mydestination virtual_mailbox_domains virtual_mailbox_maps virtual_alias_maps - Verifica se l'indirizzo è una casella nota
postmap -q anna@example.com $(postconf -h virtual_mailbox_maps) - Verifica se esiste un alias per l'indirizzo
postmap -q anna@example.com $(postconf -h virtual_alias_maps) - Trova nel log i destinatari rifiutati
journalctl -u postfix --since '1 hour ago' | grep 'User unknown'
Soluzione
- Fai controllare l'indirizzo al mittente: spesso è solo un refuso.
- Crea casella o alias; con mappe hash esegui
postmap /etc/postfix/virtualepostfix reload. - Metti ogni dominio in una sola classe: domini locali in
mydestination, quelli virtuali solo invirtual_mailbox_domains. - Dopo una migrazione controlla record MX e TTL, così la posta non finisce sul vecchio server.
- Niente catch-all come scorciatoia: attira spam e nasconde gli errori veri.
Domande frequenti
550 5.1.1 è un problema di spam?
No. Il codice riguarda solo il destinatario. La tua reputazione non ne risente, a meno che tu non invii in massa a indirizzi non validi.
Perché Postfix rifiuta anche se l'utente è nel database?
Di solito la query SQL della mappa non restituisce nulla, ad es. per un refuso o un campo sbagliato. Prova con postmap -q direttamente sul file della mappa.