PHP 邮件(使用 Postfix)发送到 Gmail,标记为垃圾邮件

PHP 邮件(使用 Postfix)发送到 Gmail,标记为垃圾邮件

我对“电子邮件系统”及其概念完全陌生。我只是使用简单的电子邮件通过 PHP 发送代码,例如:

mail("[email protected]","my header","my body");

我知道这正在发生,postfix因为当我停止时postfix

service postfix stop

那么电子邮件就不会出去了。然后当我再次启动它时:

service postfix start

然后电子邮件就会出去。(正如我提到的,我对电子邮件系统一无所知,但这证实了我正在使用postfix。)

那么问题来了:

  • 为什么这些电子邮件会进入 Gmail 的垃圾邮件箱?
  • 我需要做什么?

请告诉我我需要做的任何(每件事)事情,以便从我的服务器正确发送电子邮件。

ps,我的服务器是一个CentOS 6.4盒子数字海洋,具有公共IP。

答案1

您的 IP 很可能被列入垃圾邮件黑名单,一些服务提供商因将其子网列入黑名单而臭名昭著。要解决此问题,您需要请求将您关注的任何 IP 范围从他们可能在的任何黑名单中删除,他们会在进行一些验证后这样做。此外,您需要使用不同的技术(如域名密钥识别邮件 (DKIM)、SPF 和发件人 ID)对您的电子邮件进行身份验证。这是一份全职工作。

对我有用的解决方案是将 Postfix 设置为代理。基本上,您使 Postfix 充当通过信誉良好的中继服务发送电子邮件的客户端,就我而言是 Gmail。您需要将以下内容添加到 Postfix 配置文件 main.cf 中:

smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent_relayhosts
relayhost = [smtp.gmail.com]:587
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

您还需要创建映射文件并对它们进行哈希处理:

/etc/postfix/sasl_passwd:

# per-sender authentication
account1[@]gmail.com account1[@]gmail.com:passwd1
account2[@]gmail.com account2[@]gmail.com:passwd2
# default relayhost
[smtp.gmail.com]:587 default_account[@]gmail.com:default_passwd

/etc/postfix/sender_dependent_relayhosts:

account1[@]gmail.com [smtp.gmail.com]:587
account2[@]gmail.com [smtp.gmail.com]:587

散列地图文件:

postmap sasl_passwd sender_relay

信誉良好的中继服务可确保您的电子邮件不会被归类为垃圾邮件。祝你好运!

相关内容