使用 Mailgun 发送电子邮件

Mailgun 是一项第三方电子邮件服务,该服务可让 Compute Engine 用户每月免费发送一万封电子邮件。Mailgun 还提供编程 API、日志保留、电子邮件个性化、分析、电子邮件验证等功能。

按照以下说明注册并使用 Mailgun。

准备工作

  1. 在 Mailgun 的 Google 合作伙伴页面* 上创建一个新的 Mailgun 帐号。作为 Compute Engine 用户,您每月的前 30,000 封邮件都是免费的。如需了解超出免费额度邮件的价格和批量折扣,请查看 Mailgun 每月价格计算器

  2. 获取您的凭据。根据本说明的要求,您必须知道自己的 Mailgun SMTP 用户名、密码和主机名。请于 Mailgun 控制面板的网域部分下获取您的用户名和密码。

    Mailgun SMTP 主机名为 smtp.mailgun.org

使用 Postfix 作为中继

将 Mailgun 配置为邮件中继,以让 Postfix 转发远程传递的电子邮件。

  1. 使用 SSH 连接到您的实例。

    gcloud compute ssh INSTANCE
    
  2. 成为超级用户并设置一个安全的 umask。

    user@test-instance:~$ sudo su -
    
    root@test-instance:~# umask 077
    
  3. 安装 Postfix 邮件传输代理。出现提示时,请接受默认的域名选项,但选择 Local Only 配置。

    Debian


    root@test-instance:~# apt-get update && apt-get install postfix libsasl2-modules -y
    

    CentOS


    root@test-instance:~# yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  4. 修改 Postfix 配置选项。Postfix 配置选项在 main.cf 文件中设置。使用您所选的文本编辑器打开该文件。

    root@test-instance:~# vi /etc/postfix/main.cf
    
  5. 如果文件中存在以下几行内容,请将其注释掉。

    # default_transport = error
    # relay_transport = error
    
  6. 要添加 Mailgun SMTP 服务,请将以下这行代码添加到文件末尾。

    relayhost = [smtp.mailgun.org]:2525
    
  7. 接下来,添加以下几行代码以强制支持 SSL/TLS 并为这些请求配置 SMTP 身份验证。由一个简单的访问和安全层 (SASL) 模块负责处理 Postfix 配置中的身份验证。将以下几行代码添加到文件末尾。

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    

    保存更改并关闭该文件。

  8. 生成 SASL 密码映射。

    1. 创建一个可用于标准输入的新密码文件。

      root@test-instance:~# cat > /etc/postfix/sasl_passwd << EOF
      
    2. 在提示符处,输入服务详细信息,并将 YOUR_SMTP_LOGINYOUR_SMTP_PASSWORD 替换为您的凭据。

      > [smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
      
    3. 通过输入分隔符 EOF 保存并关闭文件。

      > EOF
      
  9. 使用 postmap 实用程序生成一个 .db 文件。

    root@test-instance:~# postmap /etc/postfix/sasl_passwd
    
    root@test-instance:~# ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  10. 接下来,移除包含您凭据的文件,因为将不再需要该文件。

    root@test-instance:~# rm /etc/postfix/sasl_passwd
    
  11. 设置您的 .db 文件的权限。

    root@test-instance:~# chmod 600 /etc/postfix/sasl_passwd.db
    
    root@test-instance:~# ls -la /etc/postfix/sasl_passwd.db
    
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  12. 最后,重新加载配置以加载修改后的参数。

    Debian


    root@test-wheezy:~# /etc/init.d/postfix restart
    

    CentOS


    [root@test-centos ~]# postfix reload
    

  13. 测试您的配置。安装 mailxmailutils 软件包并测试您的配置。

    Debian


    root@test-wheezy:~# apt-get install mailutils -y
    

    CentOS


    [root@test-centos ~]# yum install mailx -y
    

    发送一条测试消息。

    root@test-instance:~# echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
    

    在系统日志中查找包含 status 和表示成功的服务器响应代码 (250) 的状态行。

    Debian


    root@test-wheezy:~# tail -n 5 /var/log/syslog
    

    CentOS


    [root@test-centos ~]# tail -n 5 /var/log/maillog
    

有关许多其他主题(包括如何跟踪和路由消息)的更多详细示例和信息,请阅读 Mailgun 文档

Mailgun SMTP 设置

以下是专门适用于 Mailgun 的 SMTP 设置的快速参考信息,这些设置用于配置客户端:

  • 主机:smtp.mailgun.org
  • 端口:2525

* 对于注册使用非免费帐号的客户,Google 将获得补偿。

根据您自己的情况试用其他 Google Cloud Platform 功能。查阅我们的教程

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档