加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 像Craigslist – Rails这样的电子邮件转发

发布时间:2020-12-17 04:30:27 所属栏目:百科 来源:网络整理
导读:我正在尝试做craigslist的匿名电子邮件,但是使用Rails,也很便宜.能够在电子邮件中添加标题对我来说很重要,这就是基本电子邮件转发不起作用的原因. 我想到的一种方式是SMTP服务器,每当我通过POP / IMAP阅读电子邮件时,我就会发送一封电子邮件给电子邮件的真正
我正在尝试做craigslist的匿名电子邮件,但是使用Rails,也很便宜.能够在电子邮件中添加标题对我来说很重要,这就是基本电子邮件转发不起作用的原因.

我想到的一种方式是SMTP服务器,每当我通过POP / IMAP阅读电子邮件时,我就会发送一封电子邮件给电子邮件的真正收件人,并使用正确的FROM地址并添加标题.这可行,但SMTP服务器相对昂贵.

另一种方法是转发/重定向电子邮件,但在两者之间添加标题.虽然我找不到任何服务或宝石.

请不要只说“电子邮件管道”,因为所有真正意味着将电子邮件发送到您的Rails程序,您收到电子邮件后该怎么办?你是如何实际转发的.

有任何想法吗?

解决方法

您需要一个电子邮件地址,使用您的系统管理员可控制的MX服务器的域.这可能是您主域的子域.然后你做的是,你配置MTA软件(Exim,Postfix …希望不是qMail!)将该电子邮件传递给Rails:

http://guides.rubyonrails.org/action_mailer_basics.html#receiving-emails

如果MTA未与rails应用程序本身安装在同一服务器上,则必须将电子邮件传递给一个小的ad-hoc转发器脚本,该脚本在将电子邮件发布到您的应用程序时执行某些操作,然后您手动执行把它传递给你的邮件.

在您的邮件程序中,您可以访问所有标题,正文,附件等.如果您在主题或回复地址中放置了一些唯一标识符,您可以决定要将邮件实例化到哪个邮件程序.预定的收件人

我们还没有这样做,但出于同样的原因,我们将会这样做.如果您不熟悉配置MTA,可能会有点过头了.你有一个系统管理员可以执行此任务吗?

在代码级别,我会这样做:

>用户A(id = 1234)向用户B发送电子邮件(id = 5678)
>从您拥有的任何地址发送电子邮件,但将回复:设置为回复:< mail-1234-5678-abcdefabcd1234567890abcdefabcdef@usermessages.your-domain.comu0026gt; 这绝对是这项工作的关键.它包括发件人的ID,收件人的ID以及防止伪造的校验和.校验和可以从每个用户独有的盐生成,简单地说: checksum = Digest :: MD5.hexdigest(“#{sender.id} – #{recipient.id} – #{sender.mailer_salt}”)
>现在,当您通过已为“usermessages.your-domain.com”域配置的MX收到回复时,您要做的第一件事就是通过解析收件人:字段来识别发件人和收件人.您可以通过拆分部件轻松识别发件人和收件人.然后,您可以生成校验和并确保它匹配,以确保某人不会像其他用户那样恶意发送邮件.
>一旦你找到了所涉及的用户,继续发送另一封电子邮件,其中一个特殊的回复:标题(ID反转,使用不同的盐完成摘要).

这是一个非常基本但功能完善的例子.您可以将此摘要放在任何您想要的位置,前提是它会在回复时保留(这使得Reply-To:标题非常合适.有些服务使用主题行代替.

我会避免使用某些用户控制的盐,例如用户的密码哈希值,因为如果用户更改了该信息(更改了密码),则校验和将不再验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读