Come appare il messaggio
postfix/smtpd[2210]: NOQUEUE: reject: RCPT from client.example.net[203.0.113.20]: 554 5.7.1 <user@example.org>: Relay access denied; from=<me@example.com> to=<user@example.org> proto=ESMTP helo=<client>Cause frequenti
- Il client di posta o l'app non si autentica, oppure usa la porta 25 dove il login non è offerto. Usa la porta submission 587 con login.
- In
smtpd_relay_restrictionsmancapermit_sasl_authenticated, quindi anche gli utenti autenticati vengono rifiutati. - Il dominio del destinatario è tuo, ma non è elencato in
virtual_mailbox_domains,mydestinationorelay_domains. - L'host mittente è una macchina interna fidata, ma il suo indirizzo non è in
mynetworks. - Un errore di battitura nel dominio del destinatario, o un record MX che punta a questo server per un dominio che non deve servire.
Verifica
- Regole di relay e destinatari in vigore
postconf -n | grep -E 'smtpd_relay_restrictions|smtpd_recipient_restrictions|mynetworks' - Quali domini accetta questo server?
postconf -n | grep -E 'mydestination|virtual_mailbox_domains|virtual_alias_domains|relay_domains' - Il login è attivo sul servizio submission?
postconf -P submission/inet/smtpd_sasl_auth_enable - I rifiuti nel log
Soluzione
- Fai inviare i tuoi utenti dalla porta 587 con STARTTLS e login, non dalla porta 25 senza login.
- Consenti gli utenti autenticati:
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destinatione attivasmtpd_sasl_auth_enable = yessul servizio submission inmaster.cf. - Se il dominio destinatario deve essere consegnato qui, aggiungilo a
virtual_mailbox_domains(omydestination), ma solo a uno dei due, poipostfix reload. - Per un host interno fidato aggiungi a
mynetworkssolo quel suo indirizzo. Mai intervalli ampi o0.0.0.0/0. - Invia di nuovo una mail di prova e verifica che la riga di log sia sparita.
Domande frequenti
Vuol dire che il mio server è un open relay?
No, il contrario. Il messaggio è la protezione che funziona. Devi intervenire solo se vengono rifiutati i tuoi utenti o il tuo dominio.
Perché succede solo con alcuni destinatari?
La posta verso i tuoi domini viene accettata, quella verso altri domini richiede autenticazione. Quindi i destinatari locali passano e quelli esterni ricevono l'errore finché il client non fa login.