Постфиксная установка на AWS EC2 с помощью реле SMTP

На ec2 экземпляре IP является динамичным, и если я хочу использовать третье лицо шлюз SMTP, такой как sendgrid, каковы предложенные значения следующих полей?

myorigin
myhostname 
mydestination

Предположите, что мое имя хоста экземпляра (FQDN)

ip-12-34-56-78.us-west-2.compute.internal

И у меня больше нет имени хоста отображенным на этой машине, поскольку это чисто динамично по своей природе, однако, я могу получить электронное письмо с адресом в info@example.com

Обновление: Я не могу использовать Эластичный IP, так как каждый регион имеет только 5, и я хочу решение, которые работают без использования фиксированного IP.

-1
задан 4 July 2014 в 06:13
4 ответа

У меня аналогичная настройка ретрансляции через mailgun.

Во-первых, вы можете получить публичный IP-адрес экземпляра, используя:

http://169.254.169.254/latest/meta-data/public-ipv4

Изнутри экземпляра, в моем случае я использую оркестровку (т.е. Chef + OpsWorks) для автоматического создания DNS-записи в Route53 для экземпляра при загрузке.

Вы также можете использовать:

http://169.254.169.254/latest/meta-data/public-hostname

для получения имени хоста экземпляра, а затем вставить его в постфиксный конфигурационный файл.

Я использую servername.servers.mydomain.com (который создается автоматически при загрузке), так как имя хоста и mydomain и mydestination пустые.

Мне также пришлось создать транспортный файл в /etc/postfix/transport со следующим содержимым:

*                smtp:smtp.mailgun.org
1
ответ дан 5 December 2019 в 19:08

Во-первых, большинство сторонних SMTP-шлюзов поддерживают использование своего сервиса в качестве аутентифицированного, зашифрованного релейного хоста:

Ключ в том, что вам не нужно осуществлять контроль доступа, используя IP-адреса или имя хоста. Вы используете шифрование (TLS) и аутентификацию, поэтому SMTP-провайдер должен "доверять" всей почте, приходящей от вашего локального экземпляра постфикса, как только он настроен на выполнение auth. Большинство из них также используют sendmail.

Что касается значений конфигурации:

  • myorigin определённо должен быть example.com - то, что вы хотите, чтобы пользователи видели вашу почту как приходящую.
  • По моему мнению, на myhostname будет установлено также и другое:
    1. оставьте по умолчанию myhostname, так как для вашего SMTP провайдера
    2. не должно иметь значения только жесткий код myhostname на произвольное имя, например aws-web.example.com по той же причине - не должно иметь значения для вашего SMTP провайдера
  • mydestination должно быть оставлено по умолчанию - вы не доставляете почту локально.

Если вы хотите получить действительно фантазию, вы можете также использовать sender_dependent_relayhost_maps опцию.

Наконец, вы не описали, что вы используете для отправки почты из ваших EC2 инстансов. В зависимости от языка и библиотеки (я смотрю на вас php mail) ваш агент отправки почты (MSA) может делать волосатые вещи, чтобы исказить ваше сообщение, возможно, игнорируя значения, установленные выше. php почта печально известна, потому что в большинстве систем она пытается вызвать двоичный файл sendmail, который вы должны явно обработать, чтобы предотвратить отправку сообщения пользователем, работающим на веб-сервере (например, www-data или apache)

.
1
ответ дан 5 December 2019 в 19:08

sendgrid использует аутентификацию на основе пароля (подробности конфигурации приведены ниже). Он не будет заботиться о Вашем IP или именах хостов, которые Вы используете (myhostname, myorigin, и т.д.)

Имя хоста, которое Ваш сервер представляет для sendgrid в приветствии HELO (или EHLO), скорее всего, появится в почтовых заголовках. Некоторые программы получателей могут проверять спам, поэтому используйте что-нибудь, что существует в публичном DNS, и не связано с изворотливым доменом, но немногие системы заметят это. Хорошо делать это хорошо, но не критично.

У меня есть конфигурация, в которой я отправляю почту через sendgrid для нескольких доменов, так что postfix должен знать, какую учетную запись sendgrid использовать для каждого домена отправителя. (и если это не известный домен отправителя, он отправляет почту через локальную сеть без использования sendgrid). На самом деле это не то, что вы просили, но я думаю, что проблема, которую вы думаете, заключается в именах доменов, и ваш меняющийся IP на самом деле связан с аутентификацией с помощью sendgrid.

main. cf:

relayhost = smtp.example.com
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

/etc/postfix/sender_relay:

@domain1.example.com       [smtp.sendgrid.net]:submission
@domain2.example.com       [smtp.sendgrid.net]:submission

/etc/postfix/sasl_passwd:

@domain1.example.com       sendgrid-user-1:Pa$$w0rd1
@domain2.example.com       sendgrid-user-2:Pa$$w0rd2
1
ответ дан 5 December 2019 в 19:08

На примере ec2 IP - динамический,

Это именно для чего предназначены EC2 -эластичные IPs. Создайте EIP, ассоциируйте его с вашим сервером, и тогда вы можете направить правильную DNS-запись на этот EIP.

1
ответ дан 5 December 2019 в 19:08

Теги

Похожие вопросы