Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Linux服务器发送邮件时出现的问题_Php_Linux_Dns_Smtp - Fatal编程技术网

Php 从Linux服务器发送邮件时出现的问题

Php 从Linux服务器发送邮件时出现的问题,php,linux,dns,smtp,Php,Linux,Dns,Smtp,我现在运行的是Ubuntu 14.04.1。我创建了一个简单的php脚本,使用mail()发送测试电子邮件,然后从Firefox访问该脚本。我有一个VPS服务器,只有一个IP,没有域。每当我尝试发送电子邮件时,我都会收到来自谷歌DNS阻止我的错误。我已经包括了一些文件的结果,我相信这是需要的信息 我使用的mail()是mail(“myemail@gmail.com“,”测试“,”测试“)。我尝试添加标题信息和更详细的主题和主体信息,但没有帮助 /var/log/mail.log Dec 28 2

我现在运行的是Ubuntu 14.04.1。我创建了一个简单的php脚本,使用mail()发送测试电子邮件,然后从Firefox访问该脚本。我有一个VPS服务器,只有一个IP,没有域。每当我尝试发送电子邮件时,我都会收到来自谷歌DNS阻止我的错误。我已经包括了一些文件的结果,我相信这是需要的信息

我使用的mail()是
mail(“myemail@gmail.com“,”测试“,”测试“)。我尝试添加标题信息和更详细的主题和主体信息,但没有帮助

/var/log/mail.log

Dec 28 22:53:04 localhost sendmail[15365]: sBT3r4qG015365: from=www-data, size=83, class=0, nrcpts=1, msgid=<201412290353.sBT3r4qG015365@localhost.localdomain>, relay=www-data@localhost
Dec 28 22:53:05 localhost sm-mta[15366]: sBT3r4F1015366: from=<www-data@localhost.localdomain>, size=370, class=0, nrcpts=1, msgid=<201412290353.sBT3r4qG015365@localhost.localdomain>, proto=ESMTP, daemon=MTA-v4, relay=localhost.localdomain [127.0.0.1]
Dec 28 22:53:05 localhost sendmail[15365]: sBT3r4qG015365: to=myemail@gmail.com, ctladdr=www-data (33/33), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30083, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (sBT3r4F1015366 Message accepted for delivery)
Dec 28 22:53:05 localhost sm-mta[15368]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES128-GCM-SHA256, bits=128/128
Dec 28 22:53:06 localhost sm-mta[15368]: sBT3r4F1015366: to=<myemail@gmail.com>, ctladdr=<www-data@localhost.localdomain> (33/33), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=120370, relay=gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:400e:c04::1b], dsn=5.0.0, stat=Service unavailable
Dec 28 22:53:06 localhost sm-mta[15368]: sBT3r4F1015366: sBT3r6F1015368: DSN: Service unavailable
Dec 28 22:53:06 localhost sm-mta[15368]: sBT3r6F1015368: to=<www-data@localhost.localdomain>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30000, dsn=2.0.0, stat=Sent
(email above has been changed to myemail@gmail.com)
/etc/hosts

ff02::1     ip6-allnodes
ff02::2     ip6-allrouters

127.0.0.1 localhost.localdomain localhost servername
# Auto-generated hostname. Please do not remove this comment.
x.x.x.x servername
::1     localhost ip6-localhost ip6-loopback
127.0.0.2 servername
(servername and ip above have been changed to x.x.x.x and servername)
/var/spool/mail/www-data

我在尝试发送一封电子邮件后收到了大约70行,所以我将包括我认为最重要的内容。我会犯永久性的致命错误

 550-5.7.1 
 Our system has detected that this
 message is likely unsolicited mail. To reduce the amount of spam sent
 to Gmail, this message has been blocked.
我所尝试的:

我曾经访问过php脚本,页面停止加载需要30秒,我会在
/var/log/mail.log
中收到以下错误:

 Dec 29 00:35:55 localhost sendmail[15632]: My unqualified host name (servername) unknown; sleeping for retry
 Dec 29 00:36:55 localhost sendmail[15632]: unable to qualify my own domain name (servername) -- using short name
为了解决这个问题,我将
/etc/hosts
中的
127.0.0.1
行更改为现在的行。将该行更改为现在的任何较短版本都会导致收到上面的错误消息,并且php脚本将永远无法加载

我还经常在发送邮件时收到其他一些错误消息。我查找了这个问题,为了解决它,我在底部添加了
127.0.0.2
行。我似乎无法通过删除该行来复制错误消息,因此该行可能不再起作用

我试着查看
/var/log/mail.log
中的
DSN:Service unavailable
,但我发现的只是更改了
/etc/hosts
/etc/hostname
的内容,这没有帮助

我读过很多关于SPF记录的文章。这似乎是一个促成问题。问题是每篇文章都提到一些关于将域链接到IP的内容。我没有域名,所以我不确定这是否真的重要。他们还谈到编辑
/var/named/data/
,但是
/var/named
对我来说并不存在。我可以确认,如果我在我的windows计算机上尝试
nslookup
我的IP地址,我会得到错误
不存在的域
。这也可能与
/var/spool/mail/www-data
中的错误有关

我已经调查过我的IP是否被列入黑名单,但似乎没有。我最近收到了IP,它不是一个共享的IP,所以我不认为这是一个问题。具有讽刺意味的是,在试图接收电子邮件时,我确实在垃圾邮件文件夹中收到了两封邮件。我甚至不再收到垃圾邮件了。以下是其中一封电子邮件:

Delivered-To: myemail@gmail.com
Received: by 10.112.202.37 with SMTP id kf5csp1654885lbc;
    Tue, 23 Dec 2014 20:55:39 -0800 (PST)
X-Received: by 10.68.200.68 with SMTP id jq4mr50110283pbc.30.1419396938944;
    Tue, 23 Dec 2014 20:55:38 -0800 (PST)
Return-Path: <www-data@servername>
Received: from servername ([x.x.x.x])
    by mx.google.com with ESMTPS id td7si16741093pab.130.2014.12.23.20.55.38
    for <myemail@gmail.com>
    (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Tue, 23 Dec 2014 20:55:38 -0800 (PST)
Received-SPF: temperror (google.com: error in processing during lookup of www-data@servername: DNS timeout) client-ip=x.x.x.x;
Authentication-Results: mx.google.com;
   spf=temperror (google.com: error in processing during lookup of www-data@servername:     DNS timeout) smtp.mail=www-data@servername
Received: from servername (localhost.localdomain [127.0.0.1])
by brauer (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id sBO4sYfV000877
for <myemail@gmail.com>; Tue, 23 Dec 2014 23:54:34 -0500
Received: (from www-data@localhost)
by servername (8.14.4/8.14.4/Submit) id sBO4sYgK000874;
Tue, 23 Dec 2014 23:54:34 -0500
Date: Tue, 23 Dec 2014 23:54:34 -0500
From: www-data <www-data@servername>
Message-Id: <201412240454.sBO4sYgK000874@servername>
To: myemail@gmail.com
Subject: test
X-PHP-Originating-Script: 0:file.php


test
交付给:myemail@gmail.com
收到日期:10.112.202.37,SMTP id为KF5CS1654885LBC;
2014年12月23日星期二20:55:39-0800(太平洋标准时间)
X-Received:10.68.200.68,SMTP id为jq4mr50110283pbc.30.1419396938944;
2014年12月23日星期二20:55:38-0800(太平洋标准时间)
返回路径:
已接收:来自服务器名([x.x.x.x])
由mx.google.com提供,ESMTPS id为td7si16741093pab.130.2014.12.23.20.55.38
对于
(版本=TLSv1.2密码=ECDHE-RSA-AES128-GCM-SHA256位=128/128);
2014年12月23日星期二20:55:38-0800(太平洋标准时间)
收到SPF:temperror(google.com:查找www时处理错误-data@servername:DNS超时)客户端ip=x.x.x.x;
认证结果:mx.google.com;
spf=temperror(google.com:查找www时处理错误)-data@servername:DNS超时)smtp.mail=www-data@servername
接收:来自服务器名(localhost.localdomain[127.0.0.1])
由brauer(8.14.4/8.14.4/Debian-4.1ubuntu1)提供,ESMTP id为sBO4sYfV000877
对于2014年12月23日星期二23:54:34-0500
收到:(来自www-data@localhost)
按服务器名(8.14.4/8.14.4/提交)id sBO4sYgK000874;
2014年12月23日星期二23:54:34-0500
日期:2014年12月23日星期二23:54:34-0500
发件人:www.data
消息Id:
致:myemail@gmail.com
主题:测试
X-PHP-origing-Script:0:file.PHP
测试

对不起,如果我包括太多的信息。我只是不确定什么是相关的。任何帮助都将不胜感激。谢谢

如果没有SPF和/或DKIM,更不用说没有域名,我认为你将无法成功地将邮件发送到Gmail。为什么不直接设置一个域,或者使用一个单独的SMTP服务器来发送邮件呢?(例如,)。或者使用Mandrill、Amazon SES、SendGrid等

Delivered-To: myemail@gmail.com
Received: by 10.112.202.37 with SMTP id kf5csp1654885lbc;
    Tue, 23 Dec 2014 20:55:39 -0800 (PST)
X-Received: by 10.68.200.68 with SMTP id jq4mr50110283pbc.30.1419396938944;
    Tue, 23 Dec 2014 20:55:38 -0800 (PST)
Return-Path: <www-data@servername>
Received: from servername ([x.x.x.x])
    by mx.google.com with ESMTPS id td7si16741093pab.130.2014.12.23.20.55.38
    for <myemail@gmail.com>
    (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Tue, 23 Dec 2014 20:55:38 -0800 (PST)
Received-SPF: temperror (google.com: error in processing during lookup of www-data@servername: DNS timeout) client-ip=x.x.x.x;
Authentication-Results: mx.google.com;
   spf=temperror (google.com: error in processing during lookup of www-data@servername:     DNS timeout) smtp.mail=www-data@servername
Received: from servername (localhost.localdomain [127.0.0.1])
by brauer (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id sBO4sYfV000877
for <myemail@gmail.com>; Tue, 23 Dec 2014 23:54:34 -0500
Received: (from www-data@localhost)
by servername (8.14.4/8.14.4/Submit) id sBO4sYgK000874;
Tue, 23 Dec 2014 23:54:34 -0500
Date: Tue, 23 Dec 2014 23:54:34 -0500
From: www-data <www-data@servername>
Message-Id: <201412240454.sBO4sYgK000874@servername>
To: myemail@gmail.com
Subject: test
X-PHP-Originating-Script: 0:file.php


test