Назад | Перейти на главную страницу

Отправка почты с нескольких хостов на одном экземпляре с использованием Amazon SES и Exim4

Предположим, у меня есть экземпляр, работающий в Amazon EC2:

 somehost.example.com

На этом экземпляре размещено некоторое количество приложений или веб-сайтов для других доменов:

 www.example.com
 web.example.org
 etc.

Этот хост настроен на использование exim4 для взаимодействия с Amazon SES для отправки почты. В Amazon SES каждый домен отдельно разрешен в качестве действительного отправителя:

www.example.com
web.example.org
etc.

Однако, как и следовало ожидать, полное доменное имя экземпляра и исполняющего пользователя используются в качестве отправителя каждого электронного письма, поэтому все электронные письма, похоже, исходят от:

www-data@somehost.example.com

Конечно, я могу настроить Amazon SES, чтобы разрешить почту с somehost.example.com, а также могу добавить 'From: "Whoever" <whoever@example.com>' конверт для писем на уровне приложения.

Мне интересно следующее: (а) приемлемо ли это решение, и если нет, (б) какую конфигурацию я мог бы изучить, чтобы показать, что почта для каждого домена (например, example.com), похоже, исходит непосредственно из "something.example" .com "сервер, а не фактический хост. Я предполагаю, что это включает в себя создание DNS-записи hostname.example.com и указание ее на сервер, но помимо этого я не понимаю, как настроить exim или приложение, чтобы это разрешить.

Вы можете настроить exim, чтобы скрыть имя локальной почты в исходящей почте. Вдобавок вы должны сконфигурировать ваш основной сервер exim для использования smarthost, в данном случае это amazon SES.

Предположим, каждый сайт работает на собственном виртуальном сервере, www.example.com (192.0.2.1) и web.example.com (192.0.2.2), а ваш почтовый сервер находится на другом виртуальном сервере, smtp.example.com (192.0.2.10).

Чтобы перенастроить exim4, вы можете запустить:

dpkg-reconfigure exim4-config

На основном почтовом сервере smtp.example.com настройте его следующим образом (я перечислил только соответствующие):

  • Общий тип конфигурации почты: почта, отправляемая smarthost; получено через SMTP или fetchmail

  • Системное почтовое имя: smtp.example.com

  • Машины для ретрансляции почты: 192.0.2.1; 192.0.2.2

  • IP-адрес или имя хоста исходящего смарт-хоста: THE_AMAZON_SES_IP

  • Скрыть имя локальной почты в исходящей почте? да

  • Видимое доменное имя для локальных пользователей: example.com

На других серверах настройте exim следующим образом, используя www.example.com в качестве примера хоста:

  • Общий тип конфигурации почты: почта, отправляемая smarthost; нет местной почты

  • Системное почтовое имя: www.example.com

  • Другие направления, по которым принимается почта: LEAVE_EMPTY <- это вызовет «Включена опция скрытия имени локальной почты в исходящей почте»

  • Видимое доменное имя для локальных пользователей: www.example.com

  • IP-адрес или имя хоста исходящего смарт-хоста: 192.0.2.10

Если у вас только один сервер, просто пропустите второй шаг. Ваш основной сервер должен отправлять электронные письма, скрывающие имя локального сервера, и отправлять их как исходящие с example.com.

Вы пытаетесь скрыть тот факт, что электронное письмо было отправлено из экземпляра EC2? Короткий ответ: вы не можете. В Received: заголовки будут содержать достаточно полную трассировку пути сообщения электронной почты в сети. К счастью для вас, на них почти никто не смотрит.

Если вы просто хотите, чтобы получатели увидели что-то разумное для From: заголовок, а затем просто добавьте что-нибудь разумное в From: заголовок при отправке электронного письма.