ubuntu使用postfix和AWS-SES发送邮件
在日常开发中,邮件发送是个比较常见的场景。因此出现了很多相关的软件和服务,各大云厂商也推出自己的邮件服务。今天笔者就像大家介绍一种常见的组合,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发送邮件的更多相关文章
- Amazon SES介绍 - SES发送邮件的过程
Amazon SES, 全称Amazon Simple Email Service,即Amazon简单邮件服务,它是Amazon提供的一款供开发人员或公司企业用来处理邮件相关业务的服务,也就是说, ...
- 邮件发送服务AWS SES,Mailgun以及SendCloud(转)
原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html 电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上 ...
- 使用Windows的mstsc远程桌面连接到Ubuntu图形界面(AWS上安装的Ubuntu系统)
参考文档:https://blog.csdn.net/liumaolincycle/article/details/50052619 https://www.cnblogs.com/eczhou/p/ ...
- CentOS 6.5 and Ubuntu 14.04 使用外部邮箱发送邮件
我们可以使用外部邮箱(163,126,gmail,139等等)为我们发邮件 for CentOS 6.5 yum -y install mailx vi /etc/mail.rc 在文件的末行添加以下 ...
- Ubuntu 14.04下安装GitLab指南
摘要 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 在GitLab的官方网站上面对Ubuntu的支持也是很好的,有比较详尽的安装指南. ...
- 免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持
一般来说网站注册.论坛消息.新闻推送.广告宣传等都会有发送邮件服务,大量的邮件发送服务如果用PHP来发送,一是会消耗主机资源,二是容易被各大邮箱判定为垃圾邮件而被拒收.用第三方的邮局服务发送邮件,可以 ...
- Linux基础命令---sendmail发送邮件
sendmail sendmail是postfix中的一个发送邮件的代理程序,它负责发送邮件到远程服务器,并且可以接收邮件.sendmail在发送邮件的时候,默认从标砖输入读取内容,以".& ...
- 烂泥:Postfix邮件服务器搭建之软件安装与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postf ...
- Centos安装配置Postfix邮件服务器
发布时间:July 6, 2012 // 分类:Mail // No Comments 在安装邮件服务器之前先了解几个名词,以后会用到: 1 2 3 4 5 6 MUA:用户代理端,即用户使用的写信. ...
随机推荐
- javaScript设计模式:发布订阅模式
发布订阅模式的思想是在观察者模式的基础上演变而来,在观察者模式中客户端监听到对象某个行为就触发对应任务程序.而在发布订阅模式中依然基于这个核心思想,所以有时候也会将两者认为是同一种设计模式.它们的不同 ...
- spring-基于注解的aop开发(快速入门)
步骤: 1.导入坐标 <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...
- Vue+element搭建后台管理系统-二、安装插件
我们继续上一章的内容,上一章讲到我们已经能将项目成功跑起来了,那么我们接下来把项目必用的东西完善一下. 一.安装elementUI 终于到了我们的男二了,继续在VSCode中新建一个终端,然后通过这个 ...
- Java语言学习day09--7月08日
今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 ###01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 ...
- Java语言学习day14--7月19日
###10数组逆序功能实现 * A:案例代码 /* 数组的逆序: 数组中的元素,进行位置上的交换 逆序 不等于 反向遍历 就是数组中最远的两个索引,进行位置交换,实现数组的逆序 使用的是数组的指针思想 ...
- 2021.11.03 P6175 无向图的最小环问题
2021.11.03 P6175 无向图的最小环问题 P6175 无向图的最小环问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给定一张无向图,求图中一个至少包含 33 ...
- zookeeper的linux安装
wget下载(很慢):wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz 或者 ...
- Vue 学习之路(一)- 创建脚手架并创建项目
安装脚手架 命令 npm install -g @vue/cli 打开 cmd 窗口输入以上命令.当出现以下界面即表示安装完成. 查看已安装脚手架版本 命令 vue -V 在 cmd 窗口输入以上命令 ...
- 《Streaming Systems》第一章: Streaming 101
数据的价值在其产生之后,将随着时间的流逝逐渐降低.因此,为了获得最大化的数据价值,尽可能实时.快速地处理新产生的数据就显得尤为重要.实时数据处理将在越来越多的场景中体现出更大的价值所在 -- 实时即未 ...
- Mybatis Plus之内置Mapper实践
MyBatis Plus,作为对MyBatis的进一步增强,大大简化了我们的开发流程,提高了开发速度 配置 由于Mybatis Plus是建立在Mybatis之上的,所以其已经依赖了Mybatis,故 ...