Настройка Яндекс — почты для Laravel и модуля swiftmailer
Пришлось намедни настройки Яндекс-почту для проект ана Laravel и хотел бы поделиться опытом настройки, возможно кому-то пригодится материал.
Генерация пароля приложений для SMTP Яндекс — почты
Переходим в свой почтовый ящик и выбераем пункт «Почтовые программы». В данном разделе нужно проставить галочку рядом с пунктом «С сервера imap.yande.ru по протоколу IMAP». В способе авторизации оставляем галочку только напротив пункта «Пароли приложений и OAuth-токены»
Раздел Почтовые программыДалее открываем страницу «Управление аккаунтом» и в разделе «Пароли и авторизации» создаем новый пароль для входа в сторонние программы. В высветившимся окне подтверждаем действие, нажав на кнопку «Включить пароли приложений»
Раздел Включить пароли приложенийВключение паролей для приложенийЧтобы создать пароль для приложения, введим пароль для своего аккаунта и он не будет передаваться сторонним сервисам
Задание пароля для Yandex SMTPВ типе приложений выбераем «Почта» и введите название для пароля.
Мы вводим название сервиса, чтобы не путаться. Затем нажмите на кнопку «Создать»
Нам автоматом будет сгенерирован новый пароль и нужно его использовать, как «Пароль SMTP» и «Пароль IMAP» при задании параметров в .env Laravel
Новый сгенерированный парольНастройка параметров .env в Laravel
Дам сразу пример правильно заполненных параметров и в этом нет ничего сложно. Просто надо прописать нужные данные для нужных перменных
... MAIL_MAILER=smtp MAIL_HOST=smtp.yandex.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=mypassword MAIL_ENCRYPTION=tls [email protected] MAIL_FROM_NAME="${APP_NAME}" ...
Список возможных ошибок
Приведу ниже 2 вида ошибок, которые мне встретились при настройке, чтобы при поиске вы попали сюда:
первая ошибка связана с тем, что модуль не может соединиться с сервером почты yandex
Зачастую это связано с тем, что указан неправильный порт или авторизационные данные.
Порт нужно указать, как 587, а не 465
{message: "Connection to tcp://smtp.yandex.com:465 Timed Out", exception: "Swift_TransportException",…}
exception: "Swift_TransportException"
file: "/var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php"
line: 475
message: "Connection to tcp://smtp.yandex.com:465 Timed Out"вторая ошибка связана с тем, что есть доступ к хосту, но сервер не может обработать отправку сообщения
Зачастую это связано с тем, что не указан/неправильно указан обратный адрес. Яндекс требует чтобы почта отправлялась с его реального адреса, а если вы не указали его явно, Laravel подставит там свою заглушку в файле config/mail.php, т.е. парметр [email protected] нужно указать реальный в файле .env, желательно относящийся к домену *@yandex.ru
exception: "Swift_TransportException" file: "/var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php" line: 459 message: "Expected response code 250 but got code \"553\", with message \"553 5.7.1 Sender address rejected: not owned by auth user. 1656960714-utTzdALh0H-psRmqtSH\r\n\""
Пожалуйста, оцените материал
Sample rating item
Настройка SMTP в Drupal для отправки через Яндекс Почту
Не будем долго писать, что отправка уведомлений с сайта и доставка писем крайне важная задача — будь то обновления по безопасности или заявки. Да, по умолчанию отправляются и сервером, но могут попадать в спам. Отличным решением является отправка через какой-нибудь популярный сервер — в нашем примере это Яндекс Почта.
Короткий алгоритм действий:
- включаем в веб-интерфейсе яндекс почты IMAP, авторизация по паролю приложений
- создаем пароль приложений (да, нужно)
- настраваем SMTP модуль (заработало на последней DEV версии для д7 — https://ftp.
drupal.org/files/projects/smtp-7.x-1.x-dev.tar.gz) - и еще важно — email отправителя должен быть тем же, соответственно в настройках сайта и вебформы указываем этот же емейл, которым авторизуемся на smtp-сервере
- на некоторых хостинга порты для SMTP закрыты — запросите в поддержке, чтобы открыли, или смените хостинг.
Ну а далее подробно, вдруг у вас ошибка на каком-то из шагов возникла.
Настройка SMTP на стороне Яндекса
Сначала включаем доступ к ящику по imap: Все настройки — Почтовые программы:
Способ авторизации по IMAP Пароли приложений и OAuth-токены
Далее создаем пароль приложений
Откройте страницу Управление аккаунтом.
- В разделе Пароли и авторизация выберите Включить пароли приложений. Подтвердите действие и нажмите Создать новый пароль.
Если вы включили двухфакторную аутентификацию, просто нажмите Создать пароль приложения.
Выберите тип приложения Почта.

Придумайте название пароля, например укажите название приложения, для которого вы создаете пароль. С этим названием пароль будет отображаться в списке.
Нажмите кнопку Создать. Пароль приложения отобразится во всплывающем окне.
Созданный пароль можно увидеть только один раз! Сразу его запишите. Если вы ввели его неправильно и закрыли окно, удалите текущий пароль и создайте новый.
Настройка модуля SMTP в Drupal
В данном примере используется Drupal 7.
Данные для настройки исходящей почты:
Еще немного
Отправителем по умолчанию используется почта, указанная в Информации о сайте (/admin/config/system/site-information). И очень важно, чтобы она была той же, который мы авторизуемся на сервере!
Если все сделано правильно, вы можете отправить тестовое письмо прямо со страницы настроек SMTP. Даже на mail.ru приходят)
Решение проблем с отправкой почты через Яндекс в Drupal SMTP
Не верный пароль —
Error: authentication failed: Invalid user or passworSMTP -> get_lines(): $str is "535 5.7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO " SMTP -> get_lines(): $data was "535 5.7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO " SMTP -> ERROR: Password not accepted from server: 535 5.7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO
Если увидели в логах что-то вроде Error: authentication failed: Invalid user or password! — вероятно вы пытались использовать пароль входа в почту. Нужен именно ПАРОЛЬ ПРИЛОЖЕНИЙ!!!
Могу ошибиться, но сдается мне что очередность важна — включаем сначала IMAP, потом создаем Пароль приложений.
Адрес отправителя не принадлежит пользователю — Sender address rejected: not owned by auth user
SMTP -> get_lines(): $str is "553 5.7.1 Sender address rejected: not owned by auth user. 1658318601-iuqYYKYgIL-3LiSoi8c " SMTP -> get_lines(): $data was "553 5.7.1 Sender address rejected: not owned by auth user.1658318601-iuqYYKYgIL-3LiSoi8c " SMTP -> FROM SERVER: 553 5.7.1 Sender address rejected: not owned by auth user. 1658318601-iuqYYKYgIL-3LiSoi8c
Это означает, что отправитель не соответствует авторизованному на сервере логину. В друпал 7 по умолчанию он настраивается /admin/config/system/site-information
Кстати, в настройках модуля Webform то же есть — будьте внимательны — /admin/config/content/webform
Теги
Drupal
Другие программы — Mail. Yardım
Яндекс.Почта Destek Ekibi İngilizce olarak yanıt verir. Mümkünse siz de Bize sorularınızı İngilizce olarak gönderin, böylece daha hızlı çözüm uretebilir ve size yardimcı olabiliriz.
- Протокол IMAP для программ с указанием
- Протокол POP3 для программ с указанием
- Gönderimi sadece Протокол SMTP с указанием
Стандарт IMAP, POP3 и SMTP-протокола, которые можно использовать для обмена сообщениями по электронной почте.
IMAP-протокол kullanıldığında e-post Programı sunucu ile eşitlenir ve e-posta kutunuzun klasör yapısını kaydeder.
E-posta programı üzerinden gönderdiğiniz e-postalar sadece bilgisayarda değil sunucuda da kaydedilecektir. Bu e-postalara farklı cihazlardan erişebileceksiniz.
Яндекс.Почта объявляет «Электронная почта программы» bölümünü açın.
imap.yandex.ru Sunucusundan Протокол IMAP Göre ve Uygulama şifreleri ve OAuth belirteçleri opsiyonlarını seçin.
Değişiklikleri kaydedin.
Нет. E-postalarınızın silinmelerinden sonra bir süre daha e-posta programınızda saklanmasını istiyorsanız IMAP’de silinmiş olarak işaretlenmiş e-postaların otomatik olarak silinmesini devre dışı bırak opsiyonunu seçin. E-posta programını yeniden başlattıktan hemen sonra iletilerin e-posta kutusundan kalıcı olarak silineceklerini unutmayın.
Hesap yönetimi sayfasını açın.
Şifreler ve Yetkilendirme bölümünde Uygulama şifrelerini etkinleştir’i seçin. İşlemi onaylayın ve Yeni şifre oluştur’a tıklayın.

İki faktörlü kimlik doğrulamayı etkinleştirdiyseniz, sadece Uygulama şifresi oluştur’a tıklayın.
Mail uygulama türünü seçin.
Şifre oluşturduğunuz uygulama adını belirttiğiniz gibi bir şifre adı düşünün. Şifre bu adla liste görüntülenecektir.
Oluştur butonuna tıklayın. Uygulama şifresi açılır-pencerede görüntülenir.
Сынырлама. Oluşturulan şifre yalnızca bir kez görüntülenebilir. Yanlış girdiyseniz ve pencereyi kapattıysanız, geçerli şifreyi silip yenisini oluşturun.
- Гелен е-почта
е-почта sunucusunun адреси —
imap.yandex.com.tr;bağlantı güvenliği — SSL;
порт — 993.
- Gönderilen e-posta
e-posta sunucusunun адрес —
smtp.;
yandex.com.tr bağlantı güvenliği — SSL;
порт — 465.
шифресини гирин. Önceki adımda e-posta uygulaması için oluşturduğunuz şifreyi kullanın. «[email protected]» türünde olan bir e-posta hesabından e-postanın alınmasını ayarlıyorsanız, «@» işaretinden önce gelen kısım kullanıcı adı olarak kabul edilecektir. Kurumlar için Yandex 360 kullanıyorsanız kullanıcı adı olarak e-posta hesabınızın tam adresini belirtmelisiniz.
Уяри. Yandex’te электронной почты göndermek için интернет sağlayıcınızın электронной почты sunucusunu kullanmanız önerilmez.
IMAP protokolün desteği, e-posta programında ilk defa giriş yaptığınızda otomatik olarak etkinleştirilecektir.
Протокол POP3 kullanıldığında, Tüm ayarlar → E-posta programları menus belirteceğiniz klasörlerden tüm e-postalar e-posta programı tarafından bilgisayarınıza Gelen Kutusu klasörüne kaydedile cektir. İhtiyaç duyduğunuzda, e-postalari istediğiniz klasörlere otomatik olarak taşımak için e-posta programında filtreler ayarlayabilirsiniz.
Gönderdiğiniz e-postalar sadece bilgisayarınızda depolanacaktır.
Яндекс.Почта сообщает о программе «Электронная почта».
Протокол POP3 gore pop.yandex.ru sunucusundan seçeneğini etkinleştirin.
Değişiklikleri kaydedin.
Нет. Протокол Sunucudan POP3 с использованием электронной почты, независимой от Яндекс.Почты. Электронная почта. E-postalari e-posta programı yardımıyla silmek istiyorsanız IMAP протокол kullanın.
Hesap yönetimi sayfasını açın.
Şifreler ve Yetkilendirme bölümünde Uygulama şifrelerini etkinleştir’i seçin. İşlemi onaylayın ve Yeni şifre oluştur’a tıklayın.
İki faktörlü kimlik doğrulamayı etkinleştirdiyseniz, sadece Uygulama şifresi oluştur’a tıklayın.
Mail uygulama türünü seçin.
Şifre oluşturduğunuz uygulama adını belirttiğiniz gibi bir şifre adı düşünün. Şifre bu adla liste görüntülenecektir.

Oluştur butonuna tıklayın. Uygulama şifresi açılır-pencerede görüntülenir.
Сынырлама. Oluşturulan şifre yalnızca bir kez görüntülenebilir. Yanlış girdiyseniz ve pencereyi kapattıysanız, geçerli şifreyi silip yenisini oluşturun.
- Гелен е-почта
е-почта sunucusunun адреси —
pop.yandex.com.tr;bağlantı güvenliği — SSL;
порт — 995.
- Gönderilen e-posta
e-posta sunucusunun adresi —
smtp.yandex.com.tr;bağlantı güvenliği — SSL;
порт — 465.
шифресини гирин. Önceki adımda e-posta uygulaması için oluşturduğunuz şifreyi kullanın. «[email protected]» türünde olan bir e-posta hesabından e-postanın alınmasını ayarlıyorsanız, «@» işaretinden önce gelen kısım kullanıcı adı olarak kabul edilecektir.
Kurumlar için Yandex 360 kullanıyorsanız kullanıcı adı olarak e-posta hesabınızın tam adresini belirtmelisiniz.
Уяри. Yandex’te электронной почты göndermek için интернет sağlayıcınızın электронной почты sunucusunu kullanmanız önerilmez.
POP3 protokolüne göre Spam dahil her klasörden e-postanın alınmasını ayarlayabilirsiniz. Bunun için Tüm ayarlar → E-posta programları menusünü açın ve istediğiniz klasörleri işaretleyin.
E-posta kutusunun içeriği e-posta programları tarafından indirilirken, varsayılan olarak e-postalar okundu olarak işaretlenmez. Aldığınız e-postaları okundu olarak işaretlemek istiyorsanız ilgili seçeneği etkinleştirin.
Tek bir SMTP protokolünün ayarlanması genellikle sadece e-postalari gönderen fakat onları kabul etmeyen cihazlarda gereklidir.
Яндекс.Почта объявляет «Электронная почта программы» bölümünü açın.
imap.yandex.ru Sunucusundan Протокол IMAP Göre ve Uygulama şifreleri ve OAuth belirteçleri opsiyonlarını seçin.

Değişiklikleri kaydedin.
Hesap yönetimi sayfasını açın.
Şifreler ve Yetkilendirme bölümünde Uygulama şifrelerini etkinleştir’i seçin. İşlemi onaylayın ve Yeni şifre oluştur’a tıklayın.
İki faktörlü kimlik doğrulamayı etkinleştirdiyseniz, sadece Uygulama şifresi oluştur’a tıklayın.
Mail uygulama türünü seçin.
Şifre oluşturduğunuz uygulama adını belirttiğiniz gibi bir şifre adı düşünün. Şifre bu adla liste görüntülenecektir.
Oluştur butonuna tıklayın. Uygulama şifresi açılır-pencerede görüntülenir.
Сынырлама. Oluşturulan şifre yalnızca bir kez görüntülenebilir. Yanlış girdiyseniz ve pencereyi kapattıysanız, geçerli şifreyi silip yenisini oluşturun.
е-почта sunucusunun адреси —
smtp.yandex.com.tr;bağlantı güvenliği — SSL;
порт — 465.

Önceki adımda e-posta uygulaması için oluşturduğunuz şifreyi kullanın.
электронная почта — Передача почтовых запросов ИЗ mail.ourhost.net В pop/smtp/imap.otherhost.net
спросил
Изменено 10 лет, 2 месяца назад
Просмотрено 202 раза
Проблемы с внутренним почтовым сервером и желание перейти на внешний почтовый провайдер (pdd.yandex.ru).
Я умею переносить пользователей и их почту (большое спасибо за API к Яндексу), но в текущей конфигурации у нас один хост как сервер pop3/smtp/imap (mail.ourhost.net) и теперь нам нужно работать с тремя разные сервера — pop/smtp/imap.yandex.ru.
Основной вопрос, как прозрачно передавать входящие запросы пользователей с mail.ourhost.net на pop.
Есть идеи? Спасибо.
- электронная почта
- прокси
- перенаправление портов
1
Вы поставили машину по адресу mail.outhost.net, которая ретранслирует трафик по порту POP3 на pop.yandex.ru, по порту IMAP4 на imap.yandex.ru и т.д.
Включить переадресацию IP (иначе ядро будет отбрасывать перенаправленные пакеты):
echo 1 >/proc/sys/net/ipv4/ip_forward
Порт ретрансляции 110 на pop.yandex.ru:
iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination pop.yandex.ru iptables -t nat -A POSTROUTING -p tcp -d W --dport 110 -j MASQUERADE
Есть ряд проблем с этим:
- Теперь у вас есть новая машина, которую вы должны обслуживать.
- Пропускная способность этого хоста в 2 раза больше пропускной способности серверов Яндекса.
Это может быть много! - У вас есть единая точка отказа.
- Если Яндекс изменит свой IP-адрес (или будет использовать несколько IP-адресов), вы всегда будете гоняться за Яндексом.
Если бы я использовал эту технику, я бы использовал ее только для поиска пользователей, которые еще не изменили свою конфигурацию. Ведите журналы, указывающие, какие IP-адреса используют эту службу, и убедитесь, что вы отследили этих людей и правильно настроили их машины как можно скорее.
Я не рекомендую использовать эту технику как постоянное решение. Если вы настолько перегружены, что ваши «временные» решения часто превращаются в постоянные решения, не делайте этого вообще. Вместо этого позвольте людям некоторое время оставаться без электронной почты, пока вы посещаете каждую машину, чтобы правильно ее настроить. Если у Яндекса есть опция веб-почты, они могут использовать ее, пока ждут. Перенастройку клиентов можно автоматизировать с помощью PowerShell; на самом деле вам не следует посещать каждую машину.


php"
line: 459
message: "Expected response code 250 but got code \"553\", with message \"553 5.7.1 Sender address rejected: not owned by auth user. 1656960714-utTzdALh0H-psRmqtSH\r\n\""
7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO "
SMTP -> get_lines(): $data was "535 5.7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO "
SMTP -> ERROR: Password not accepted from server: 535 5.7.8 Error: authentication failed: Invalid user or password! 1658318354-OLAk1iQvF2-xDj8c0BO
1658318601-iuqYYKYgIL-3LiSoi8c "
SMTP -> FROM SERVER: 553 5.7.1 Sender address rejected: not owned by auth user. 1658318601-iuqYYKYgIL-3LiSoi8c