选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

将 Amazon SES 与 Postfix 集成

聚焦模式
将 Amazon SES 与 Postfix 集成 - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Postfix 是广泛使用的 Sendmail 邮件传输代理 (MTA) 的替代品。有关 Postfix 的更多信息,请转到 http://www.postfix.org。本主题中的步骤适用于 Linux、macOS 或 Unix。

注意

Postfix 是第三方应用程序,不由 Amazon Web Services 开发或支持。本节中的步骤仅供参考,如有变更,恕不另行通知。

先决条件

完成此部分中的过程之前,必须先执行以下任务:

  • 卸载 Sendmail 应用程序(如果它已安装在您的系统中)。根据您使用的不同操作系统,完成此步骤的过程会有差异。

    重要

    以下对 sendmail 的引用指的是 Postfix 命令 sendmail,不要与 Sendmail 应用程序混淆。

  • 安装 Postfix。根据您使用的不同操作系统,完成此步骤的过程会有差异。

  • 安装 SASL 身份验证软件包。根据您使用的不同操作系统,完成此步骤的过程会有差异。例如,如果您使用 RedHat基于系统的系统,则应安装该cyrus-sasl-plain软件包。如果您使用基于 Debian 或 Ubuntu 的系统,则应安装 libsasl2-modules 软件包。

  • 验证您用来发送电子邮件的电子邮件地址或域。有关更多信息,请参阅 创建电子邮件地址身份

  • 如果您的账户仍处于沙盒中,您只能将电子邮件发送到已验证的电子邮件地址。有关更多信息,请参阅 请求生产访问权限(从 Amazon SES 沙盒中移出)

配置 Postfix

完成以下步骤来配置您的邮件服务器,以使用 Postfix 通过 Amazon SES 发送电子邮件。

配置 Postfix
  1. 在命令行处,键入以下命令:

    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 = secure" \ "smtp_tls_note_starttls_offer = yes"
    注意

    如果您在美国西部(俄勒冈)以外的 AWS 地区使用 Amazon SES,请将前面的命令替换email-smtp.us-west-2.amazonaws.com为相应区域的 SMTP 终端节点。有关更多信息,请参阅 区域和 Amazon SES

  2. 在文本编辑器中,打开 /etc/postfix/master.cf文件。搜索以下条目:

    -o smtp_fallback_relay=

    如果找到此条目,请在行首放置 #(井号)字符将其注释掉。保存并关闭文件。

    如果此条目不存在,请继续下一个步骤。

  3. 在文本编辑器中,打开 /etc/postfix/sasl_passwd文件。如果该文件尚不存在,请创建它。

  4. 将以下行添加到 /etc/postfix/sasl_passwd

    [email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD
    注意

    SMTPUSERNAMESMTPPASSWORD替换为您的 SMTP 登录凭据。您的 SMTP 登录凭证与您的 AWS 访问密钥 ID 和秘密访问密钥不同。有关凭证的更多信息,请参阅获取 Amazon SES SMTP 凭证

    如果您在美国西部(俄勒冈)以外的 AWS 地区使用 Amazon SES,请使用相应区域的 SMTP 终端节点替换上述示例email-smtp.us-west-2.amazonaws.com中的终端节点。有关更多信息,请参阅 区域和 Amazon SES

    是否保存并关闭 sasl_passwd

  5. 在命令提示符处,键入以下命令以创建一个包含您的 SMTP 凭证的 Hashmap 数据库文件:

    sudo postmap hash:/etc/postfix/sasl_passwd
  6. (可选)您在之前的步骤中创建的 /etc/postfix/sasl_passwd/etc/postfix/sasl_passwd.db 文件未加密。由于这些文件包含您的 SMTP 凭证,我们建议您修改这些文件的所有权和权限以限制对它们的访问。要限制对这些文件的访问,请执行以下操作:

    1. 在命令提示符处,键入以下命令以更改文件的所有权:

      sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
    2. 在命令提示符处,键入以下命令以更改文件的权限,以便仅根用户可读取和写入它们:

      sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
  7. 告诉 Postfix 在何处查找 CA 证书(需要使用它来验证 Amazon SES 服务器证书)。您在此步骤中使用的命令因所用操作系统而异。

    • 如果您使用 Amazon Linux、Red Hat Enterprise Linux 或相关分发,请键入以下命令:

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
    • 如果您使用 Ubuntu 或相关分发,请键入以下命令:

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
    • 如果您使用 macOS,则可通过您的系统密钥链生成证书。要生成证书,请在命令行处键入以下命令:

      sudo security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain > /etc/ssl/certs/ca-bundle.crt

      生成证书之后,请键入以下命令:

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
  8. 键入以下命令以启动 Postfix 服务器(或在服务器已在运行的情况下,重新加载配置设置):

    sudo postfix start; sudo postfix reload
  9. 在命令行键入以下命令并在每行后按 Enter 以发送测试电子邮件。sender@example.com替换为您的 “发件人” 电子邮件地址。From (发件人) 地址必须经过验证才能用于 Amazon SES。recipient@example.com替换为目标地址。如果您的账户仍处于沙盒中,则还必须验证收件人地址。最后,邮件最后一行只能包含一个句点 (.),不能再有其他内容。

    sendmail -f sender@example.com recipient@example.com From: Sender Name <sender@example.com> Subject: Amazon SES Test This message was sent using Amazon SES. .
  10. 检查与收件人地址关联的邮箱。如果未收到电子邮件,请检查您的垃圾邮件文件夹。如果您仍然无法找到电子邮件,请检查用于发送电子邮件的系统上的邮件日志(通常位于 /var/log/maillog)以了解更多信息。

高级使用示例

此示例演示如何发送使用配置集的电子邮件,以及如何使用 MIME 多部分编码发送纯文本和 HTML 版本的消息以及附件。它还包含一个链接标签,可用于为单击事件分类。电子邮件的内容将在一个外部文件中指定,因此您不必在 Postfix 会话中手动键入命令。

使用 Postfix 发送多部分 MIME 电子邮件
  1. 在文本编辑器中,创建一个名为 mime-email.txt 的新文件。

  2. 在文本文件中,粘贴以下内容,并将红色的值替换为适用于您的账户的值:

    X-SES-CONFIGURATION-SET: ConfigSet From:Sender Name <sender@example.com> Subject:Amazon SES Test MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="YWVhZDFlY2QzMGQ2N2U0YTZmODU" --YWVhZDFlY2QzMGQ2N2U0YTZmODU Content-Type: multipart/alternative; boundary="3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ" --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Amazon SES Test This message was sent from Amazon SES using the SMTP interface. For more information, see: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <html> <head> </head> <body> <h1>Amazon SES Test</h1> <p>This message was sent from Amazon SES using the SMTP interface.</p> <p>For more information, see <a ses:tags="samplekey0:samplevalue0;samplekey1:samplevalue1;" href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html"> Using the Amazon SES SMTP Interface to Send Email</a> in the <em>Amazon SES Developer Guide</em>.</p> </body> </html> --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ-- --YWVhZDFlY2QzMGQ2N2U0YTZmODU Content-Type: application/octet-stream MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="customers.txt" SUQsRmlyc3ROYW1lLExhc3ROYW1lLENvdW50cnkKMzQ4LEpvaG4sU3RpbGVzLENh bmFkYQo5MjM4OSxKaWUsTGl1LENoaW5hCjczNCxTaGlybGV5LFJvZHJpZ3VleixV bml0ZWQgU3RhdGVzCjI4OTMsQW5heWEsSXllbmdhcixJbmRpYQ== --YWVhZDFlY2QzMGQ2N2U0YTZmODU--

    保存并关闭文件。

  3. 在命令行处,键入以下命令。sender@example.com替换为您的电子邮件地址,然后recipient@example.com替换为收件人的电子邮件地址。

    sendmail -f sender@example.com recipient@example.com < mime-email.txt

    如果该命令成功运行,它将退出并且不提供任何输出。

  4. 查看收件箱中是否有该电子邮件。如果该邮件未送达,请查看系统的邮件日志。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。