LINUX.ORG.RU
решено ФорумAdmin

ssmtp - неверный адрес пользователя.

 


0

1

День добрый. Цель - отправлять сообщения об ошибках cron пользователя его e-mail. Почта на gmail. В /etc/ssmtp/revaliases

user_name:user_mail@gmail.com:smtp.gmail.com:465
В лога вижу
sSMTP[28925]: Sent mail for user_mail@gmail.com (221 2.0.0 closing connection a21sm1613598ljh.114 - gsmtp) uid=1000 username=user_name outbytes=657
Но сообщение отправляется ... на user_name@localhost Соответственно, получаем на email root'a инфу о неверном адресе. На почту root'a сообщения отправляются корректно.

Что, где поправить?

VPS Ubuntu 18.04.4



Последнее исправление: cnt (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

Показывая /etc/aliases и /etc/crontab

aliases

user_name:user_mail@gmail.com 
но,
newaliases
newaliases: Aliases are not used in sSMTP
т.е. эти алиасы не работают с ssmtp

crontab

*/10 * * * * echo "test cron" | gggmail -s 1111 blabla@gmail.com.
в crontab, любая команда вызывающая ошибку, чтобы формировать сообщение.

cnt
() автор топика
Ответ на: комментарий от cnt

user_name:user_mail@gmail.com

Разве пробел не нужен?

Вообщето команда newaliases только упаковывает таблицу. Ей пофик остальное ваши проблемы.

Bootmen ☆☆☆
()
Последнее исправление: Bootmen (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

MAILTO= в /etc/crontab прописан? Показывай весь конфиг ssmtp, интересуют опции FromLineOverride, hostname, rewriteDomain и mailhub

Не прописан. Мне ведь надо слать сообщение об ошибке тому пользователю, чей cron, а не на один адрес сообщения всех кронов.

ssmtp.conf

root=****@gmail.com

mailhub=smtp.gmail.com:587
AuthUser=****@gmail.com
AuthPass=****
FromLineOverride=No
UseTLS=Yes
#rewriteDomain=
hostname=localhost
FromLineOverride=NO

cnt
() автор топика
Ответ на: комментарий от cnt

Сужу по своим настройкам

hostname=localhost

а если это убрать?

FromLineOverride=NO

Как вариант - поставить в Yes(и да, задать один раз, а не как сейчас)

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

hostname=localhost
а если это убрать?

тогда отправляется на адрес

user_name@host_name
но нам ведь надо реальный e-mail ...

cnt
() автор топика
Ответ на: комментарий от cnt

давай еще раз уточним, а то я уже запутался - у тебя проблема с адресом источника или с адресом отправителя?

Проблему с адресом источника должен решать /etc/ssmtp/revaliases. Адрес отправителя должен быть либо задан в переменной MAILTO (если перенаправляется stdout/stderr выхлопа команд cron-а), либо - в аргументах командной строки(если ты явно указываешь что выхлоп надо слать на определенный адрес)

Просто у меня куча серверов с ssmtp, которые шлют письма с адресов вида root@server.domain.local, но на самом почтовом сервере они уже видны как server@domain.local - потому что в revaliases сделано соответствующее преобразование. И это работает.

А вот если нигде не указать адрес назначения, то да - почта будет пытаться доставиться локальному пользователю

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 5)
Ответ на: комментарий от Pinkbyte

Да, надо прояснить ситуацию.

Проблема с адресом получателя.

Когда идет сообщение от крона, если он запущен от пользователя, подставляется неверный адрес, user_name@host_name. А так-как отправитель у меня smtp.gmail, то приходит сообщение о неверном адресе, и получается на каждую ошибку в cron'e приходит нормальнео сообщение и сообщение о неверном адресе получателя.

cnt
() автор топика
Ответ на: комментарий от cnt

Соврал, приходит одно сообщение - с ошибкой о неверном адресе и прикрепленное исходное сообщение.

cnt
() автор топика
Ответ на: комментарий от cnt

Когда идет сообщение от крона, если он запущен от пользователя, подставляется неверный адрес, user_name@host_name

И при этом MAILTO в crontab-е пользователя не задан, так? Ну тогда как по мне всё логично...

Pinkbyte ★★★★★
()
Ответ на: комментарий от cnt

В генте это например /var/spool/cron/crontabs/username, насчет других дистрибутивов не уверен. Это не столь важно, обычно эти файлы правятся комадной crontab -e

Pinkbyte ★★★★★
()
Ответ на: комментарий от cnt

И всё равно не туда шлет? Ну тогда у меня идеи кончились - в ssmtp слишком мало крутилок, где можно сделать что-то не так и мы их уже вроде как все перебрали.

Если из командной строки(не из cron) вызвать из под пользователя user_name:

echo "test" | mail user_mail@gmail.com
- тоже не туда шлёт?

Я просто пытаюсь понять это у тебя cron не туда почту отправляет или ssmtp дурит?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

ssmtp из консоли отправляет нормально.

Но если отправляется сообщение об ошибке cron’a, когда он работает от пользователя, подставляется неверный адрес.

Проблема с отправкой сообщений кроном когда он работает из под пользователя, а не root’a

Делаем паузу.

cnt
() автор топика
Ответ на: комментарий от cnt

Ага, ну уже проще, то есть копать нужно только в cron, c ssmtp всё окей

Смотри какой MAILTO задан в crontab -l от пользователя

Или другой вариант - используй альтернативый MTA(не ssmtp), в котором уже перенаправишь почту локального пользователя. ssmtp как видишь умеет перенаправлять только локальную почту рута.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Да, спасибо за советы.

Об альтернативе ssmta уже подумываю.

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

cnt
() автор топика
Ответ на: комментарий от Pinkbyte

Все работает! если правильно указать при редактировании crontab -e MAILTO ! ) Вопрос закрыт!

cnt
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.