我如何修复' 530-5.5.1需要验证'尝试从localhost发送电子邮件时出错?

时间:2015-08-16 02:55:49

标签: php email smtp

我一直在尝试从我的localhost上运行的以下PHP脚本发送电子邮件,并将G-mail作为我的SMTP中继主机。

<?php
// The message
$message = "Line 1\r\nLine 2\r\nLine 3";

$message = wordwrap($message, 70, "\r\n");

$headers = 'From: <my-email>@gmail.com' . "\r\n" .
    'Reply-To: <my-email>@gmail.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

// Send Mail
if (true==mail('<other email>@gmail.com', 'My Subject', $message, $headers, '-f<other email>@gmail.com'))
{
    echo "E-mail successfully sent.";
}
else
{
    echo "E-mail failed.";
}
?>

虽然邮件功能返回&#39; TRUE&#39;但实际上没有发送电子邮件,并且当我查看邮件日志时,我不断收到以下错误:

此外,在查看mail.log文件时,记录了以下错误:

Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: maps_find: smtp_sasl_passwd: smtp.gmail.com: not found
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: maps_find: smtp_sasl_passwd: smtp.gmail.com:587: not found
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: smtp_sasl_passwd_lookup: no auth info found (sender=`rrodriguez6@unknownf81edfd84850.att.net', host=`smtp.gmail.com')
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: > smtp.gmail.com[173.194.219.108]:587: MAIL FROM:<rrodriguez6@unknownf81edfd84850.att.net> SIZE=389
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: > smtp.gmail.com[173.194.219.108]:587: RCPT TO:<rlrodriguez.rivera@gmail.com>
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: > smtp.gmail.com[173.194.219.108]:587: DATA
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: vstream_fflush_some: fd 15 flush 108
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: vstream_buf_get_ready: fd 15 got 133
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: < smtp.gmail.com[173.194.219.108]:587: 530-5.5.1 Authentication Required. Learn more at
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: < smtp.gmail.com[173.194.219.108]:587: 530 5.5.1  https://support.google.com/mail/answer/14257 j2sm2579221ywj.12 - gsmtp
Aug 17 22:00:03 unknownf81edfd84850 postfix/smtp[1714]: connect to subsystem private/bounce

postfix是否有可能无法读取我的sasl_passwd.db文件?

感谢您的帮助!

-Ramon

以下是我的sasl_passwd文件的内容:

smtp.gmail.com:587 <my gmail account>:�<my gmail password>

另外,我在main.cf文件中有以下设置:

#Gmail SMTP
relayhost = smtp.gmail.com:587
# Enable SASL authentication in the Postfix SMTP client.
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=
# Enable Transport Layer Security (TLS), i.e. SSL.
smtp_use_tls=yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom
smtp_tls_CAfile = /etc/postfix/ssl/cacert.pem
debug_peer_list=smtp.gmail.com
debug_peer_level=3

我注意到的一件事是,当我运行postmap创建sasl_passwd.db文件时,我收到以下警告:

postmap: warning: sasl_passwd, line 0: expected format: key whitespace value

我确信我在这里忽略了一些非常简单的事情,但我一直试图让这个邮件功能在最近几天工作。

先谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

事实证明,我需要配置我的Google Apps帐户,以便他们允许SMTP中继。一旦我这样做,我就可以开始使用PHPMailer和PHP中的常规邮件功能发送电子邮件。