我在本地服务器上安装了 Postfix(Ubuntu 16.04 通过 Virtualbox 运行),但似乎无法向 gmail 发送电子邮件。它可以与其他邮箱一起使用,但不能与 gmail 一起使用。
这是我的简单 PHP 脚本:
$headers ='From: "nom"<[email protected]>'."\n";
$headers .='Reply-To: [email protected]'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$address = '[email protected]';
$test_mail = mail($address, 'My subject', 'My message', $headers);
if($test_mail == true)
{
echo 'Email sent';
}
else
{
echo 'Cannot send the email';
}
我注意到/var/mail/web
文件中有错误消息:
Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.7.1
Remote-MTA: dns; gmail-smtp-in.l.google.com
Diagnostic-Code: smtp; 550-5.7.1 [2a01:e35:2430:e090:a00:27ff:fe23:1da]
Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information
550 5.7.1 . ay9si74475139wjc.120 - gsmtp
所以我修改了文件中的以下行main.cf
:
inet_protocols = ipv4
现在文件中不再有错误消息/var/mail/web
,但我仍然无法在我的 Gmail 邮箱中收到电子邮件。
答案1
你评论了吗https://support.google.com/mail/?p=IPv6AuthError就像 SMTP 响应建议的那样?
总结:GMail 需要电子邮件标头和 DNS 记录中的某些条目来验证发件人的合法性,以避免垃圾邮件。这适用于 IPv4 和 IPv6 发件人,但具体要求可能有所不同。
如何将这些条目放到位太过宽泛,并且与 Ubuntu 基本无关,因此偏离了 AskUbuntu 的主题。请参阅我们的姊妹网站服务器故障对于这样的问题。