Настройка отправки писем через SendGrid с помощью SMTP
Перед нами стояла задача обойти блокировку массовой рассылки писем с сайта. Из-за использования локального почтового сервера многие письма попадали клиентам в спам. Для этого необходимо было найти и интегрировать сервис-посредник для отправки писем.
Выбор пал на SendGrid (https://sendgrid.com/) - подходящие условия, удобство интеграции.
Исходные данные:
- сайт на 1С-Битрикс
- сервер с подключенным пакетом msmtp для отправки писем
- почта клиента с привязкой домена сайта к Яндекс.Почте
SendGrid предоставляет возможность отправлять письма, как с помощью собственного API, так и через протокол SMTP. Поэтому можно интегрировать как через код сайта, так и на уровне сервера. Нам подошел последний способ интеграции - на уровне сервера. Он более универсальный - не нужно вносить какие-либо правки в код сайта.
Производим интеграцию по шагам.
Шаг 1. Прописать DNS записи для почты.
Для этого на сайте SendGrid’а заходим в раздел Sender Authentication и следуя инструкциям получаем CNAME записи.
Так как наш домен был делегирован на сервера Яндекса, прописывать пришлось именно там.
Здесь хотелось бы подчеркнуть, что при добавлении DNS записи для почты не следует в поле “Хост” (HOST) указывать полное значение как говорит нам SendGrid - только значение до домена сайта.
Таким образом проходим верификацию. И полдела сделано.
Шаг 2. Настройка отправки писем с сайта.
После привязки почты нам необходимо настроить отправку всех писем с сайта через новый сервис. В нашем случае проект был размещен на сервере на базе BitrixVM. По умолчанию на сервере используется пакет msmtp, служащий для отправки писем. С помощью его мы и настроим SMTP интеграцию.
На сайте SendGrid’а в Setup Guide выбираем опцию SMTP Relay.
На следующем шаге нас просят создать уникальный ключ, который позволит нам использовать их API.
Копируем полученные данные и переходим к нашему серверу.
Конфигурационный файл находится по данному пути - /home/bitrix/.msmtprc. В нем мы видим следующее:
account defaultlogfile /home/bitrix/.msmtp.log #(расположение логов)host smtp.sendgrid.net #(выданное название сервера)port 587 #(порт для передачи данных. Именно с этим портом интеграция работает корректно)from info@email.ru #(адрес используемой нами почты)keepbcc onauth onuser apikey #(выданный логин)password <пароль> #(выданный пароль)tls on #(обязательное условие для работы с Яндекс сервером)tls_certcheck off
Шаг 3. Проверка работоспособности.
Почти готово. Осталось убедится, что в настройках нашего сервера указана верная служба для отправки писем. Для этого открываем файл /etc/php.d/bitrixenv.ini и проверяем чтобы в поле sendmail_path было прописано msmtp -t -i.
Если это не так, меняем значение на нужное и перезапускаем apache.
Для моментальной проверки использовалась консольная команда:
echo -e "test message" | /usr/bin/msmtp --debug -t -i name@site.ru.
Переходим на страницу интеграции SendGrid и проходим верификацию.
Вот и все. Теперь все письма будут автоматически отправляться через новый сервис, таким образом мы избавились от проблемы, когда письма приходят к клиентам данного сайта в папку Спам.