我正在尝试发送密码重置链接,以便用户忘记密码登录我正在创建的系统。问题是,smtp服务器应该不在我的系统托管的服务器上配置。因此,每当我尝试使用php mail()函数向内部电子邮件地址发送电子邮件时,电子邮件无法发送,但在电子邮件地址之外(使用gmail帐户测试),电子邮件将通过。我相信这是因为我的服务器直接发送到互联网而不是通过内部smtp服务器来解决应该发送我们的域电子邮件的位置。我想知道是否有人知道如何在Xserve上配置它,或者他们是否知道如何具体告诉php mail()函数最初发送电子邮件的位置。任何帮助或指向正确的方向将是非常有帮助的。
谢谢!
答案 0 :(得分:1)
您可以使用it's settings控制mail()
。
这可能无法解决您的整体问题,但希望它有用。这related answer has more information。
答案 1 :(得分:1)
mail()不发送邮件,只是将事情交给本地SMTP服务器。它不会联系收件人的服务器来传递邮件。在现实世界中,mail()会将您的信件沿着街道行走并将其放入邻居邮箱中。在那之后,它绝对与邮件传递无关。
检查本地SMTP服务器的日志,了解本地邮件未送达的原因。应该有一两行说明为什么要注册。也许本地MTA(邮件传输代理,又称本地“邮件人”)配置不正确。
答案 2 :(得分:0)
我们刚才在内部解决了这个问题。希望这对你也有帮助。
我们的环境:
我们可以telnet到我们的SMTP服务器并从我们的Web服务器发送邮件,因此它不是权限问题。尝试外部邮件时,一切都很完美。在尝试内部邮件时,无声失败。
我们的PHP使用的是sendmail,默认情况下会尝试将邮件中继到127.0.0.1。通过编辑/etc/mail/sendmail.cf将其指向SMTP服务器。更新以下行:
# "Smart" relay host (may be null)
DS
到
# "Smart" relay host (may be null)
DSyour.smtp.server.com
重启sendmail并尝试通过PHP发送电子邮件。
答案 3 :(得分:0)
Parellels的PLESK服务器管理软件就是这种情况。
找到PostFix的'main.cf'配置文件,适用于CentOS 6,位于
/etc/postfix/main.cf
如果找不到,请执行
which postfix
SSH命令至少可以查看服务器上Postfix的位置。
然后,通过文本编辑器或Linux shell打开文件,并创建这些行(应该在文件的末尾,在677行左右):
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox
这样评论:
#virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
#virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
#virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox
然后,重新启动Postfix服务
sudo service postfix restart
Apache在你的时候(不能伤害),瞧!您的电子邮件地址应该立即收到这些电子邮件。这也不会影响您的任何常规电子邮件或其他任何内容。