我想开始使用 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 集成:
- 打开 master.cf 文件。在许多系统上,此文件位于
/etc/postfix
目录中。 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
您应该根据需要修改这些参数。
打开与master.cf同目录的main.cf文件,修改如下:
查找 default_transport 行:
如果存在,请将其更改为如下所示:
default_transport = aws-email
如果不存在,则添加一个新行,并填写前面的内容。
- 完成后保存 main.cf 文件。
重新启动您的 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