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

Отправка писем с помощью mailx

 ,


0

2

Всем доброго времени суток.

Встала задача автоматически отправлять письма. Имеется почтовый сервер postfix+dovecot, поставил heirloom-mailx, импортировал сертификат в систему.

.mailrc

account test {
    set record=+Sent
    set smtp-use-starttls
    set smtp=mail.test.lan:587
    set smtp-auth=login
    set smtp-auth-user=name
    set smtp-auth-password=pass
    set from="Тестовый тест <test@test.ru>"
}

При исполнении echo "Test" | mailx -v -A Test -s "test" name@test.ru получаю следующее:

Resolving host mail.siz37.lan . . . done.
Connecting to 172.16.0.9:587 . . . connected.
220 Sender
>>> EHLO w071.siz37.lan
250-s009.siz37.lan
250-PIPELINING
250-SIZE 41943040
250-STARTTLS
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> STARTTLS
220 2.0.0 Ready to start TLS
Comparing DNS name: "s009"
Comparing DNS name: "s009.siz37.lan"
Comparing DNS name: "mail.siz37.lan"
>>> EHLO w071.siz37.lan
250-s009.siz37.lan
250-PIPELINING
250-SIZE 41943040
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> AUTH LOGIN
535 5.7.8 Error: authentication failed: Invalid authentication mechanism
smtp-server: 535 5.7.8 Error: authentication failed: Invalid authentication mechanism
"/home/SIZ37/ratkin.roman/dead.letter" 11/309
. . . message not sent.


С mailx не подскажу, но в качестве альтернативы, если не победишь, можешь попробовать msmtp. Даже конфигом поделюсь, если потребуется.

r3lgar ★★★★★
()

импортировал сертификат в систему.

Зачем? Или условия таковы, что без аутентификации никак?

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

Без них валилась ошибка:

Resolving host mail.test.lan . . . done.
Connecting to 0.0.0.0:587 . . . connected.
220 Sender
>>> EHLO w071.test.lan
250-bla.test.lan
250-PIPELINING
250-SIZE 41943040
250-STARTTLS
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> STARTTLS
220 2.0.0 Ready to start TLS
Error with certificate at depth: 0
 issuer = bla/bla/bla
 subject = bla/bla/bla
 err 20: unable to get local issuer certificate
Continue (y/n)? could not initiate SSL/TLS connection: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
"/home/test/name/dead.letter" 11/309
. . . message not sent.

Не нашел как победить. Признаться, внятной информации о том, что может быть в файле .mailrc не смог найти. Может я чего-то не понимаю или скорее не знаю.

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

В любом случае поковыряю сам для начала

Подскажите, по более сложному вопросу, а msmtp сможет отправленный из консоли файл подложить в директорию пользователю на почтовом сервере, чтобы у него в thunderbird письмо появилось в отправленных? Это задачей не стоит, скорее самому интересно реально ли такое провернуть и куда тут надо копать.

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

Не нашел как победить

Безусловный TLS на сервере отключить. Для своей сети он вообще вряд ли нужен, а для приёма снаружи тоже не сильно хорошо - кто-то из корреспондентов может его и не использовать, соответственно, почта не дойдёт. Но можно отключить и для диапазонов адресов скорее всего, это если хочется в принципе TLS оставить.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: В любом случае поковыряю сам для начала от hanharr

msmtp сможет отправленный из консоли файл подложить в директорию пользователю на почтовом сервере

Нет, не может, это не его задача. Он даже не умеет в IMAP.

Если есть доступ по ssh, то можно написать скрипт, который будет отправлять и копировать. Можно воспользоваться OfflineIMAP, который будет стягивать всё из ящика и заливать в ящик обратно (вместе с добавленными файлами), синхронизируя данные, но учитывая, что Maildir не используется, это уже оверхед.

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

Безусловный TLS на сервере отключить.

Кстати, парадокс: почта с маргинального cock.li с безусловным TLS приходит, а с yandex.ru — нет.

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

Добавил тестовый ящик не к использующим tls.

Возможно, глупый вопрос, но.. какие значения может иметь set smtp-auth=login? А то, не покидает меня ощущение, что я что-то не то пишу.

hanharr
() автор топика

Используя свои телепатические способности, я готов предположить, что ваш постфикс отдает аутификацию довекоту, а того прописано

auth_mechanisms = plain cram-md5

но не прописано login. так что вы или в довекоте поменяйте механизмы или в клиенте.

constin ★★★★
()

heirloom-mailx
heirloom

Зачем? Чего нормальный-то было не поставить?

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

но.. какие значения может иметь set smtp-auth=login?

Те, которые поддерживаются. Причём как со стороны сервера, так и клиента. Я heirloom-mailx, если не ошибаюсь, и не видел. Только я бы вообще это убрал, как и остальное smtp-auth-*, а IP-адрес источника сообщений в доверенные сети у Постфикса добавил.

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

адрес источника в доверенные неправильно. через несколько ле кто-нибудь будет что-то менять, и эта конструкция сломается. иногда попадаются динозавры, которые не умееют в авторищацию вообще, но и их лучше пускать через релей.

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

man mailx

       smtp-auth
              Sets the SMTP authentication method.  If set to `login',  or  if
              unset  and smtp-auth-user is set, AUTH LOGIN is used.  If set to
              `cram-md5', AUTH CRAM-MD5 is used; if set to `plain', AUTH PLAIN
              is used.  Otherwise, no SMTP authentication is performed.

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

Не нашел как победить.

ssl-verify="ignore"

Признаться, внятной информации о том, что может быть в файле не смог найти

Все есть в мане.
Кстати не обязательно писать в файл .mailrc, можно указать при запуске mailx опции с ключем -S, т.е. один ключ одна опция. Типа
-S smtp-use-starttls -S smtp=mail.test.lan:587 -S smtp-auth=login и т.д.

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

через несколько ле кто-нибудь будет что-то менять

Я так понимаю, что сервер у него же. Если кто-то что-то будет менять, то менять он будет всё.

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

Спасибо!

Да, вы были правы, надо было смотреть механизм в конфигах dovecot. Половина дела сделана.

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

Спасибо

Да, я уже совсем туго соображал. Подскажите, а есть возможность передать несколько вложений, кроме как -a file -a file1 -a file2.

Вот такая штука, что в принципе логично отправляет несколько писем вместо одного.

for file in /home/blabla/roman/Рабочий стол/wiki/*.*; do echo "Test" | mailx -v -A blablabla -s "test" -a $file roman@live.ru; done

Городить огород с переменной в которой attachment=-a file? Или есть изящный способ?

hanharr
() автор топика
Ответ на: Спасибо от hanharr

«Чаво незнаю, таго не знаю» :) Я его только в технических целях использую. Он в слаке из каробки давно :)

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

Значит ошибся. Даже не знаю с чего так для себя решил... но устойчиво казалось, что AS тоже из слаководов :)

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

что AS тоже из слаководов

Последние лет почти 15 только ALT. В основном, из-за etcnet и ряда других моментов, по большей части, серверного направления. А десктоп - до кучи.

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