如何使 Amazon SES 成为从我的服务器发送邮件的默认方法?

如何使 Amazon SES 成为从我的服务器发送邮件的默认方法?

我想开始使用 Amazon SES 来处理我们服务器上的所有电子邮件。我们有几个自由设计师,他们有 PHP 托管、一些 Django/Python Web 应用程序以及一些发送电子邮件的系统实用程序。

因此,我希望 PHP 的邮件功能、命令行邮件命令和我们的 python 应用程序都能够使用它,最好不需要以自己的方式设置它们。

我认为我需要的是在本地主机上运行类似 Postfix 的东西并使用 SES 进行传送,但我不知道如何做到这一点。

Amazon 的文档指出我需要设置我的邮件传输代理 (MTA),以便它调用 ses-send-email.pl 脚本。我有这个脚本,但我不知道如何实现这一点。

我走对路了吗?如果是这样,我该如何配置 Postfix 以使用该脚本?

答案1

亚马逊刚刚发布了对 SES 的 SMTP 访问。今天早上我快速编写了一个操作指南: http://www.millcreeksys.com/2011/12/14/how-to-configure-your-postfix-server-to-relay-email-through-amazon-simple-email-service-ses/

答案2

以下是一些复制自SES 开发人员指南

要将 ses-send-email.pl 与 Postfix 集成:

  1. 打开 master.cf 文件。在许多系统上,此文件位于/etc/postfix目录中。
  2. master.cf通过在文件中添加以下两行,然后保存文件来配置新的邮件传输。

    aws-email  unix  -       n       n       -       -       pipe
      flags=R user=mailuser argv=/opt/third-party/amazon/ses-send-email.pl -r -k /opt/third-party/amazon/aws-credentials -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

请注意此示例的以下几点:

  • 标志行至少以一个空格字符开头。
  • 用户参数必须指定非root用户(即非管理用户)。该用户mailuser仅用于说明目的。
  • ses-send-email.pl脚本和凭证文件位于 /opt/third-party/amazon 目录中。
  • 与 Amazon SES 通信的终端节点是https://email.us-east-1.amazonaws.com

您应该根据需要修改这些参数。

  1. 打开与master.cf同目录的main.cf文件,修改如下:

    1. 查找 default_transport 行:

      • 如果存在,请将其更改为如下所示:

        default_transport = aws-email
        
      • 如果不存在,则添加一个新行,并填写前面的内容。

    2. 完成后保存 main.cf 文件。
  2. 重新启动您的 Postfix 服务器。

    /etc/init.d/postfix restart
    

请注意,此命令可能与您的特定服务器不完全相同。从此时起,您的外发电子邮件将通过 Amazon SES 发送。您可以通过 Postfix 服务器发送电子邮件消息,然后验证它是否到达目的地来测试这一点。如果邮件未送达,请检查系统的邮件日志中是否有错误。在许多系统上,这是/var/log/mail.log

-- 我创建了一个简单的博客,将我最近在 Amazon Cloud 和 SES 中尝试的所有内容放在一起。以下是链接:http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

答案3

由于您在服务器上托管 Python/Django 应用程序,因此您可能发现将 Postfix 连接到 AWS Perl 脚本的 Python 等效版本更为可取。本指南包含详细信息:

http://aws.amazon.com/articles/2405502737055650

或者,如果您想使用 Perl 脚本,但发现(像我一样)您的 CPAN 模块已经过时了,更简单的方法可能是通过操作系统的包管理器安装依赖项。例如,在 ubuntu 上,您可以使用以下命令执行此操作:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl

相关内容