Как сделать Amazon SES стандартным методом отправки почты с моего сервера?

14

Я хотел бы начать использовать Amazon SES для всех писем с нашего сервера. У нас есть несколько внештатных дизайнеров с PHP-хостингом, некоторые веб-приложения Django / Python, а также некоторые системные утилиты, которые отправляют электронные письма.

Поэтому я хотел бы, чтобы функция mail PHP, команда mail командной строки и наши приложения на python могли использовать ее, желательно без необходимости настраивать их по-своему.

Я думаю, что мне нужно, чтобы что-то вроде Postfix работало на localhost и использовало SES для его доставки, но я не знаю, как это сделать.

Документы Amazon указывают, что мне нужно настроить агент передачи почты (MTA), чтобы он вызывал скрипт ses-send-email.pl. У меня есть сценарий, но я не уверен, как этого добиться.

Я на правильном пути? Если так, как я могу настроить Postfix для использования этого скрипта?

Джейк
источник

Ответы:

8

Amazon только что выпустила SMTP-доступ к SES. Этим утром я поделился кратким руководством: http://www.millcreeksys.com/2011/12/14/how-to-configure-your-postfix-server-to-relay-email-through-amazon-simple -Е-сервис-SES /

Майкл Дженсен
источник
Не повезло с sender_dependent_relayhost ... вся электронная почта обходится без stunnel, есть предложения? :)
CMag
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}
    

Обратите внимание на следующее об этом примере:

  • Строка флагов начинается хотя бы с одного символа пробела.
  • Параметр user должен указывать пользователя без полномочий root (т.е. неадминистративный пользователь). Пользователь mailuserпредназначен только для иллюстративных целей.
  • ses-send-email.plСценарий и идентификационная файл Проживать в / Opt / третья сторона / амазонке каталоге.
  • Конечной точкой для связи с Amazon SES является https://email.us-east-1.amazonaws.com

Вы должны изменить эти параметры соответствующим образом.

  1. Откройте файл main.cf в том же каталоге, что и master.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

Netwiser
источник
Здорово, спасибо. Я предполагаю, что это означает, что настройка postfix является правильным способом решения моей проблемы. Я попробую и приму ваш ответ в ближайшее время.
Джейк
1

Поскольку вы размещаете приложения Python / Django на своем сервере, вы можете предпочесть подключить Postfix к Python-эквиваленту сценариев AWS Perl. Это руководство имеет подробную информацию:

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

В качестве альтернативы, если вы хотите использовать сценарии Perl, но обнаружили (как и я), что ваши CPAN-модули ужасно устарели, возможно, проще будет установить зависимости через менеджер пакетов вашей операционной системы. Например, на Ubuntu вы можете сделать это с:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
Тобиас МакНалти
источник