#smtp #airflow #smtp-auth
Вопрос:
Я настраиваю SMTP
службу на Airflow 2.1.2
. Я получаю эту ошибку, которая совершенно очевидна:
smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. Learn more atn5.7.0 https://support.google.com/mail/?p=WantAuthError w5sm3433302wra.87 - gsmtp'
Но аутентификация завершена, я использую электронное письмо с аутентификацией в 2 этапа, поэтому я создал пароль приложения и распознал действие на вкладке безопасность учетной записи Google..
Моя установка такова:
AIRFLOW__EMAIL__EMAIL_BACKEND airflow.utils.email.send_email_smtp
AIRFLOW__SMTP__SMTP_HOST smtp.gmail.com
AIRFLOW__SMTP__SMTP_MAIL_FROM my email
AIRFLOW__SMTP__SMTP_PASSWORD my app pwd of 16 chars
AIRFLOW__SMTP__SMTP_PORT 587
AIRFLOW__SMTP__SMTP_SSL False
AIRFLOW__SMTP__SMTP_STARTTLS True
AIRFLOW__SMTP__SMTP_USER my email
Я проверил, и там нет дополнительного места или чего-то подобного ни в pwd, ни в электронной почте.
Почему он возвращает требуемую аутентификацию, когда аутентификация действительно выполнена?
Ответ №1:
Не знаю, почему это не работает. Но видишь ли ты:
Fetching SMTP credentials from configuration variables will be deprecated in a future
предупреждение? Вам следует это сделать, если будут использоваться ваши переменные среды.
Если вы его не видите, то, скорее всего, у вас есть smtp_default
подключение в базе данных подключений.
В Airflow 2 аутентификация для SMTP была приведена на тот же уровень, что и для других соединений, и вместо передачи пользователя/пароля через переменную среды они должны быть настроены как логин/пароль в соединении «smtp_default».
Переменные по-прежнему должны работать как резервные, но если у вас уже создано smtp_default
соединение и настроен какой-либо логин/пароль (даже пустой), они будут использоваться вместо переменных ENV.
В вашем случае, скорее всего, решением будет установить логин/пароль в соединении.
Комментарии:
1. Я не вижу
Fetching SMTP credentials from configuration variables will be deprecated in a future
ни в журналах задач, ни в журналах планировщика. Я проверил, и в воздушном потоке не существует никакогоsmtp_default
соединения. К какому типу это должно быть? Я не вижу типа при создании нового соединения.SMTP
Поэтому я не знаю, какое соединение я должен создать.2. Вы можете использовать тип HTTP (для этого подойдет любой тип, и да, это вводит в заблуждение). Вы также можете установить соединение с помощью переменной среды или секретного бэкенда — тогда вы не увидите его в БД
3. Настройка соединения исправила это! Спасибо!