如何在不做任何更改的情况下转发电子邮件 body
How to forward email body without any change
需要转发原始电子邮件而不做任何更改
正在编写电子邮件转发脚本并在保持 DKIM 不变的情况下实施 SRS(针对 DMARC)。
我有 Laravel 应用程序通过管道传输到 postfix,目前正在使用 phpemailmimeparser 和 mailable。
问题是当我从 phpemailmimeparser 获取电子邮件 body 并将其放入 swift_mailer 以便比 queue 可邮寄时 dkim 签名中断。
遇到的问题如下:
- 边界值变化(我可以从swift_mailer中的header和re-apply得到)
- 它在边界前后添加了一条额外的线。
- HTML 键入 body 消息后的附加行
但问题似乎要大得多,因为有些有效的电子邮件只能包含文本,html或者甚至可以没有边界值。
attachments/embedded 也会出现类似的问题。
包括额外换行符在内的任何微小更改都会导致 dkim body 哈希失败。
我可以得到 headers 来匹配,但是在重建电子邮件时似乎不可能每次都进行 body 哈希匹配。
在这一点上,我觉得我应该以某种方式将完整的原始电子邮件本身传递到转发地址。我可以通过后缀管道访问完整的原始电子邮件,但不确定如何转发原始电子邮件。
我只想将信封/return 路径更改为 SRS 值,并保持电子邮件的其余部分不变。
在这一点上,我愿意使用任何 php-based 库或解决方案,它可以让我修改信封并 queue 将其返回到后缀以转发。
更新
到目前为止,我唯一能让它工作的方法是通过 fsockopen+telnet+smtp 并传递完整的原始文件。
希望,有人可以建议我一个更好的解决方案,因为大量的套接字连接可能有其自身的问题。
尝试使用 php 邮件,但无法屏蔽转发所需的字段。
我会设置自己的 DKIM 设置并仅使用正常转发,然后 DKIM 密钥来自您自己的服务器,应该提供信誉。
Dkim 是为了防止服务器欺骗,所以你不能从另一个服务器发送电子邮件,除非配置了密钥..
恕我直言,除了在套接字上传递原始文件外,没有其他解决方案。
终于使用了 PHPmailer。
修改它以通过 smtp 协议将原始文本作为 body 和 header 传递。
在后台它使用套接字客户端和 fsock,但至少我有一个干净的包装器来处理我的代码。
DKIM 有时仍然会失败,但这与各处的编码问题有关。
需要转发原始电子邮件而不做任何更改
正在编写电子邮件转发脚本并在保持 DKIM 不变的情况下实施 SRS(针对 DMARC)。
我有 Laravel 应用程序通过管道传输到 postfix,目前正在使用 phpemailmimeparser 和 mailable。
问题是当我从 phpemailmimeparser 获取电子邮件 body 并将其放入 swift_mailer 以便比 queue 可邮寄时 dkim 签名中断。
遇到的问题如下:
- 边界值变化(我可以从swift_mailer中的header和re-apply得到)
- 它在边界前后添加了一条额外的线。
- HTML 键入 body 消息后的附加行
但问题似乎要大得多,因为有些有效的电子邮件只能包含文本,html或者甚至可以没有边界值。
attachments/embedded 也会出现类似的问题。
包括额外换行符在内的任何微小更改都会导致 dkim body 哈希失败。
我可以得到 headers 来匹配,但是在重建电子邮件时似乎不可能每次都进行 body 哈希匹配。
在这一点上,我觉得我应该以某种方式将完整的原始电子邮件本身传递到转发地址。我可以通过后缀管道访问完整的原始电子邮件,但不确定如何转发原始电子邮件。
我只想将信封/return 路径更改为 SRS 值,并保持电子邮件的其余部分不变。
在这一点上,我愿意使用任何 php-based 库或解决方案,它可以让我修改信封并 queue 将其返回到后缀以转发。
更新
到目前为止,我唯一能让它工作的方法是通过 fsockopen+telnet+smtp 并传递完整的原始文件。
希望,有人可以建议我一个更好的解决方案,因为大量的套接字连接可能有其自身的问题。
尝试使用 php 邮件,但无法屏蔽转发所需的字段。
我会设置自己的 DKIM 设置并仅使用正常转发,然后 DKIM 密钥来自您自己的服务器,应该提供信誉。
Dkim 是为了防止服务器欺骗,所以你不能从另一个服务器发送电子邮件,除非配置了密钥..
恕我直言,除了在套接字上传递原始文件外,没有其他解决方案。
终于使用了 PHPmailer。 修改它以通过 smtp 协议将原始文本作为 body 和 header 传递。
在后台它使用套接字客户端和 fsock,但至少我有一个干净的包装器来处理我的代码。
DKIM 有时仍然会失败,但这与各处的编码问题有关。