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


14

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

因此,我希望拥有PHP的mail函数,命令行mail命令和我们的python应用程序都能够使用它,最好不必以自己的方式进行设置。

我想我需要的是在本地主机上运行Postfix之类的东西,并使用SES进行交付,但是我不知道该怎么做。

亚马逊的文档指出,我需要设置我的邮件传输代理(MTA),以便它调用ses-send-email.pl脚本。我有脚本,但不确定如何实现。

我在正确的轨道上吗?如果是这样,如何配置Postfix以使用该脚本?

Answers:



14

以下是从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 /第三方/亚马逊的目录。
  • 与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


很好,谢谢。我认为这意味着配置后缀是解决我的问题的正确方法。我将尝试一下,尽快接受您的回答。
杰克

1

由于您要在服务器上托管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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.