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.comuser@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
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn