A WordPress admin plugin to Customize and secure your WordPress dashboard
Non mi è arrivato niente.. ora hai la prova
Ogni email che il sito invia viene registrata con destinatario, oggetto, esito e - la cosa che di solito manca - quale plugin l'ha spedita. Per le notifiche dai moduli trovi anche chi ha scritto e da quale indirizzo IP.Il corpo del messaggio non viene mai salvato.
Il modulo si aggancia a wp_mail con la priorità più bassa possibile, così vede il messaggio esattamente come lo riceve WordPress dopo che gli altri plugin l'hanno eventualmente modificato. Se l'invio fallisce, la riga già scritta viene aggiornata con l'errore restituito.
wp_mail() è una funzione, non un hook: non c'è un callback da ispezionare. Il modulo risale la pila delle chiamate e cerca il primo file che appartiene a un plugin o al tema, poi traduce la cartella nel nome leggibile del plugin. È la risposta alla domanda che ci si fa davvero quando un sito spedisce quaranta email al giorno.
Quando wp_mail parte durante l'invio di un form, i campi sono ancora nella richiesta: il modulo prende il primo indirizzo valido che non appartenga al sito, scendendo anche nei campi annidati. Funziona con qualsiasi plugin di moduli e con i form scritti a mano, perché non dipende dai loro schemi interni.
Per un modulo di contatto è chi ha scritto, perché l'invio avviene dentro la stessa richiesta. Ma le email di cron o da riga di comando non hanno nessuno dietro, e quelle scatenate da un'azione in bacheca avrebbero l'IP dell'amministratore: scriverlo lì sarebbe una bugia, quindi il campo resta vuoto. La lettura dell'IP è la stessa usata dal geofencing, così rispetta l'impostazione "dietro proxy".
Il log delle email WordPress non salva mail il corpo del messaggio, e la colonna che in passato lo conteneva viene eliminata dalla tabella all'aggiornamento: una colonna che ha ospitato link di reimpostazione password e codici di verifica non va lasciata lì per inerzia.
Privacy: il registro conserva indirizzi email e indirizzi IP, che sono dati personali ai sensi del GDPR. La raccolta è disattivabile e il registro svuotabile: indicalo nella tua privacy policy con il periodo di conservazione che applichi. Via d'uscita d'emergenza: define('ADMIN3WEBBLUE_DISABLE_MAILLOG', true);.
Domande frequenti
Cinque risposte su cosa viene registrato, cosa non viene salvato e come leggere un esito.
Data e ora, destinatario, oggetto, esito, l’eventuale messaggio d’errore, l’indirizzo IP della richiesta e il plugin che ha spedito. Il modulo si aggancia a la funzione wp_mail() di WordPress con la priorità più bassa possibile, così vede il messaggio esattamente come lo riceve WordPress dopo che gli altri plugin lo hanno eventualmente modificato.
Se l’invio fallisce, la riga già scritta viene aggiornata con l’errore restituito. Non ci sono due voci per lo stesso messaggio: una riga, un esito.
Ogni riga indica il plugin di origine, ed è il dato che manca quasi sempre altrove. wp_mail() è una funzione e non un hook, quindi non c’è un callback da ispezionare: il modulo risale la pila delle chiamate, trova il primo file che appartiene a un plugin o al tema e ne mostra il nome leggibile.
Quando un sito spedisce quaranta messaggi al giorno tra ordini, moduli di contatto e notifiche di sistema, è l’unico modo per rispondere alla domanda vera: chi l’ha mandata.
Che il messaggio è stato accettato dal server di posta, non che sia arrivato nella casella del destinatario. Sono due cose diverse e conviene tenerle distinte: il plugin può sapere solo la prima, perché è tutto ciò che WordPress gli riporta.
Quindi una riga verde con destinatario che sostiene di non aver ricevuto nulla indica un problema di recapito, quasi sempre record SPF e DKIM mancanti o non allineati, che fanno finire i messaggi nello spam o li fanno rifiutare a monte. Il log ti dice da che parte guardare, che è già metà del lavoro.
No, e la colonna che in passato lo conteneva viene eliminata dalla tabella all’aggiornamento. Non è una funzione mancante ma una scelta: una colonna che ha ospitato link di reimpostazione password e codici di verifica non va lasciata lì per inerzia.
Restano i campi che servono a diagnosticare, senza conservare il contenuto delle comunicazioni dei tuoi utenti. Vale la pena ricordare che indirizzi email e IP sono comunque dati personali: indica il trattamento nella privacy policy con il periodo di conservazione che applichi davvero.
Perché l’IP registrato è quello della richiesta durante la quale l’email è partita. Per un modulo di contatto coincide con chi ha scritto, ed è utile. Ma i messaggi generati dal cron o da riga di comando non hanno nessuno dietro, e quelli scatenati da un’azione in bacheca porterebbero l’IP dell’amministratore: scriverlo lì sarebbe una bugia comoda, quindi il campo resta vuoto.
Il registro conserva le diecimila voci più recenti in una tabella dedicata e indicizzata, si svuota dalla pagina con una conferma e si disattiva del tutto con ADMIN3WEBBLUE_DISABLE_MAILLOG in wp-config.php.