Php 使用Debian更改VPS上的发件人电子邮件

Php 使用Debian更改VPS上的发件人电子邮件,php,email,phpmailer,spf,Php,Email,Phpmailer,Spf,我分别通过PHP和PHPmailer发送一个联系人表单响应。它是从安装了Debian、ISPConfig和Apache的VPS发送的。电子邮件发送正常,Gmail接收没有问题。但是,当我打开原始邮件代码时,有一封错误的发件人电子邮件: Return-Path: <web1@server1.example.com> 这当然会导致其他一些web邮件提供商无法接收此电子邮件 我已经查看了php.ini和其他一些配置,但找不到在哪里设置 是否可以通过PHPmailer最佳选项更改此选项?或

我分别通过PHP和PHPmailer发送一个联系人表单响应。它是从安装了Debian、ISPConfig和Apache的VPS发送的。电子邮件发送正常,Gmail接收没有问题。但是,当我打开原始邮件代码时,有一封错误的发件人电子邮件:

Return-Path: <web1@server1.example.com>
这当然会导致其他一些web邮件提供商无法接收此电子邮件

我已经查看了php.ini和其他一些配置,但找不到在哪里设置

是否可以通过PHPmailer最佳选项更改此选项?或者至少以某种PHP方式

或者我必须将其设置在服务器选项端的某个位置—如果是,则设置在何处

编辑:
我已通过$mail->Sender=MY@SENDER.ADDRESS; 但它仍然没有指定

EDIT2-部分解决方案:
前面的编辑解决了电子邮件提供商无法接收电子邮件的问题-现在没有问题了,但是我仍然希望解决如何正确设置SPF的问题,以便解决指定问题。

web1@server1看起来像是默认用户的ISP配置

尝试:

$headers.=返回路径:name@example.com\r\n

在你的php中。。。邮件地址周围需要有大小符号。。。但我不能让他们在这里展示


最好是查看ISP配置手册。。。我肯定你不是第一个使用这个面板并且有这个问题的人。不建议更改或添加到php.ini,因为这会更改所有用户的php.ini。

您必须将SPF记录添加到server1.example.com域的DNS区域

类似于v=spf1 a mx a:server1.example.com~all

Microsoft提供了一个帮助构建SPF记录的工具


恐怕PHP在这里帮不了你。

。。。不指定允许的发送方主机

请注意,这不是一个错误。这只是事实的陈述,对你的交付能力几乎没有影响。SPF记录的存在可以改善您的交付能力,但不存在不会使其变得更糟

无法从PHPMailer更改SPF。它必须进入你的DNS服务器

要检查DNS中的内容,请安装dnsutils包,该包应包含dig实用程序。然后,您可以按如下方式查找DNS记录:

dig txt google.com

; <<>> DiG 9.9.5-3-Ubuntu <<>> txt google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58518
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.                    IN      TXT

;; ANSWER SECTION:
google.com.             3427    IN      TXT     "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"

;; AUTHORITY SECTION:
google.com.             154413  IN      NS      ns2.google.com.
google.com.             154413  IN      NS      ns4.google.com.
google.com.             154413  IN      NS      ns3.google.com.
google.com.             154413  IN      NS      ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         154332  IN      A       216.239.32.10
ns2.google.com.         154332  IN      A       216.239.34.10
ns3.google.com.         154332  IN      A       216.239.36.10
ns4.google.com.         154332  IN      A       216.239.38.10

;; Query time: 19 msec
;; SERVER: 217.70.184.225#53(217.70.184.225)
;; WHEN: Thu Nov 20 14:52:33 CET 2014
;; MSG SIZE  rcvd: 263

在那里,你可以看到google.com的TXT记录,这给了你的SPF,这实际上是稍微次优的,因为ip4条款应该在include之前出现。

缺少SPF记录本身很少是阻止或过滤电子邮件的充分理由。@tripleee你绝对是对的-请,我将把SPF记录放在哪里?你有其他DNS记录的地方。我将把这些添加到哪里?我是一个linux用户,但不幸的是,Microsoft向导非常无用,结果很差。手动创建自己的域名并不是那么难。你在哪里托管你的域名。您可能有CPanel、Plesk或其他允许您编辑DNS区域的控制面板。我已通过$mail->Sender=MY@SENDER.ADDRESS; 但是它仍然没有指定,所以我想我必须在服务器->主机上设置一些东西。在发送电子邮件时,你不应该设置返回路径头-它们是由收件人添加的,而不是发件人。设置发件人是正确的方法。那么你是说转到我的域的DNS设置,并用我的服务器的IP设置正确的SPF?
dig txt google.com

; <<>> DiG 9.9.5-3-Ubuntu <<>> txt google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58518
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.                    IN      TXT

;; ANSWER SECTION:
google.com.             3427    IN      TXT     "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"

;; AUTHORITY SECTION:
google.com.             154413  IN      NS      ns2.google.com.
google.com.             154413  IN      NS      ns4.google.com.
google.com.             154413  IN      NS      ns3.google.com.
google.com.             154413  IN      NS      ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         154332  IN      A       216.239.32.10
ns2.google.com.         154332  IN      A       216.239.34.10
ns3.google.com.         154332  IN      A       216.239.36.10
ns4.google.com.         154332  IN      A       216.239.38.10

;; Query time: 19 msec
;; SERVER: 217.70.184.225#53(217.70.184.225)
;; WHEN: Thu Nov 20 14:52:33 CET 2014
;; MSG SIZE  rcvd: 263