配置 SendMail 通过 SMTP 发送邮件

今天不知怎么的,SendGrid 插件突然抽风了,导致博客后台完全打不开,显示为 503 Service Unavailable。一怒之下就把 SendGrid 插件给删了。

但是不用 SendGrid 插件的话,就要自己配置邮件服务了,没辙,硬着头皮上吧。

先说一下背景,主机环境是 Google Compute Engine,RHEL 7 系统,使用 SendGrid.net 作为 SMTP 服务。Linux 中有个邮件工具叫作 SendMail,它是一个命令行工具,PHP 也是用它来发送邮件的。所以把 SendMail 配置好了,不仅 WordPress / PHP 可以正常发送邮件,其它基于 SendMail 的工具也可以正常工作了,一举两得。以下命令假设已有管理员权限。

首先,安装必须的系统组件,其中的 cyrus-sasl-plain 是一个加密组件,如果没有安装的话,会出现错误“AUTH=client, available mechanisms do not fulfill requirements”:

设置 SMTP 服务器,在 /etc/mail/sendmail.mc 中找到下面的第一行,然后如下添加第 2、3、4 行:

需要注意的是其中端口指定为 2525,这是 Compute Engine 和 SendGrid 的约定,一般的端口是 25 或者 587。

然后在 /etc/mail/access 中添加 SMTP 帐号:

其中 Username 和 Password 要替换成真实的用户名和密码,在 SendGrid 中,用户名/密码和登录时候用的一样。

然后编译相关配置并重启 SendMail 服务:

这样就配置好了,为了检验 SendMail 能正常工作,我们来做一个简单的测试:

先创建一个文本文件,mail.txt:

Subject: SendMail Test
Random Email Content

然后执行命令:

如果能收到测试邮件,就说明配置成功了;如果不能,可以检查 /var/log/maillog 文件看是哪里出错了。


8 条评论 添加

发表评论

电子邮件地址不会被公开。 必填项已用*标注