На ec2 экземпляре IP является динамичным, и если я хочу использовать третье лицо шлюз SMTP, такой как sendgrid, каковы предложенные значения следующих полей?
myorigin
myhostname
mydestination
Предположите, что мое имя хоста экземпляра (FQDN)
ip-12-34-56-78.us-west-2.compute.internal
И у меня больше нет имени хоста отображенным на этой машине, поскольку это чисто динамично по своей природе, однако, я могу получить электронное письмо с адресом в info@example.com
Обновление: Я не могу использовать Эластичный IP, так как каждый регион имеет только 5, и я хочу решение, которые работают без использования фиксированного IP.
У меня аналогичная настройка ретрансляции через 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
Во-первых, большинство сторонних SMTP-шлюзов поддерживают использование своего сервиса в качестве аутентифицированного, зашифрованного релейного хоста:
Ключ в том, что вам не нужно осуществлять контроль доступа, используя IP-адреса или имя хоста. Вы используете шифрование (TLS) и аутентификацию, поэтому SMTP-провайдер должен "доверять" всей почте, приходящей от вашего локального экземпляра постфикса, как только он настроен на выполнение auth. Большинство из них также используют sendmail
.
Что касается значений конфигурации:
myorigin
определённо должен быть example.com
- то, что вы хотите, чтобы пользователи видели вашу почту как приходящую.myhostname
будет установлено также и другое:
myhostname
, так как для вашего SMTP провайдераmyhostname
на произвольное имя, например aws-web.example.com
по той же причине - не должно иметь значения для вашего SMTP провайдераmydestination
должно быть оставлено по умолчанию - вы не доставляете почту локально. Если вы хотите получить действительно фантазию, вы можете также использовать sender_dependent_relayhost_maps
опцию.
Наконец, вы не описали, что вы используете для отправки почты из ваших EC2 инстансов. В зависимости от языка и библиотеки (я смотрю на вас php mail) ваш агент отправки почты (MSA) может делать волосатые вещи, чтобы исказить ваше сообщение, возможно, игнорируя значения, установленные выше. php почта печально известна, потому что в большинстве систем она пытается вызвать двоичный файл sendmail
, который вы должны явно обработать, чтобы предотвратить отправку сообщения пользователем, работающим на веб-сервере (например, www-data
или apache
)
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
На примере ec2 IP - динамический,
Это именно для чего предназначены EC2 -эластичные IPs. Создайте EIP, ассоциируйте его с вашим сервером, и тогда вы можете направить правильную DNS-запись на этот EIP.