TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Как заставить WordPress отправлять почту из Amazon EC2 с помощью SES

1 501

Amazon Web Services (AWS) только пугает, пока вы не ознакомитесь с ним. EC2 означает Elastic Compute Cloud, который для наших целей является VPS. В случае если Вы установите WP на

AWS, даже если вам удастся разместить WordPress, вы заметите, что он не может ничего отправлять на почту. Чтобы отправлять почту из Amazon EC2, вам нужен SES, что сокращенно от Simple Email Service .

Процесс требует трех вещей: добавление домена в SES, получение учетных данных SMTP и, наконец, передача их в WordPress. Это не так сложно, и, по крайней мере, вы будете чувствовать себя под контролем вашей настройки. Это также считается бесплатным решением.

Примечание. В этом руководстве предполагается, что вы уже используете WordPress с AWS EC2, но он должен работать на любом сайте / хостинге. Локально размещенные сайты имеют право, только если у вас есть (суб) домен, указывающий на вашу установку. Вы можете сохранить запись обновленной, если ваш динамический IP-адрес изменится.

Добавление вашего домена в SES

Начните здесь: SES Home в Консоли управления AWS. Вскоре вы заметите, что SES доступен не в каждом регионе. Это совершенно нормально, так как электронная почта не имеет CDN-подобных требований. Выберите то, что вам ближе, мы используем Ирландию.

Когда вы нажимаете Домены, ваш интерфейс может быть не таким уж украшенным, но вот к чему нужно стремиться:

Amazon SES подтвердит новый домен

Нажмите на Подтвердить новый домен, чтобы начать.

Amazon SES подтверждает диалог нового домена

Подтверждение владения доменом

SES дает вам три записи:

  • Запись о проверке домена: отправка почты с Amazon обязательна. Они должны знать, что у вас есть контроль над доменом, который вы хотите добавить.
  • Набор записей DKIM : Необязательно, но мы его используем. DKIM сообщает получателю, имеет ли лицо, отправляющее сообщение, доступ к исходному домену и хранящийся в нем закрытый ключ. Прокрутите вниз в этом диалоге. Их не два, а три.
  • Запись о получении электронной почты: не беспокойтесь об этом, так как SES не подходит для простой пересылки. Проверьте Mailgun, если вы хотите переслать входящую почту на ваш пользовательский адрес электронной почты.

Добавьте TXT и три (!) записи CNAME на ваш сервер имен, в нашем случае это Cloudflare:

DNS-записи Amazon SES на Cloudflare

Проверка будет успешной через некоторое время. Результат? Вы можете отправить электронное письмо с любого адреса электронной почты в этом домене. Ура!

Увеличение лимитов отправки для выхода из песочницы

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

Мы бы хотели, чтобы WordPress мог отправлять почту с нескольких сайтов внутри экземпляра EC2. Это будут люди, использующие контактные формы для отправки нам почты, а также уведомления системы WordPress о комментариях и автоматических обновлениях или других транзакционных сообщениях, таких как восстановление пароля.

Они ответят примерно так:

Спасибо за отправку запроса на увеличение лимитов отправки. Ваша новая квота отправки составляет 50 000 сообщений в день. Ваша максимальная скорость отправки теперь составляет 14 сообщений в секунду. Мы также удалили ваш аккаунт из песочницы Amazon SES. Эти увеличения вступают в силу немедленно в регионе ЕС (Ирландия).

Этот процесс выводит вас из песочницы, чтобы вы могли отправлять почту. Чтобы начать, нажмите Запрос увеличенных лимитов отправки и заполните форму в соответствии с вашими потребностями. Для нас это было положительным ответом на каждый вопрос, и увеличение было для желаемой ежедневной квоты отправки = 300. Тип электронной почты может быть Другой или Транзакционный, но это действительно зависит от вас, поэтому, возможно, не копируйте нас слепо. Я здесь только для того, чтобы вы знали, как мы это делаем.

Запрос поддержки Amazon SES для увеличения лимита отправки и выхода из песочницы

Получение учетных данных SMTP от SES

Настройки Amazons SES SMTP

Нажмите Настройки SMTP и запишите Имя сервера (зависит от региона). Затем создайте учетные данные SMTP. Это приведет вас к IAM (Identity and Access Management), который является сердцем безопасности в AWS. Здесь вы решаете, достаточно ли одного пользователя для всех ваших сайтов / доменов, или вы предпочитаете уникального пользователя для каждого (это было бы наилучшей практикой). Я покажу вам одно пользовательский подход, который подходит для одного сайта. Однако ограничение пользователей ARN их одного домена  выходит за рамки данного руководства.

Имя пользователя, которое вы вводите, появляется только в Amazon IAM, и оно даже не то, которое вы используете для SMTP-сервера. По умолчанию у него есть права на отправку электронной почты с любого домена, который вы добавляете в этот регион. Нажмите «Создать», когда вы довольны своей креативностью именования.

Учетные данные Amazon SES SMTP

Запишите эти два значения (скриншот – фальшивка), так как они показаны только один раз. Вам нужно будет добавить оба из них в фрагмент PHP (далее), и имя, показанное здесь, будет вашим действительным пользователем SMTP, а не тем, с кем вы пришли, ни вашим электронным письмом.

PHP-фрагмент WordPress для отправки почты с Amazon

Чтобы включить фрагмент, добавьте следующий PHP на свои сайты WordPress :

/** * Use Amazon SES for outgoing email. */ include_once('/var/www/amazon-ses.php');

Путь может отличаться для вас! Поместите файл в центральное место, над корнем документа вашего vhosts. Он может дать любому вашему сайту доступ к почтовому серверу, но вы также можете использовать фрагмент напрямую, не включая. Наконец, вот оно используйте:

<?php

// Amazon SES instead PHP mail.

add_action( ‘phpmailer_init', ‘use_amazon_ses' );

function use_amazon_ses( $phpmailer ) {

     $phpmailer->isSMTP();

     $phpmailer->SMTPAuth = true;

    

$phpmailer->Username = ‘ZV1BYJE0FRVKR5FTPHFL';

    

$phpmailer->Password = ‘K2ZZ&lTm8P%7*BB81EvZyWh2F35n*2@SF';

     $phpmailer->Host = 'email-smtp.eu-west-1.amazonaws.com';

     $phpmailer->Port = 587;

     $phpmailer->SMTPSecure = ‘tls';

}

Не забудьте изменить Имя пользователя, Пароль и Хост на ваши значения! Таким образом, вы переконфигурируете PHPMailer, который WordPress использует для скрытой отправки почты через Amazon. Вызывается хук, phpmailer_initкоторый дает вам доступ к $phpmailerобъекту. В WordPress будет использоваться практически все, что зависит от класса, упомянутого выше. Мы протестировали контактную форму 7, Elementor и сам WordPress для отправки – все работает отлично

Альтернатива

Я хотел посмотреть, можно ли использовать Mailgun вместо SES, поскольку мы уже используем Mailgun для пересылки входящей почты в Gmail. Конечно вы можете! Amazon не ограничивает вас своим почтовым сервисом. Таким образом, вам не нужно использовать SES, Mailgun в порядке. Читайте все о Mailgun в связанной статье, для получения и отправки почты через них.

Просто измените приведенный выше фрагмент на учетные данные Mailgun. Однако одно предостережение заключается в том, что Mailgun дает вам разных пользователей / пропусков для каждого домена, поэтому приведенная выше модель центральной конфигурации не будет работать так хорошо. Пропустите включаемую часть и добавьте фрагмент непосредственно в functions.php вашей дочерней темы для каждого сайта.

Проверьте отправку электронной почты

Выйдите из WordPress и используйте ссылка с экрана входа в систему для сброса пароля электронной почты. Вы можете отказаться от электронного письма, которое придет с wordpress@example.com; это только для тестирования. Наконец, ваш сайт WordPress может отправлять почту из Amazon EC2, и вы точно знаете, как он выполняет эту задачу! Более того, вы скоро начнете получать транзакционные электронные письма, подобные этим:

WordPress может отправлять электронную почту с Amazon EC2

Источник записи: https://letswp.io

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее