Устранение неполадок sSMTP: Ошибка авторизации

Вопрос или проблема

Мои требования:

  • отправить электронное письмо из терминала (для пакетной обработки)
  • приставить pdf файл к этому электронному письму (pdf-файлы будут идентичны для всех получателей, кроме водяного знака)
  • указать адрес для ответа ([email protected])

Я пробовал “самый простой ответ для отправки однострочных сообщений через gmail – использовать ssmtp”, и несколько вариантов, и продолжаю получать:

laptop sSMTP[19226]: Ошибка авторизации (535 5.7.8
https://support.google.com/mail/?p=BadCredentials d13sm3920147qkj.27 –
gsmtp)

Настройки Google:

  • IMAP включен
  • Разрешить менее безопасные приложения – ВКЛЮЧЕНО

Для каждой настройки ssmtp.conf, которую я пробовал, я сделал открыть капчу перед:

$echo "Тестирование...1...2...3" | ssmtp [email protected]

Смотря только на указанную тему, нет единого мнения о том, как должен быть настроен /etc/ssmtp/ssmtp.conf:

  • mailhub=smtp.gmail.com:587 против 465
  • UseTLS=YES против UseSTARTTLS=Yes (или оба?)
  • hostname=localhost против того, что было указано по умолчанию (в моем случае laptop)

Может кто-нибудь предложить решение, чтобы разобраться с этим, и, возможно, вставить полностью рабочий конф файл?

Есть утверждение в теме с 2017 года, что:

Вы не можете использовать внешние приложения с вашим обычным паролем, вам
необходимо перейти на https://security.google.com/settings/security/apppasswords

Так ли это? (Я не могу этого сделать)

Какие есть альтернативы?

PS:

  • ОС: Linux Mint 19 Tara
  • ssmtp был протестирован после чистой установки, предшествующей обновлению
  • Пару лет назад я мог отправлять электронные письма, используя ту же ОС (раннюю версию)
  • Чтобы убедиться, что значение AuthPass правильное, я использовал его для ручного входа в свою учетную запись google.

С следующими настройками Google:

IMAP включен
Разрешить менее безопасные приложения - ВКЛЮЧЕНО

Решение состоит в том, чтобы установить пароль приложения:
enter image description here

Примечание: Настройка паролей приложений в Google требует, чтобы двухфакторная аутентификация сначала была включена для учетной записи, для которой вы пытаетесь настроить ssmtp.

/var/ssmtp/ssmtp.conf:

#
# Конфигурационный файл для sSMTP sendmail
#
# Человек, который получает всю почту для userid < 1000
# Сделайте это пустым, чтобы отключить переписывание.
root=postmaster

# Место, куда уходит почта. Требуется фактическое имя машины, поскольку
# MX записи не учитываются. Обычно почтовые хосты называются mail.domain.com
# Изменено 27.06.2020:
# mailhub=mail
[email protected]
[email protected]
#AuthPass=[обычный пароль gmail] # это не сработает
AuthPass=[пароль, сгенерированный на https://myaccount.google.com/apppasswords]
#UseTLS=YES
#mailhub=smtp.gmail.com:465
UseSTARTTLS=Yes
mailhub=smtp.gmail.com:587

# Откуда будет казаться, что приходит почта?
#rewriteDomain=

# Полное имя хоста
hostname=laptop

# Разрешено ли пользователям устанавливать свой собственный адрес "От:"?
# ДА - Разрешите пользователю указать свой собственный адрес "От:"
# НЕТ - Используйте системный сгенерированный адрес "От:"
FromLineOverride=YES

В терминале:

$echo "Тестирование...1...2...3" | ssmtp [email protected]

Получено в моем ящике gmail:
enter image description here

PS:

  1. Я не вижу полезности голосования против без объяснения.
  2. Для второго требования, указанного в вопросе (вложение), mutt работает отлично.

ОБНОВЛЕНИЕ 01.12.2022

Используя msmtp и потому что менее безопасные приложения отключены

  1. Включите двухфакторную аутентификацию
  2. Сгенерируйте пароль приложения, используя имя=”msmtp”
  3. Создайте $ touch ~/.msmtprc, и измените его содержимое следующим образом, используя 2),
    # содержимое /home/user/.msmtprc
    # сделайте: `$ chmod 600 /home/user/.msmtprc`
    # gmail
    account [email protected]
    host smtp.gmail.com
    port 587
    tls on
    tls_starttls on
    auth on
    user google-name
    from [email protected]
    # https://myaccount.google.com/apppasswords
    password xxxxxxxxxxxxxxxx
    # учетная запись по умолчанию
    account default : [email protected]
  1. $ chmod 600 /home/user/.msmtp
  2. $ echo "Тестирование...1...2...3" | msmtp recipient.address@domain

Это отправляет на bcc, смотрите здесь для альтернатив.

ssmtp – это заброшенное программное обеспечение.

Вместо этого вам следует попробовать msmtp. Он похож на ssmtp, но лучше поддерживается и чаще используется.

Кроме того, конфигурация gmail проста. Проверьте этот хороший ресурс на вики arch

Google больше не предлагает опцию “Разрешить менее безопасные приложения – ВКЛЮЧЕНО”.
После мая 2022 года эта опция будет удалена.

https://support.google.com/accounts/answer/6010255?hl=en&utm_source=google-account&utm_medium=profile-less-secure-apps-card

Опция Пароль приложения недоступна, если вы не включили двухфакторную аутентификацию.

пароль приложения

Добавьте приложение ssmtp и сгенерируйте токен, затем вставьте токен в настройки пароля приложения.

apppwd
generatetoken

Скопируйте токен и используйте его в качестве пароля в приложении для почты, которое вы хотите интегрировать

копировать токен

enter image description here

Далее включите IMAP в gmail

imap_enable

Примечание: Убедитесь, что выбрали вариант SSL/TLS, а не STARTTLS в конфигурации почтового клиента.

Чтобы ответить на часть вопроса (потому что я знаком с решением части этой проблемы для python), у Google есть новая (по сравнению с предыдущими) функция безопасности для приложений третьих сторон. По сути, вам нужно пройти через страницу безопасности для учетной записи, которая будет отправлять электронные письма, и пройти через шаги, чтобы настроить токен аутентификации третьей стороны. Оттуда вам нужно скопировать 16-значный токен и вставить его в качестве пароля, чтобы включить отправку почты через то приложение, с которым вы пытаетесь работать.

Проблема, как уже было сказано, — это проблема аутентификации, однако ssmtp все еще можно заставить работать. Есть решение здесь.

Ниже приведена краткая версия решения:

Используйте/настройте пароль приложения в Google

  • Включите двухфакторную аутентификацию (если она еще не включена) для учетной записи gmail, которую вы хотите связать.
  • В учетной записи Google выберите «Безопасность». Выберите «Пароли приложений» в разделе «Вход в Google».
  • Сделайте здесь описание для вашего приложения. Я использовал «ssmtp на Ubuntu».
  • Сгенерируйте 16-значный пароль приложения. Запомните его!
  • Нажмите «Готово».

Теперь на компьютере, который будет отправлять электронные письма, выполните sudo nano /etc/ssmtp/ssmtp.conf

[email protected]
mailhub=smtp.gmail.com:587  
FromLineOverride=YES
[email protected]
AuthPass=myAppPassword  # Обратите внимание, это пароль, сгенерированный Google 
UseSTARTTLS=YES
UseTLS=YES

Чтобы было понятно: AuthPass должен быть вашим новым 16-значным паролем приложения, а не вашим паролем Gmail.

Это сработало для меня на Ubuntu сервере 16.04 и 18.04 LTS

Большое спасибо, это сработало для меня!

Чтобы помочь защитить вашу учетную запись, с 30 мая 2022 года, ​​Google больше не
поддерживает использование сторонних приложений или устройств, которые требуют, чтобы вы вошли
в свою учетную запись Google, используя только свое имя пользователя и пароль…

#————вот моя конфигурация ssmtp.conf ———————

root=postmaster
root=<my_username>@gmail.com

Место, куда уходит почта. Требуется фактическое имя машины, поскольку
MX записи не учитываются. Обычно почтовые хосты называются mail.domain.com

mailhub=smtp.gmail.com:587

Откуда будет казаться, что приходит почта?

RewriteDomain=<загляните: /etc/resolv.conf>

hostname=<загляните: /etc/hostname>

Полное имя хоста.
Разрешено ли пользователям устанавливать свой собственный адрес “От:”?
ДА – Разрешите пользователю указать свой собственный адрес “От:”
НЕТ – Используйте системный сгенерированный адрес “От:”

AuthUser=<my_username>@gmail.com
AuthPass=<новый сгенерированный 16-байтный код от google>

UseSTARTTLS=YES
TLS_CA_File=/etc/ssl/certs/ca-certificates.crt
FromLineOverride=YES

Ответ или решение

Устранение проблемы с sSMTP: Ошибка аутентификации

Введение

Отправка электронной почты из терминала важна для автоматизации задач, таких как пакетная обработка. Однако вы столкнулись с ошибкой аутентификации при использовании sSMTP для отправки почты через Gmail. Эта статья проведет вас через процесс устранения данной проблемы, предоставляя все необходимые шаги и конфигурации.

Почему возникает ошибка аутентификации?

Ошибка «Authorization failed (535 5.7.8 Bad Credentials)» указывает на то, что sSMTP не может аутентифицироваться в сервере Gmail. Причины могут включать:

  • Неправильные учетные данные.
  • Устаревшие методы аутентификации, так как Google отключил возможность использования приложений менее безопасных.
  • Неактивированные функции, необходимые для отправки почты через сторонние приложения.

Конфигурация sSMTP

Для успешной конфигурации вам необходимо внести изменения в файл ssmtp.conf, который обычно расположен в /etc/ssmtp/ssmtp.conf. Вот пример конфигурационного файла:

# Config file for sSMTP sendmail
root=postmaster

# Сервер почты
mailhub=smtp.gmail.com:587

# Учетные данные
AuthUser=ваш_логин@gmail.com
AuthPass=ваш_16_символьный_пароль_приложения

# Использование TLS
UseSTARTTLS=YES
UseTLS=YES

# Полное имя хоста
hostname=ваш_имя_системы

# Параметры отправки
FromLineOverride=YES

Установка пароля приложения

С 30 мая 2022 года Google отключил возможность использования сторонних приложений с обычным паролем. Вам необходимо:

  1. Включить двухфакторную аутентификацию в вашем Google-аккаунте.
  2. Создать пароль приложения через меню «Безопасность» в настройках Google и выбрать пункт «Пароли приложений».
  3. Выберите название для приложения (например, sSMTP) и получите 16-значный пароль, который будет использоваться вместо вашего обычного пароля.

Шаги проверки

  1. Убедитесь, что параметры IMAP включены в настройки Gmail.
  2. Убедитесь, что вы используете правильное имя пользователя и пароль приложения в конфигурации.
  3. Запустите следующую команду в терминале для тестирования отправки сообщения:
echo "Тестовое сообщение" | ssmtp ваш_получатель@gmail.com

Альтернативные решения

Если проблемы с sSMTP продолжаются, вы можете рассмотреть использование msmtp, который является более современным и поддерживаемым аналогом. Вот как настроить msmtp:

  1. Установите msmtp:
sudo apt-get install msmtp msmtp-mta
  1. Создайте файл конфигурации для msmtp в домашнем каталоге:
touch ~/.msmtprc
chmod 600 ~/.msmtprc
  1. Заполните файл ~/.msmtprc следующими данными:
# Gmail account
account default
host smtp.gmail.com
port 587
auth on
user ваш_логин@gmail.com
password ваш_16_символьный_пароль_приложения
from ваш_логин@gmail.com
tls on
tls_starttls on
  1. Теперь протестируйте отправку сообщения:
echo "Тестовое сообщение" | msmtp ваш_получатель@gmail.com

Заключение

Устранение проблемы аутентификации с помощью sSMTP в сочетании с Gmail может потребовать изменений в настройках безопасности вашего аккаунта и корректировок в конфигурационных файлах. Следуя представленным шагам, вы сможете наладить автоматическую отправку почты. Если с sSMTP возникли трудности, рассмотрите использование msmtp как более современной альтернативы.

Оцените материал
Добавить комментарий

Капча загружается...