您好,
在成功导入邮件存档(mbox)后,消息内容中将显示原本被 Gmane 或 mailman2 存档服务器模糊处理的电子邮件地址。这使得收集地址的机器人能够在 Discourse 中抓取这些地址,我正在寻找避免这种情况的方法。
- 全局移除帖子中的电子邮件(是否可以通过显示插件实现?)
- 是否存在已具备该功能的站点设置?
- 其他建议?
提前感谢您的帮助!
您好,
在成功导入邮件存档(mbox)后,消息内容中将显示原本被 Gmane 或 mailman2 存档服务器模糊处理的电子邮件地址。这使得收集地址的机器人能够在 Discourse 中抓取这些地址,我正在寻找避免这种情况的方法。
提前感谢您的帮助!
为什么电子邮件地址会显示在消息内容中?能举个例子吗?
我会通过私信发送给你公开帖子的链接,以免进一步触发机器人 ![]()
以下是消息的混淆版本:
…
2010 年 12 月 23 日 14:05,[已编辑] l <[已编辑]@gmail.com](mailto:[已编辑]@gmail.com)
mailto:[已编辑]@gmail.com 写道:供参考,当有更新时,我是这样处理的
…
因此,这是导入过程中出现的问题,如果您还有机会,应在导入阶段予以修复。我查看了您的论坛,发现其中充斥着大量损坏的内容(如邮件头、缩进错误),不仅是因为旧邮件未被截断,还因为相互回复的邮件被分到了不同的主题中。
这可能是因为您在导入时启用了 show_trimmed_content(此处),或者您的邮件格式未被回复截断代码识别(此处)。此外,似乎还存在许多其他问题。
猜得不错:我确实将 show_trimmed_content 设置为了 true,因为回复修剪代码经常修剪得过多。这不仅发生在导入的 mbox 中,通过电子邮件进行的日常回复也会出现这种情况。虽然理论上可以改进修剪器,但这似乎是一场艰难的战斗。使用邮件的用户总会:(i) 出于各种原因发送格式奇怪的邮件,(ii) 期望这些邮件被完整显示。
导入过程中确实存在其他问题:它远非完美。虽然我很乐意讨论这些问题,但它们并非当务之急。
既然看起来我在导入时并没有遗漏任何会混淆电子邮件的选项,那么显然只剩下两个选择:
s/{email_regexp}/obfuscated/s/{email_regexp}/obfuscated/或者……我是不是方向错了?
这正是我打算采用的方案。
我将使用 PostgreSQL 的 regexp_replace 函数,替换 posts.raw 和 posts.cooked 中的所有电子邮件地址。
我会照做,并在此主题中发布操作指南,谢谢你的建议!
以下是将帖子中所有电子邮件地址替换为 [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