Offuscare mailto:foo@bar.com durante l'importazione di archivi di posta

Buongiorno,

Dopo un’importazione riuscita di archivi di posta ( mbox ), il contenuto dei messaggi mostrerà indirizzi email che sarebbero stati offuscati da Gmane o dal server di archiviazione mailman2. Questo permette ai bot di raccogliere indirizzi e di raccoglierli in Discourse, e sto cercando un modo per evitarlo.

  1. Rimuovere globalmente le email dai post (forse un plugin di visualizzazione?)
  2. Un’impostazione del sito che lo faccia già
  3. Un’altra idea?

Grazie in anticipo per il vostro aiuto!

Perché gli indirizzi email vengono visualizzati nel contenuto dei messaggi? Puoi fare un esempio?

1 Mi Piace

Ti invierò un link ai post pubblici in un messaggio privato per non attivare ulteriormente i bot, che lo sono già di per sé :stuck_out_tongue:

Ecco la versione oscurata del messaggio:


Il 23 dicembre 2010 alle 14:05, [redacted] ha scritto <[redacted]@gmail.com>

Per info, quando ci sono aggiornamenti, ecco come procedo

Quindi questo è un problema legato all’importazione che (se ne hai ancora la possibilità) dovrebbe essere risolto durante la fase di importazione. Ho dato un’occhiata al tuo forum ed è pieno di contenuti rotti (intestazioni delle email, indentazione errata) sia per quanto riguarda le email vecchie che non vengono tagliate, sia per le email che sono risposte reciproche ma vengono inserite in argomenti diversi.

O hai abilitato show_trimmed_content (qui) durante l’importazione o il formato dei tuoi messaggi non è stato riconosciuto dal codice del ritaglio delle risposte (qui). Anche se sembra che ci siano molti altri problemi.

2 Mi Piace

Buona ipotesi: ho effettivamente impostato show_trimmed_content su true perché il codice del ritagliatore di risposte spesso taglia più di quanto dovrebbe. Non solo nell’importazione mbox, ma è successo quotidianamente anche con le risposte via email. Anche se sarebbe possibile migliorare il ritagliatore, sembrava una battaglia in salita. Gli utenti della posta elettronica avranno sempre (i) email con formattazione strana per qualsiasi motivo, (ii) si aspetteranno che vengano visualizzate per intero.

Infatti ci sono altri problemi nell’importazione: è tutt’altro che perfetta. Anche se sarei felice di discuterne, non sono una preoccupazione immediata.

Dato che sembra che non abbia saltato un’opzione nell’importazione che oscurerebbe gli indirizzi email, apparentemente restano due opzioni:

  • Sostituire globalmente il contenuto nei post con qualcosa come s/{email_regexp}/oscurato/
  • Trovare/scrivere un plugin che oscuri il contenuto visualizzato (convertitore HTML?) con s/{email_regexp}/oscurato/

O… sto prendendo la direzione sbagliata?

Questa è la strada che dovrei seguire.

Utilizzerei regexp_replace di PostgreSQL per sostituire tutti gli indirizzi email in posts.raw e posts.cooked.

3 Mi Piace

Lo farò e pubblicherò il HOWTO in questo argomento, grazie per il consiglio!

:warning: Assicurati di eseguire il backup di Discourse prima di provare quanto segue :warning:

Ecco come sostituire tutti gli indirizzi email nei post con [email_redacted]. L’espressione regolare è piuttosto limitata e probabilmente ne mancherà alcune, ma preferisco un’espressione che posso leggere e comprendere quando modifico il contenuto di tutti i post.

$ ./launcher enter app
/var/www/discourse# su - postgres -c psql
psql (13.2 (Debian 13.2-1.pgdg100+1))
Digita "help" per ottenere aiuto.

postgres=# \c discourse
Ora sei connesso al database "discourse" come utente "postgres".
discourse=# \set re '[0-9a-z._%+-]+@[a-z0-9.-]+\\.[a-z]{2,64}'
discourse=# update posts set raw = regexp_replace(raw, :'re', '[email_redacted]', 'gi') where raw ~ :'re';
UPDATE 1
discourse=# update posts set cooked = regexp_replace(cooked, :'re', '[email_redacted]', 'gi') where cooked ~ :'re';
UPDATE 1