При необходимости рассылки почты с какого либо сервера внутри Amazon Elastic Compute Cloud Вы обязательно столкнетесь с проблемой того что большая часть smtp-серверов отказываются принимать сообщения с ip которые относятся к сети Amazon EC2 – и их можно понять. Amazon EC2 – идеальная среда-инкубатор не только для креативных стартапов, но и для рассылки спама – поэтому вся сеть себя уже скомпрометировала в определенном смысле. Поэтому даже если вы поставить на instance внутри Amazon EC2 почтовый сервер почта с него уходить все равно не будет, потому что никто не будет ее принимать – выход – сделать relay на какой либо платный сервис вроде authsmtp.com, dnsmadeeasy.com, easydns.com. Второй вариант ( возможно более сложный ) состоит в том чтобы арендовать классический хостинг и сконфигурировать стоящий там smtp сервер так чтобы он мог принимать сообщения с _ваших_ серверов amazon ( если открыть доступ для всей сети Amazon EC2 ваш smtp сервер станет отличным relay для спам проектов внутри Amazon ) – я рекомендую внутри Amazon EC2 выделить сервер с elastic IP на котором поставить Postfix, который в свою очередь будет настроен так чтобы быть relay на Ваш smtp сервер у провайдера.
Далее – как проверить соединение с почтовым сервером и как настроить postfix на instance EC2


Проверить возможность послать почту на stmp сервер из Amazon EC2 лучше всего с помощью telnet. Допустим, у Вас есть smtp.сервер.com и там есть аккаунт юзер@сервер.com с паролем 12345678 – тогда чтобы проверить запускаем в терминал
[root@domU-**** dir]# telnet smtp.сервер.com 25
Терминал нам отвечает
Trying *.*.*.*…
Connected to smtp.сервер.com (*.*.*.*).
Escape character is ‘^]’.
220 сервер.com ESMTP
пишем команду EHLO ( HELO )
EHLO сервер.com
250-hmailserver
250-SIZE
250 AUTH LOGIN

Выполняем авторизацию ( здесь тонкий момент – все данные должны быть Base64 encoded – то есть вместо user@user.com вводим это в закодированной форме – “dXNlckB1c2VyLmNvbQ==”, то же самое с паролем – для облегчения жизни можно воспользоваться вот этим Base64 перекодировщиком – делать нужно Encode :-)
AUTH LOGIN
334 VXNlcm5hbWU6
На самом деле это приглашение для ввода имени юзера – VXNlcm5hbWU6 это “Username:” в base64 ( см. decode ). Вводим имя юзера ( user@user.com в  base64) :

dXNlckB1c2VyLmNvbQ==
334 UGFzc3dvcmQ6
Это на самом деле “login:” – вводим пароль ( у нас же 12345678 ) в base64
MTIzNDU2Nzg=
235 authenticated.
Далее заполняем поля в письме
MAIL FROM: user@bokov.net
250 OK
RCPT TO: abokov@rol.ru
250 OK
команда DATA – вводим тело сообщения
DATA
354 OK, send.
Вводим текст ( конец ввода – это “.” и enter в начале строки )
Subject: Hello world!
From : user@bokov.net
To : Alexey Bokov <abokov@rol.ru>
Dude, Futurama rule!
.

250 Queued (47.516 seconds)
Закрываем сессию
quit
221 goodbye
Connection closed by foreign host.

Кстати? если в DATA не указать from, то некоторые почтовые сервисы ( gmail, yandex ) в поле Sender будут писать “nobody”.

Ниже скриншот telnet сессии на smtp сервере – приватные данные скрыты, то что вводил пользователь отмечено галочкой.
smtp telnet пример

Примеры настройки postfix внутри Amazon EC2 : A rock-solid setup for sending SMTP mail from your EC2 web server, Mail sending from EC2 using Postfix

5 Comments

  1. alexey bokov says:

    письмо в саппорт (яндекса|гагла|апорта) решает проблему радикальным образом – ворованный контент карму никому не улучшает :-) А что с продамавто чего кто то таскает?

    Reply

  2. Tony says:

    Спасибо, полезный материал. Добавил ваш блог в закладки.

    Reply

  3. bers666 says:

    “Проверить возможность послать почту на stmp сервер из Amazon EC2 лучше всего с помощью telnet.”
    swaks лучше для тестирования SMTP из консоли. Авторизацию он тоже поддерживает.

    Reply

  4. storinka says:

    а вообще есть у кого-то опыт использования clouds на амазоне в качестве обычного хостинга? ну десяток сйтов например, блог там, несколько небольших проектов и т.п.
    интересно как оно

    Reply

    alexey bokov Reply:

    оно нормально, ничем особенным от dedicated linux на базе виртуалок не отличается. например moodbox.com там целиком хостится.
    по поводу цены – микроинстансы примерно стоят 15$ в месяц, но там надо будет платить за дисковое пространство. Плюс не стоит забывать что скоро трафик в EC2 также будет оплачиваться. Вообще если приложение ( веб-сайт ) не будет масштабируемым в принципе смысла особого в хостинге на EC2 нет, если приложение может гибко масштабироваться и работать когда нет нагрузки в кластере из 2-3 серверов, а когда есть нагрузка расширять кластер до 20-30, то имеет смысл связываться с EC2.

    Reply

Leave a Reply

 

Get Adobe Flash playerPlugin by wpburn.com wordpress themes