在日常开发中,邮件发送是个比较常见的场景。因此出现了很多相关的软件和服务,各大云厂商也推出自己的邮件服务。今天笔者就像大家介绍一种常见的组合,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的学习札记

ubuntu使用postfix和AWS-SES发送邮件的更多相关文章

  1. Amazon SES介绍 - SES发送邮件的过程

     Amazon SES,  全称Amazon Simple Email Service,即Amazon简单邮件服务,它是Amazon提供的一款供开发人员或公司企业用来处理邮件相关业务的服务,也就是说, ...

  2. 邮件发送服务AWS SES,Mailgun以及SendCloud(转)

    原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html 电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上 ...

  3. 使用Windows的mstsc远程桌面连接到Ubuntu图形界面(AWS上安装的Ubuntu系统)

    参考文档:https://blog.csdn.net/liumaolincycle/article/details/50052619 https://www.cnblogs.com/eczhou/p/ ...

  4. CentOS 6.5 and Ubuntu 14.04 使用外部邮箱发送邮件

    我们可以使用外部邮箱(163,126,gmail,139等等)为我们发邮件 for CentOS 6.5 yum -y install mailx vi /etc/mail.rc 在文件的末行添加以下 ...

  5. Ubuntu 14.04下安装GitLab指南

    摘要 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 在GitLab的官方网站上面对Ubuntu的支持也是很好的,有比较详尽的安装指南. ...

  6. 免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持

    一般来说网站注册.论坛消息.新闻推送.广告宣传等都会有发送邮件服务,大量的邮件发送服务如果用PHP来发送,一是会消耗主机资源,二是容易被各大邮箱判定为垃圾邮件而被拒收.用第三方的邮局服务发送邮件,可以 ...

  7. Linux基础命令---sendmail发送邮件

    sendmail sendmail是postfix中的一个发送邮件的代理程序,它负责发送邮件到远程服务器,并且可以接收邮件.sendmail在发送邮件的时候,默认从标砖输入读取内容,以".& ...

  8. 烂泥:Postfix邮件服务器搭建之软件安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postf ...

  9. Centos安装配置Postfix邮件服务器

    发布时间:July 6, 2012 // 分类:Mail // No Comments 在安装邮件服务器之前先了解几个名词,以后会用到: 1 2 3 4 5 6 MUA:用户代理端,即用户使用的写信. ...

随机推荐

  1. 移动端页面中点击input输入框的时候弹出的键盘将输入框挡住的问题

    使用的是vux框架, 以为是框架问题, 后来发现是把当前页面的高度写死为了height:200%: 只要把高度去掉就能让页面自动弹到输入框的上方:

  2. python---输出函数运行时间的装饰器

    """ 装饰器: 不改变原函数的调用方式和函数的前提下, 增加额外的功能, 其本质就是一个闭包 ---输出函数的运行时间 """ impor ...

  3. cannot find module providing package github.com/× working directory is not part of a module

    今天在搭建fabric的过程中遇到一个问题,记录一下 root@zitao /home/hong/Desktop/gowork/src/github.com/hyperledger/fabric re ...

  4. select下拉框获取下拉项值的问题

    新发现: select option如果里面不写value值,默认提交<option></option>中间的值. 切记:真正提交的值写在value属性里面,option之间只 ...

  5. JavaScript基础第05天笔记

    JavaScript基础第05天笔记 1 - 作用域 1.1 作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域.作用域的使用提 ...

  6. JavaScript学习④

    * BOM 1. 事件 ## DOM简单学习:为了满足案例要求 * 功能:控制html文档的内容 * 获取页面标签(元素)对象:Element * document.getElementById(&q ...

  7. ABP框架入门

    技术要求 在开始使用 ABP 框架之前,您需要在计算机上安装一些工具. IDE/编辑器 本书假设您使用的是Visual Studio 2022(支持 .NET 6.0 的 v10.0)或更高版本.如果 ...

  8. 2022最新IntellJ IDEA的zheng开发部署文档

    目录 前景提示 一.环境整合 构建工具(参考工具部署方式) 二.git 导入编译器 三.模块描述浅析 四.配置文档 1.总配置 2.数据库配置 3.密码设置 4.配置建议 五.在IDEA中执行MySQ ...

  9. Abp集成HangFire

    简要说明 后台作业在系统开发的过程当中,是比较常用的功能.因为总是有一些长耗时的任务,而这些任务我们不是立即响应的,例如 Excel 文档导入.批量发送短信通知等. ABP vNext 提供了后台作业 ...

  10. 了解mybatis

    什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBati ...