技术&教程 < 首页
17 Jul

CentOS下安装postfix邮件系统让php程序可以自动发送邮件如验证邮件

By: Soil 0 COMMENTS

很多PHP程序如Discuz、ECSHOP之类的支持自动发邮件,都支持两种发送模式一种是以smtp模式,需要填写完整smtp服务器啦、账号啦、密码啦什么的,非常麻烦,而且短时间内大量发送还会被服务商冻结账号。另一种模式是使用服务器内置mail函数。但刚配置好的CentOS服务器一般不带邮件系统,要么就是默认的sendmail,但sendmail问题大家都知道,比较麻烦,相对而言,postfix却是相当的好用,那么我们只好自己动手配置环境了。  

首先卸载掉sendmail(如果有的话)停止服务:

#service sendmail stop

取消自动启动:

# chkconfig --levels 345 off sendmail

卸载sendmail:

# yum remove sendmail

安装postfix:

# yum -y install postfix

安装完成后编辑postfix配置文件:

#vim /etc/postfix/main.cf

配置文件

#myhostname = host.domain.tld  //找到此行,将等号后面的部分改写为主机名
myhostname = abcserver  //变为此状态,设置系统的主机名主机名查看直接打命令:hostname

#mydomain = domain.tld  //找到此行,将等号后面的部分改写为域名
mydomain = abc.com  //变为此状态,设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

#myorigin = $mydomain  //找到此行,将行首的#去掉
myorigin = $mydomain  //变为此状态,将发信地址“@”后面的部分设置为域名(非系统主机名)

inet_interfaces = localhost  //找到此行,将“localhost”改为“all”
inet_interfaces = all  //变为此状态,接受来自所有网络的请求

mydestination = $myhostname, localhost.$mydomain, localhost  //找到此行,在行为添加“$mydomain”
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  //变为此状态,指定发给本地邮件的域名

#relay_domains = $mydestination  //找到此行,将行首的#去掉
relay_domains = $mydestination  //变为此状态,定义允许转发的域名

保存退出即可。

查看默认MTA是否正确

#alternatives --config mta  //设置默认MTA

There are 2 programs which provide 'mta'.

Selection Command-----------------------------------------------*+ 1 /usr/sbin/sendmail.sendmail  //当前状态:sendmail为默认MTA 2 /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2//在这里输入2,使Postfix成为默认MTA具体输几要看你的postfix在几

修改PHP.ini

# vi /etc/php.ini
sendmail_path = //找到该位置,修改等号后面内容
sendmail_path = /usr/sbin/sendmail.postfix -t -i  //修改为postfix的路径

这样重启下服务器就大功告成啦,在你的PHP程序内选择下mail函数发送,测试成功没?

本文地址:http://cms.xisix.com:8880/post-113.html

添加新评论