我有一个 Ubuntu Server 12.04 来运行我的 Webapp。我假设我的 Webapp 是用 PHP5 编写的,运行时环境是 LAMP,域名是mywebapp.com
。当访问者在 mywebapp.com 上注册账户时,网站会自动发送一封确认电子邮件。但我的系统无法将邮件发送到用户的收件箱。
我不认为 mywebapp.com 的代码有错误,因为它使用内置函数mail()
并且在 hostgator.com 和 Hostpapa.com 上运行良好。我尝试sendmail
使用命令进行安装sudo apt-get install sendmail
。但没有任何变化。
您能帮助我配置这个系统,以便 mywebapp.com 可以自动向用户发送邮件,而无需使用第三方电子邮件服务(如 Gmail 或 Hotmail),只需使用该mail()
功能即可;问题的各个方面,关于:
- 配置 DNS 记录
- Ubuntu Server 12.04 上需要安装哪些应用程序/软件包
- 配置路由器:打开端口、NAT、……
- 配置 Apache、PHP.ini 或其他
答案1
我的建议是删除 sendmail(它不是一个好的也不轻的 MTA)并用 postfix 替换它,当您使用 ubuntu 的常规软件安装过程(apt cli 或 Ubuntu 软件中心)安装 postfix 时,它会询问您要安装哪种邮件服务器,正确答案取决于机器是完整服务器还是仅仅是开发/暂存环境。
如果它是普通服务器,请使用“互联网站点”,如果它是开发环境,请使用“带有智能主机的互联网”,并指定向您的互联网提供商或网络管理员询问您的 smtp 服务器详细信息。
如果你需要更改 postfix 的配置,大部分操作都可以在 中进行/etc/postfix/main.cf
,但是因为你不希望你的服务器成为开放中继,所以在应用任何配置更改后,请使用http://www.checkor.com/来测试它是否不是。
给定默认的 php.ini 设置,您应该能够通过 mail() php 函数发送电子邮件。
答案2
您不仅应该安装 sendmail,还应该配置它或其他 MTA。如果您有用于发送邮件的中继,则应该配置 MTA 以使用它。如果您没有中继,您还应该设置一些 DNS 记录以防止您的邮件被当作垃圾邮件丢弃。