在尝试以下操作前,请务必先备份 Discourse 
以下是将帖子中所有电子邮件地址替换为 [email_redacted] 的方法。该正则表达式较为有限,可能会遗漏一些地址,但我更倾向于使用一个易于阅读和理解的正则表达式,以便在修改所有帖子内容时进行操作。
$ ./launcher enter app
/var/www/discourse# su - postgres -c psql
psql (13.2 (Debian 13.2-1.pgdg100+1))
输入 "help" 以获取帮助。
postgres=# \c discourse
您现在已连接到数据库 "discourse",用户为 "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