关于amazon-web-services:ubuntu使用postfix和AWSSES发送邮件

9次阅读

共计 2726 个字符,预计需要花费 7 分钟才能阅读完成。

在日常开发中,邮件发送是个比拟常见的场景。因而呈现了很多相干的软件和服务,各大云厂商也推出本人的邮件服务。明天笔者就像大家介绍一种常见的组合,AWS 的邮件服务 SES 与邮件服务器 postfix 的配置和应用办法。

概述

  • 什么是 AWS-SES

Amazon Simple Email Service (SES) 是一种经济高效、灵便且可扩大的电子邮件服务,使开发人员可能从任何应用程序中发送电子邮件。您能够疾速配置 Amazon SES 以反对多种电子邮件应用案例,包含交易、营销或群发电子邮件通信。

  • 什么是 postfix

Postfix 是一种电子邮件服务器,它是由任职于 IBM 华生钻研核心(T.J. Watson Research Center)的荷兰籍研究员 Wietse Venema 为了改进 sendmail 邮件服务器而产生的。
它是为了改进 sendmail 产生的,同时它兼容 sendmail,是比拟罕用的一种邮件服务器。

开明 Amazon Simple Email Service (SES)服务

  • 创立一个 identity

此处咱们为了演示不便,应用 Email address 形式来验证。按下图填入后续要发送邮件的邮箱,随后 AWS 会给对应邮箱发一个确认验证的邮件,点击一下邮件连贯即可示意确认受权。

  • 创立凭证

抉择 Account dashboard,此处的 SMTP endpoint 就是咱们的邮件服务器地址,前面配置邮件服务器的时候须要应用。

点击创立凭证,创立好后,新页面会有下载按钮,肯定要及时下载凭证文件。
凭证文件里有 Smtp Username 和 Smtp Password,前面配置 postfix 邮件服务器的时候须要用到。

  • 测试邮件发送

应用 AWS 自带的性能发送一下测试邮件,查看是否胜利。

  • 其余阐明

SES 的验证形式反对单个邮箱验证和 domain 验证。本文中笔者为了演示简略,采纳了单个邮箱验证,如果理论应用中,邮件发送者就是固定的几个邮箱,采纳该办法就比较简单。若是邮件发送者比拟多,不固定,每个邮箱验证一次不太事实,就能够采纳 domain 验证的形式,由域名管理员来配合验证即可,具体的应用 dimain 形式验证的办法,能够参考 aws 官网文档,增加对应的 dns 记录即可。

至此,SES 服务曾经初步开明结束,上面咱们来看下 postfix 的相干配置。

EC2 装置 postfix 并配置 SES 发送邮件

笔者的环境是 ubuntu 20.04,其余版本的 ubuntu 办法根本相似。

shell> cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
  • 装置 postfix 邮件服务

应用如下命令装置,装置过程两头间接抉择默认的配置一路确认即可,前面咱们独自批改配置。

sudo apt-get install mailutils -y

装置实现之后,在 AWS 的 EC2 上是无奈间接应用 mail 命令发邮件的,须要配置邮件服务器。
此处咱们以 AWS 的 SES 服务为例,配合 postfix 进行邮件发送。

  • 批改 postfix 配置

    sudo postconf -e "relayhost = [email-smtp.us-west-2.amazonaws.com]:587" \
    "smtp_sasl_auth_enable = yes" \
    "smtp_sasl_security_options = noanonymous" \
    "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" \
    "smtp_use_tls = yes" \
    "smtp_tls_security_level = encrypt" \
    "smtp_tls_note_starttls_offer = yes"
    
    sudo postconf -e "smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt"

    通过上述命令批改 postfix 的配置,其实批改的就是 /etc/postfix/main.cf 文件,也能够手动应用 vim 等批改,为了放弃格局,间接应用自带的 postconf 命令批改即可。
    留神:上述命令中的 email-smtp.us-west-2.amazonaws.com依据理论状况换成你本人开明的 SES 服务的地址,上文 SES 开明局部有介绍过。

  • 填写账号文件

    vim /etc/postfix/sasl_passwd
    # 输出如下内容
    [email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD

    email-smtp.us-west-2.amazonaws.com:换成你本人的 SES 服务地址
    SMTPUSERNAME:SMTP 用户名,上文 SES 开明局部有介绍过
    SMTPPASSWORD:SMTP 明码,同上

  • 编码账号文件和批改权限

    sudo postmap hash:/etc/postfix/sasl_passwd
    
    sudo chown root:root /etc/postfix/sasl_passwd
    sudo chown root:root /etc/postfix/sasl_passwd.db
    sudo chmod 0600 /etc/postfix/sasl_passwd
    sudo chmod 0600 /etc/postfix/sasl_passwd.db
  • 重启 postfix 服务

    systemctl reload postfix
  • 测试邮件发送并查看日志

    echo test | mail -s "test message" -a "From: sender@example.com" receiver@example.com
    
    tail -f /var/log/mail.log

    留神,此处的发送者和收件者邮件须要在 AWS 上进行验证,否则发送邮件会失败。验证形式见后面的 AWS 开明 SES 服务局部。

    如果 SES 是在 sandbox 环境中,则发送者 sender@example.com和 收件人 receiver@example.com 都须要在 AWS 上进行验证。如果是在 production 环境中,则只须要发送者邮件验证通过即可。

  • 其余阐明

若依照如上配置形式,邮件还是发送失败,能够查看机器上的日志,如/var/log/mail.log。还能够查看平安组,看是否是邮件相干端口未凋谢。

参考文档:https://docs.aws.amazon.com/ses/latest/dg/postfix.html


更多技术文章,请关注我的集体博客 www.immaxfang.com 和小公众号 Max 的学习札记

正文完
 0