我对“电子邮件系统”及其概念完全陌生。我只是使用简单的电子邮件通过 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
信誉良好的中继服务可确保您的电子邮件不会被归类为垃圾邮件。祝你好运!