Конфигурационный файл размещается в 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.
Mail.ru
Для подключения к почтовому ящику Mail.ru из стороннего приложения не подходит обычный пароль, который используется для входа в учетную запись, создайте специальный пароль приложения. Перейдите в настройки Mail ID → «Безопасность» → «Пароли для внешних приложений», нажмите Добавить, введите название приложения, чтобы не забыть, для какой программы пароль, скопируйте сгенерированный пароль приложения.