首页 > 解决方案 > 服务器不支持 Airflow SMTP AUTH 扩展

问题描述

使用具有以下airflow.cfg配置的 Airflow 2.0.1。我正在尝试发送电子邮件通知。我的 gmail 帐户 2 因素身份验证已激活。

smtp_host = smtp.gmail.com
smtp_starttls = False
smtp_ssl = False
smtp_user = <my_gmail_user@gmail.com>
smtp_password = <my_password>
smtp_port = 587
smtp_mail_from = <my_gmail_user@gmail.com>
smtp_timeout = 30
smtp_retry_limit = 5

我的电子邮件任务

send_email_notification = EmailOperator(
        task_id='send_email_notification',
        to='<my_another_working_email>@hotmail.com',
        subject='Airflow mail test',
        html_content="<h3> Airflow mail test</h2>"
    )

但我收到以下错误。在气流安装期间,我指定admin@vbo.local为管理员用户邮件,但实际上并不存在。我不确定这是错误的原因。

ERROR - SMTP AUTH extension not supported by server.
Traceback (most recent call last):
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1112, in _run_raw_task
    self._prepare_and_execute_task_with_callbacks(context, task)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1285, in _prepare_and_execute_task_with_callbacks
    result = self._execute_task(context, task_copy)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1315, in _execute_task
    result = task_copy.execute(context=context)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/operators/email.py", line 87, in execute
    mime_charset=self.mime_charset,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
    **kwargs,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
    send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
    conn.login(smtp_user, smtp_password)
  File "/usr/lib64/python3.6/smtplib.py", line 697, in login
    "SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
[2021-05-20 16:04:49,885] {taskinstance.py:1503} INFO - Marking task as FAILED. dag_id=my_data_pipeline, task_id=send_email_notification, execution_date=20210520T125758, start_date=20210520T130449, end_date=20210520T130449
[2021-05-20 16:04:49,914] {email.py:184} INFO - Email alerting: attempt 1
[2021-05-20 16:04:50,227] {email.py:184} INFO - Email alerting: attempt 1
[2021-05-20 16:04:50,484] {taskinstance.py:1509} ERROR - Failed to send email to: admin@vbo.local
[2021-05-20 16:04:50,484] {taskinstance.py:1510} ERROR - SMTP AUTH extension not supported by server.
Traceback (most recent call last):
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1112, in _run_raw_task
    self._prepare_and_execute_task_with_callbacks(context, task)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1285, in _prepare_and_execute_task_with_callbacks
    result = self._execute_task(context, task_copy)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1315, in _execute_task
    result = task_copy.execute(context=context)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/operators/email.py", line 87, in execute
    mime_charset=self.mime_charset,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
    **kwargs,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
    send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
    conn.login(smtp_user, smtp_password)
  File "/usr/lib64/python3.6/smtplib.py", line 697, in login
    "SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1852, in email_alert
    send_email(self.task.email, subject, html_content)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
    **kwargs,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
    send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
    conn.login(smtp_user, smtp_password)
  File "/usr/lib64/python3.6/smtplib.py", line 697, in login
    "SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1507, in handle_failure
    self.email_alert(error)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1854, in email_alert
    send_email(self.task.email, subject, html_content_err)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
    **kwargs,
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
    send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
  File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
    conn.login(smtp_user, smtp_password)
  File "/usr/lib64/python3.6/smtplib.py", line 697, in login
    "SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
[2021-05-20 16:04:50,538] {local_task_job.py:146} INFO - Task exited with return code 1

标签: emailairflow

解决方案


尝试将 smtp 配置更新为smtp_starttls = True 所有主要电子邮件客户端都使用安全连接。关于 StartTLS,它是一个协议命令,用于通知电子邮件服务器电子邮件客户端想要从不安全的连接升级到使用 TLS 或 SSL 的安全连接。


推荐阅读