使用cloudflare时的php邮件和SMTP

NVG*_*NVG 5 php security email smtp cloudflare

我在我的网站上使用cloudflare,我想保持我的服务器的IP(ORIGIN IP)私有,以避免DDoS攻击被直接发送到我的服务器的IP.我的服务器使用Apache,PHP,MySQL.

当使用php邮件发送电子邮件时(即使我使用phpmailer库通过外部SMTP发送电子邮件),我的服务器的IP也被添加到邮件头中.它发生在谷歌SMTP,Mailgun和其他人身上,因为他们的政策可能就是在邮件来源的IP中写入标题.

目前,我想到的唯一解决方案需要付出很多努力,即创建自己的REST API并通过其他服务器发送电子邮件,如下所示:

ORIGIN SERVER IP通过我的REST API以文本格式将电子邮件数据发送到MY MAIL SERVER IP,然后MY MAIL SERVER IP使用带有phpmailer的php邮件功能通过SMTP将电子邮件发送给用户.这样,MY MAIL SERVER的IP将出现在电子邮件标题中,而不是ORIGIN SERVER的IP中.

有没有更优雅的方式来做到这一点?是否有提供rest API的邮件服务,如果我使用他们的API,他们将不会在电子邮件标题中显示我的服务器的IP?或者可能有一个已经开发的REST API /库用于按照我的要求远程发送电子邮件,所以我不必从头开始开发和测试我自己的?

mag*_*tik 7

您应该通过他们的API而不是SMTP协议通过mailgun(或sendgrid,或jetmail,或SES,或......)发送电子邮件,您的IP将不会被披露.

例如,对于Mailgun SDK:https://github.com/mailgun/mailgun-php

$mg = Mailgun::create('key-example');

# Now, compose and send your message.
# $mg->messages()->send($domain, $params);
$mg->messages()->send('example.com', [
  'from'    => 'bob@example.com',
  'to'      => 'sally@example.com',
  'subject' => 'The PHP SDK is awesome!',
  'text'    => 'It is so simple to send a message.'
]);
Run Code Online (Sandbox Code Playgroud)

但是大多数提供商都有SDK:

此外,我建议使用SwiftMailer这是一个功能强大的库来处理电子邮件.其中一个很酷的事情是它抽象了传输,你可以使用包从SMTP或任何提供者API切换.

  • 只是为了确认我使用来自composer的Mailgun API,并且标题中没有服务器信息. (2认同)