Вопрос или проблема
Мои требования:
- отправить электронное письмо из терминала (для пакетной обработки)
- приставить 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
против 465UseTLS=YES
противUseSTARTTLS=Yes
(или оба?)hostname=localhost
против того, что было указано по умолчанию (в моем случаеlaptop
)
Может кто-нибудь предложить решение, чтобы разобраться с этим, и, возможно, вставить полностью рабочий конф файл?
Есть утверждение в теме с 2017 года, что:
Вы не можете использовать внешние приложения с вашим обычным паролем, вам
необходимо перейти на https://security.google.com/settings/security/apppasswords
Так ли это? (Я не могу этого сделать)
Какие есть альтернативы?
PS:
- ОС: Linux Mint 19 Tara
- ssmtp был протестирован после чистой установки, предшествующей обновлению
- Пару лет назад я мог отправлять электронные письма, используя ту же ОС (раннюю версию)
- Чтобы убедиться, что значение AuthPass правильное, я использовал его для ручного входа в свою учетную запись google.
С следующими настройками Google:
IMAP включен
Разрешить менее безопасные приложения - ВКЛЮЧЕНО
Решение состоит в том, чтобы установить пароль приложения:
Примечание: Настройка паролей приложений в 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]
PS:
- Я не вижу полезности голосования против без объяснения.
- Для второго требования, указанного в вопросе (вложение),
mutt
работает отлично.
ОБНОВЛЕНИЕ 01.12.2022
Используя msmtp
и потому что менее безопасные приложения отключены
- Включите двухфакторную аутентификацию
- Сгенерируйте пароль приложения, используя имя=”msmtp”
- Создайте
$ 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]
$ chmod 600 /home/user/.msmtp
$ echo "Тестирование...1...2...3" | msmtp recipient.address@domain
Это отправляет на bcc, смотрите здесь для альтернатив.
ssmtp – это заброшенное программное обеспечение.
Вместо этого вам следует попробовать msmtp. Он похож на ssmtp
, но лучше поддерживается и чаще используется.
Кроме того, конфигурация gmail проста. Проверьте этот хороший ресурс на вики arch
Google больше не предлагает опцию “Разрешить менее безопасные приложения – ВКЛЮЧЕНО”.
После мая 2022 года эта опция будет удалена.
Опция Пароль приложения недоступна, если вы не включили двухфакторную аутентификацию.
Добавьте приложение ssmtp и сгенерируйте токен, затем вставьте токен в настройки пароля приложения.
Скопируйте токен и используйте его в качестве пароля в приложении для почты, которое вы хотите интегрировать
Далее включите IMAP в gmail
Примечание: Убедитесь, что выбрали вариант 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 отключил возможность использования сторонних приложений с обычным паролем. Вам необходимо:
- Включить двухфакторную аутентификацию в вашем Google-аккаунте.
- Создать пароль приложения через меню «Безопасность» в настройках Google и выбрать пункт «Пароли приложений».
- Выберите название для приложения (например, sSMTP) и получите 16-значный пароль, который будет использоваться вместо вашего обычного пароля.
Шаги проверки
- Убедитесь, что параметры IMAP включены в настройки Gmail.
- Убедитесь, что вы используете правильное имя пользователя и пароль приложения в конфигурации.
- Запустите следующую команду в терминале для тестирования отправки сообщения:
echo "Тестовое сообщение" | ssmtp ваш_получатель@gmail.com
Альтернативные решения
Если проблемы с sSMTP продолжаются, вы можете рассмотреть использование msmtp
, который является более современным и поддерживаемым аналогом. Вот как настроить msmtp
:
- Установите
msmtp
:
sudo apt-get install msmtp msmtp-mta
- Создайте файл конфигурации для
msmtp
в домашнем каталоге:
touch ~/.msmtprc
chmod 600 ~/.msmtprc
- Заполните файл
~/.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
- Теперь протестируйте отправку сообщения:
echo "Тестовое сообщение" | msmtp ваш_получатель@gmail.com
Заключение
Устранение проблемы аутентификации с помощью sSMTP в сочетании с Gmail может потребовать изменений в настройках безопасности вашего аккаунта и корректировок в конфигурационных файлах. Следуя представленным шагам, вы сможете наладить автоматическую отправку почты. Если с sSMTP возникли трудности, рассмотрите использование msmtp
как более современной альтернативы.