Google SMTP возвращает требуемую аутентификацию, но это делается как пароль приложения

#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. Настройка соединения исправила это! Спасибо!