使用 PHP、LAMPP 和 PostFix 发送邮件

Qua*_*unk 9 lamp php postfix

我已经尝试了整整 2 天,但我无法让最简单的事情发挥作用。

问题:从 PHP 向我的电子邮件地址发送电子邮件不起作用

我之前一直在使用WindowsSendmail(Sendmail 在 XAMPP 包中),一切正常。用于 Linux 的 XAMPP 包 (1.7.7) 没有集成 Sendmail。因此,在谷歌搜索后,我发现Postfix更适合 LAMPP 环境。


到目前为止我尝试过的:

我已经安装了Postfix并希望将其配置为仅使用我的私人电子邮件提供商的 smtp 服务器(就像在 Windows 上所做的那样)。所以我像这样配置了我的php.ini

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On
Run Code Online (Sandbox Code Playgroud)

请注意,我已经注释掉了“仅限 Win32”的内容。在/etc/postfix/main.cf文件看起来像这样:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
Run Code Online (Sandbox Code Playgroud)

/etc/aliases不变:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/sasl_password

my.providers.smtp my_login:my_password
Run Code Online (Sandbox Code Playgroud)

/etc/postfic/sender_canonical:

postmaster my.email@ddress.com
Run Code Online (Sandbox Code Playgroud)

发生什么了:

所以当我做

> sudo /etc/init.d/postfix start
Run Code Online (Sandbox Code Playgroud)

一切似乎都正常,/var/log/ mail.log说:“ubuntu postfix/master[9720]:守护进程已启动——2.8.5 版,配置 /etc/postfix”

但是当我运行我的 PHP 脚本(它在 Windows 和 Sendmail 中运行良好)时,它只是运行了,没有任何反应,甚至没有记录错误。


我真正想要实现的目标:

我在本地的电子商务网站上工作。它在专用网络服务器上运行良好,但出于明显的原因,我也希望它在本地运行。在某些情况下,它会发送电子邮件,而我只是希望能够通过 Thunderbird 或任何其他方式接收它们。在这里使用Postfix是不是有点矫枉过正?我不需要接收电子邮件 - 我只是想让发送的邮件以某种方式可见。我似乎找不到针对此问题的任何有用的分步教程(既不涉及 Senmail 也不涉及 Postfix - 但说实话,我对 Linux 非常陌生)。

Cae*_*ium 13

在你的 php.ini 中,这个:

sendmail_path = /etc/postfix
Run Code Online (Sandbox Code Playgroud)

应该是 sendmail(或兼容)二进制文件的路径。
你把它设置到 postfix 的配置目录是不对的。

由于历史原因,通常/usr/bin/sendmail是作为一个兼容性链接来维护的。
sendmail首先是(我猜)并且几乎所有内容都假设它在已安装的 MTA 中。因此,当它不是时,替换会创建一个符号链接,以便不会中断。