Linux【12】-其他2--CentOS 7 中使用 Sendmail 通过 PHP 发送邮件
最后也没能发成功邮件,这里仅仅记录操作的过程。。。
一、安装
1.1 关闭IPV6(默认是开启的,IPV4和IPv6的地址不一样,关闭后记得检查IP地址)
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
1.2 安装sendmail(也可能是已经安装好了的)
1)安装命令:
#yum install -y sendmail
#yum install -y sendmail-cf
如果需要SMTP验证就安装并启动saslauthd服务:
# yum install -y saslauthd (可能已经默认安装了,就不需要执行这个命令,直接执行下面的启动好了)
# systemctl start saslauthd (这个不要忘记启动哦)
允许服务器可以发送邮件
如果在 CentOS 7 中使用了 SELinux, 你需要使用下面的命令允许 sendmail 发送邮件:
setsebool -P httpd_can_sendmail=on
2)配置
a)
#vi /etc/mail/sendmail.mc
vim /etc/mail/sendmail.mc.rpmsave
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
将上面两行的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
b)
# vi /etc/mail/sendmail.mc
vim /etc/mail/sendmail.mc.rpmsave
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务
3)生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
4)重启
systemctl restart sendmail
#可以用下面的命令查看状态:
systemctl status sendmail
1.3. CentOS修改主机名(hostname)
需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常。首先切换到root用户。
-
/etc/sysconfig/network 用任一款你喜爱的编辑器打开该文件,里面有一行 HOSTNAME=localhost.localdomain (如果是默认的话),修改 localhost.localdomain 为你的主机名。
-
/etc/hosts 打开该文件,会有一行 127.0.0.1 localhost.localdomain localhost 。其中 127.0.0.1 是本地环路地址, localhost.localdomain 是主机名(hostname),也就是你待修改的。localhost 是主机名的别名(alias),它会出现在Konsole的提示符下。将第二项修改为你的主机名,第三项可选。
将上面两个文件修改完后,并不能立刻生效。如果要立刻生效的话,可以用 hostname your-hostname 作临时修改,它只是临时地修改主机名,系统重启后会恢复原样的。但修改上面两个文件是永久的,重启系统会得到新的主机名。
最后,重启后查看主机名 uname -n 。
二、邮件发送
2.1 发送邮件
使用这个命令进入 php 交互 shell 中:
php -a
在交互 shell 中,粘贴下面的代码:
mail('user@receiver.com', "Test email", "Test email from the Internet", null, "-f user@sender.com");
不要忘记将 user@receiver.com 和 user@sender.com 分别替换为你的收件地址和发件地址。
2.2 浏览 sendmail 日志
要监控邮件日志,你可以使用这个命令:
tail /var/log/maillog
在服务器上安装 sendmail 完成后,你可以允许你的用户通过联系栏通过邮件联系你了。
2.4邮件队列
1)查看邮件队列:mailq
2)强制送信:/usr/sbin/sendmail -q -v # 对MTA队列强制送信
3)清空队列: /var/spool/mqueue (删除里面的文件)
参考资料
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn