Настройка почты, отправка через SMTP, настройка DKIM
Конфигурационный файл размещается в modules/core/config/mail.php
. Стандартно используется опция default
, для которой задан драйвер sendmail
:
'default' => array (
'driver' => 'sendmail',
),
вместо sendmail
укажите драйвер smtp
.
Далее настройте секцию с параметрами драйвера smtp
:
'smtp' => array (
'driver' => 'smtp',
'username' => 'address@domain.com', // Логин
'password' => 'password', // Пароль
'host' => 'ssl://smtp.server.com', // для SSL используйте 'ssl://smtp.server.com', для TLS 'smtp.server.com'
'port' => 465, // порт 25, для SSL порт 465, для TLS порт 587
'timeout' => 10,
'log' => FALSE,
'options' => array(
'ssl' => array(
'verify_peer' => FALSE,
'verify_peer_name' => FALSE,
'allow_self_signed' => TRUE
)
)
)
Мы можем подключиться к портам 465 (SMTP over SSL) или 587 (STARTTLS), если необходим TLS, то установите опцию tls в TRUE и порт в 587:
'smtp' => array ( 'driver' => 'smtp', ... 'port' => 587, 'tls' => TRUE, 'timeout' => 10, ... )
Если адрес электронной почты отличается от username, то используйте дополнительную опцию from с указанием адреса электронной почты:
'smtp' => array (
'driver' => 'smtp',
'username' => 'username', // Логин
'password' => 'password', // Пароль
'from' => 'address@domain.com', // Адрес эл. почты
'host' => 'smtp.server.com', // для SSL используйте ssl://smtp.server.com
'port' => '25', // Порт, для SSL укажите порт 465
'options' => array(
'ssl' => array(
'verify_peer' => FALSE,
'verify_peer_name' => FALSE,
'allow_self_signed' => TRUE
)
)
)
Для отладки включите опцию 'log' в значение TRUE, не забудьте отключить опцию после завершения отладки, так как данные имеют большой размер в логах.
Указание отдельных опций для сайтов
Возможно отдельное задание опций отправки почты для выбранных сайтов, при этом для неуказанных отдельно сайтов будут использоваться общие параметры.
'smtp' => array (
'driver' => 'smtp',
// Общие настройки для всех сайтов
'username' => 'address@domain.com', // Адрес электронной почты
'port' => '25', // Порт, для SSL укажите порт 465
'host' => 'smtp.server.com', // для SSL используйте ssl://smtp.server.com
'password' => 'password', // Пароль
// Индивидуальные настройки для сайта с ID 17
17 => array(
'username' => 'address2@domain2.com', // Адрес электронной почты
'port' => '25', // Порт, для SSL укажите порт 465
'host' => 'smtp.server.com', // для SSL используйте ssl://smtp.server.com
'password' => 'password', // Пароль
)
)
Отдельное указание доступно с версии 6.5.9. Секция 'options' добавлена в версии 6.6.8. Поддержка TLS и указание timeout добавлены в версии 6.8.4.
DKIM
Для того, чтобы письма, отправляемые из системы управления, проходили проверку DKIM, необходимо соединиться с сервером по SSH и создать открытый и закрытый ключ. * доступно с версии 7.0.6
Генерация открытого и закрытого ключа
Создаем закрытый ключ, указав вместо domain.com имя домена:
openssl genrsa -out domain.com.privatekey.pem 1024
где «domain.com.privatekey.pem» — файл приватного ключа, «1024» — длина ключа.
Сохранить путь к сгенерированному ключу, файл будет создан в той же директории, откуда выполнялась команда.
Создаем открытый ключ, указав вместо domain.com имя вашего домена:
openssl rsa -in domain.com.private.pem -out domain.com.public.pem -pubout
где «domain.com.public.pem» — файл публичного ключа
Содержимое файла открытого ключа domain.com.public.pem после генерирования ключа будет следующим:
-----BEGIN PUBLIC KEY----- ваш открытый ключ -----END PUBLIC KEY-----
Указание открытого ключа в NS-записи домена
Через панель регистратора домена, в настройках домена создайте TXT-запись для поддомена mail._domainkey со следующим содержимым:
v=DKIM1; k=rsa; p=ваш-открытый-ключ
Ключ должен быть указан в одну строку, без BEGIN и END.
Указание ключа в настройках системы управления
В настройках драйвера или в настройках конкретного сайта укажите использование DKIM и путь к ключу, пример указания для сайта с кодом 2:
return array ( 'default' => array ( 'driver' => 'sendmail', ), 'sendmail' => array ( 'driver' => 'sendmail', 2 => array( 'dkim' => array( 'private_key' => '/home/user4567/domain.com.private.pem', 'selector' => 'mail', ) ), );
Кроме приведенных опций, для DKIM могут быть заданы следующие:
array( 'hash' => 'sha256', // sha256|sha1 'passphrase' => '', 'selector' => 'mail', 'domain' => NULL, 'identity' => NULL, 'body_canonicalization' => 'relaxed', )
Особенности настройки почтовых серверов
Яндекс.Почта
Для подключения к почтовому ящику Яндекс из стороннего приложения не подходит обычный пароль, который используется для входа в учетную запись на Яндексе, создайте специальный пароль приложения.
Также может понадобиться разрешить доступ к почтовому ящику с помощью почтовых клиентов, для этого в почте выберите шестерёнку, затем Все настройки → Почтовые программы.
В качестве SMTP-сервера укажите ssl://smtp.yandex.ru, порт 465, не указывать TLS.
Комментарии
-
Без темы
для в сех сайтов с учетом того что емейлы у всех сайтов разные! соответственно смтп нужно для каждого сайта отдельное
Без темы
С версии 6.5.9 данное решение будет доступно.
Без темы
И как именно это сделать?
В файл /modules/core/config/mail.php в какие именно части нужно добавить настройки для конкретного id сайта?Без темы
Выше пример с 17 сайтом:
// Индивидуальные настройки для сайта с ID 17
17 => array( ...Без темы
Это получаются индивидуальные настройки сайта для smtp.
А нельзя аналогичным образом указать прям индивидуальные настройки сайта? Ну, допустим, чтобы дефолтным драйвером системы был sendmail, а конкретный сайт использовал smtp
-
Без темы
Если у нас на одном движке стоит несколько сайтов, то этот способ перехода на СМТП будет действовать для какого сайта?
Как сделать СМТП для всех сайтов?