tutte le guide

// come risolvere

Postfix "553 5.7.1 Sender address rejected: not owned by user": come risolvere

Postfix rifiuta il tuo indirizzo From con 553 5.7.1 not owned by user o not logged in? Correggi smtpd_sender_login_maps o invia con il login giusto.

Cosa significa

Il tuo server Postfix verifica che la persona che ha effettuato l'accesso sia autorizzata a inviare con l'indirizzo mittente che usa. Quando non lo è, rifiuta il messaggio:

553 5.7.1 <info@yourdomain.com>: Sender address rejected: not owned by user john@yourdomain.com

Un messaggio simile compare quando qualcuno usa uno dei tuoi indirizzi senza aver effettuato alcun accesso:

553 5.7.1 <info@yourdomain.com>: Sender address rejected: not logged in

È una protezione, non un bug: impedisce a un utente (o a una password rubata) di inviare spacciandosi per un'altra persona. La soluzione è indicare a Postfix chi può usare quale indirizzo, oppure inviare con l'account giusto.

Perché succede

Il controllo deriva dalla restrizione reject_sender_login_mismatch (o dalle sue varianti reject_authenticated_sender_login_mismatch e reject_known_sender_login_mismatch). Confronta due cose:

  • il mittente della busta (l'indirizzo MAIL FROM fornito dal programma di posta, non sempre l'intestazione From visibile), e
  • il nome di login usato per l'autenticazione SMTP.

Postfix cerca il mittente nella tabella indicata da smtpd_sender_login_maps. Se il login non è elencato come proprietario, rifiuta. Situazioni tipiche:

  • Un utente invia da un indirizzo condiviso o da un alias (info@, sales@) che non è associato al suo login.
  • Un sito web, una stampante o uno script accede con un account ma invia con un altro indirizzo.
  • Il nome di login è john ma la tabella indica john@yourdomain.com (o viceversa).
  • La tabella è stata modificata ma postmap non è stato eseguito, quindi Postfix legge ancora la vecchia versione.
  • Un'app imposta un mittente della busta (indirizzo di rimbalzo) diverso dall'indirizzo From.

Come verificare

  1. Leggi il log di posta per trovare il mittente e il login esatti:
    grep "not owned by user" /var/log/mail.log | tail
  2. Guarda le impostazioni attive:
    postconf smtpd_sender_login_maps smtpd_sender_restrictions
    postconf -M submission/inet
    Il secondo comando mostra le sostituzioni -o del servizio submission (porta 587) in master.cf, dove questa restrizione è spesso impostata.
  3. Interroga direttamente la tabella:
    postmap -q info@yourdomain.com hash:/etc/postfix/sender_login
    Mostra i login autorizzati per quell'indirizzo, oppure niente.
  4. Riproduci il problema con swaks:
    swaks --server mail.yourdomain.com:587 --tls \
      --auth LOGIN --auth-user john@yourdomain.com \
      --from info@yourdomain.com --to you@example.com

Come risolvere

Autorizza il login a usare l'indirizzo

Modifica la tabella dei login mittente, un mittente per riga, seguito dai login autorizzati separati da virgole:

# /etc/postfix/sender_login
john@yourdomain.com     john@yourdomain.com
info@yourdomain.com     john@yourdomain.com, mary@yourdomain.com
@yourdomain.com         admin@yourdomain.com

L'ultima riga permette ad admin@yourdomain.com di inviare con qualsiasi indirizzo del dominio; usala con cautela. Poi ricostruisci la tabella e ricarica:

postmap /etc/postfix/sender_login
systemctl reload postfix

Assicurati che main.cf punti alla tabella:

smtpd_sender_login_maps = hash:/etc/postfix/sender_login

Se i tuoi utenti sono in un database (MySQL, PostgreSQL, LDAP), la tabella è una query; aggiungi lì il permesso per l'alias. I pannelli di controllo e le suite di server di posta di solito lo presentano come permesso "invia come" (send as) o alias per ogni casella.

Oppure accedi con l'account giusto

Per un sito web o un dispositivo, la soluzione più semplice è spesso accedere con l'account proprietario dell'indirizzo, oppure creare una casella per l'indirizzo da cui invia.

Correggi il mittente della busta nelle app

Se il From visibile è corretto ma il log mostra un altro mittente, l'app imposta un mittente della busta diverso. Impostalo su un indirizzo di proprietà del login (per PHPMailer, $mail->Sender; per nodemailer, l'opzione envelope). Vedi Return-Path, mittente della busta e From.

Non limitarti a rimuovere la restrizione

Rimuovere reject_sender_login_mismatch fa sparire l'errore ma permette a qualsiasi utente di inviare come chiunque. Inoltre non usare l'indirizzo dei visitatori come mittente nei moduli di contatto (vedi email del modulo di contatto inviate "da" il visitatore). Se invece l'errore è "Relay access denied", vedi 554 5.7.1 Relay access denied.

Verifica che sia risolto

Esegui lo stesso comando swaks: deve terminare con 250 2.0.0 Ok: queued. Poi invia dalla vera app o dal client di posta all'indirizzo unico indicato nella home page di Delivmail e verifica nel report che SPF, DKIM e DMARC passino per l'indirizzo mittente. Infine reinvia il messaggio che era stato rifiutato.

Verifica che sia risolto

Una modifica DNS può richiedere da pochi minuti a qualche ora. Poi invia una nuova email di test o scansiona di nuovo il tuo dominio.

Guide correlate