Предположим, у меня есть экземпляр, работающий в 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:
заголовок при отправке электронного письма.