很多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.inisendmail_path = //找到该位置,修改等号后面内容
sendmail_path = /usr/sbin/sendmail.postfix -t -i //修改为postfix的路径
这样重启下服务器就大功告成啦,在你的PHP程序内选择下mail函数发送,测试成功没?
et_highlighter51