您如何防止电子邮件蜘蛛从网页收集电子邮件?是否mailto:将它们连接起来增加被拾起他们的可能性有多大?URL编码有用吗?
显然,最好的对策是仅向登录用户显示电子邮件地址,或提供联系表单而不是电子邮件地址.但就纯粹的客户端解决方案而言,可用的是什么?
我试图通过首先解析其 dns 来验证电子邮件是否确实存在,然后使用以下代码检查电子邮件是否有效:
email = test@cisco.com
domain = email.split("@")[-1]
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
server.connect(mxRecord)
server.helo(host)
server.mail('myemail@gmail.com')
code, message = server.rcpt(str(email))
server.quit()
if code == 250:
print('valid email', message)
else:
print('invalid email', message)
Run Code Online (Sandbox Code Playgroud)
这几次有效,但是当我发送多个请求时,我收到如下消息:
“5.7.1 服务不可用,客户端主机 [122.166.xxx.xxx] 使用 Spamhaus 被阻止。要请求从此列表中删除,请参阅 http://www.spamhaus.org/lookup.lasso (AS160312312) [BL2NAM02FT12312.eop-nam02。 prod.protection.outlook.com]'"
我知道他们正试图阻止我的 IP 地址,因为它认为它是垃圾邮件。
以下是我的问题:
server.mail('myemail@gmail.com')
我正在尝试使用JavaScript电子邮件混淆器来减少网站上列出的电子邮件中的垃圾邮件的可能性.现在我有了一个基于JavaScript的混淆器,它使用HTML编码和JavaScript的组合,将模糊的电子邮件透明地转换为普通的电子邮件.
我这样做是:
将链接中的href的"mailto:"部分格式化为HTML编码,如:
mailto:
Run Code Online (Sandbox Code Playgroud)
我还对电子邮件进行编码,将@符号替换为(a),以便电子邮件读取如下内容:
stackoverflow(a)example.com
Run Code Online (Sandbox Code Playgroud)
然后,我使用一些JavaScript来破译所有在电子邮件中都有此(a)标志的mailto链接,并将它们转换为@页面加载.
这很有效.对于使用启用了JavaScript的浏览器的用户,他们会看到一切正常.对于未启用JavaScript的人,我知道的每个邮件客户端都会认为该电子邮件地址无效,但是用户应该能够推断出更正符号所需的内容.
我想知道是否有更好的(更少侵入性(或充其量,不是非常侵入性)但更耐垃圾邮件的方式)在网页上混淆电子邮件.
与任何类型的混淆一样,如果人或计算机可以轻松地对其进行去混淆,那么垃圾邮件发送者可以轻松地做同样的事情.因此,我并不期待一个万无一失的混淆,但我很想知道其他建议是什么.搜索Google并没有透露任何我认为比现有解决方案更好的解决方案.我想知道是否还有其他好的选择.
我需要完成哪些流程才能确保从我的网络服务器发送的电子邮件不会被拒绝为垃圾邮件?这个问题适用于会员要求的合法网站电子邮件,例如每日新闻简报,该简报在夜间流程中生成并运行,以及确认电子邮件.
我听到的一些想法是:
SPF是一种避免将电子邮件阻止为垃圾邮件的强大方法.但是,SPF的设置通常用于主域,我无法找到子域的设置,我不确定它是否有效.我想mail.domain.com在单独的服务器上设置我的电子邮件服务器.主域的SPF是
@ v=spf1 mx include:domain.com ~all
@ v=spf1 a mx ptr ip4:0.0.0.0 ~all
Run Code Online (Sandbox Code Playgroud)
对于邮件服务器(子域)
mail.domain.com v=spf1 mx include:mail.domain.com ~all
mail.domain.com v=spf1 a mx ptr ip4:1.1.1.1 ~all
Run Code Online (Sandbox Code Playgroud)
其中0.0.0.0是主服务器IP,1.1.1.1是邮件服务器IP.此设置是否可以成功使用mail.domain.com进行电子邮件(例如name@mail.domain.com)?
还有哪些其他注意事项可以帮助避免将从子域发送的电子邮件标记为垃圾邮件?
我正在编写一个工具c#(和System.Net.Mail),它将发送大约4000封电子邮件.
我可以简单地遍历4000个电子邮件地址列表并一次发送一封电子邮件吗?或者这会导致任何潜在的问题吗?
有一个更好的方法吗?
谢谢
给我几个理由,为什么不以纯文本形式包含电子邮件地址,以便在我们的新闻通讯中发送取消订阅链接.
现在是:
xyz.net/unsubscrible?uid=123&email=user@domamin.com
Run Code Online (Sandbox Code Playgroud)
我在推动:
xyz.net/unsubscrible?uid=123&key=(encrpted_email_md5hash).
Run Code Online (Sandbox Code Playgroud)
我真的不喜欢以纯文本形式发送电子邮件地址的想法,但需要说服我的经理可能存在威胁.
更新:虽然所有答案都表明我应该如何保护它并且没有理由我应该保护它,但我发现do-ob的答案是最合适的.
我是否在加密域中的电子邮件广告系列中提供图像会有所不同吗?这会使电子邮件不太可能最终进入客户端的垃圾邮件文件夹吗?
最近我盯着解密hotmail收件箱/垃圾文件夹放置.经过长时间的搜索,我发现Hotmail/Outlook正在使用他们在每封邮件中输入的X-Message-Delivery标签来确定很多东西.如果您转到电子邮件来源,您可以看到类似于此的X-Message-Delivery:
Vj0xLjE7dXM9MDtsPTE7YT0wO0Q9MjtHRD0yO1NDTD00
如果你BASE64解码它你得到
V=1.1;us=0;l=1;a=0;D=2;GD=2;SCL=4
根据我的研究,我发现以下事情导致邮件进入垃圾文件夹,
If "D=x" is higher then 1
If "GD=x" is higher then 1
If "SCL=x" is higher then 0
Run Code Online (Sandbox Code Playgroud)
除此之外,我发现V = 1.1总是相同的,并且在我收到的任何电子邮件中都没有变化(或至少我检查的那些)
我认为"a = x"意味着如果发送者在接收者地址簿中,或者接收者至少知道.如果它的0是一个新的发送者,因此更有可能进入垃圾文件夹,如果它的a = 1,它有助于进入收件箱.
我认为l = 1或l = 0有一些东西可以使用,如果图像在打开时被阻止或不被这个发送者阻止.虽然我没有发现这一点非常一致.
你们有谁知道,这些标签代表什么?
D=
GD=
us=
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你也知道它们会从0变为1或2吗?
感谢你!
email-spam ×10
email ×6
spam ×4
c# ×1
dns ×1
email-client ×1
hotmail ×1
javascript ×1
obfuscation ×1
python ×1
security ×1
sendmail ×1
smtp ×1
spf ×1
unsubscribe ×1
web-crawler ×1
whitelist ×1