Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
bb/sendmail + openSSL
alexvm
Добавлено 20.02.2012 23:28
0
Сообщение: 1
alexvm
0

Пункты: 2274
Регистрация: 22.05.2009
Добрый день,

подскажите, пожалуйста, как передать в bb/sendmail файлы сертификатов и ключей SSL.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2012 00:29 Редактировалось 21.02.2012 00:36 Сообщение: 2
sasamy
4.71

Пункты: 83560
Регистрация: 14.08.2009
А зачем - это же не сервер, это клиент для отправки сообщений на сервер, не аналог одноименного широкоизвестного MTA Sendmail.
Цитата

Read email from stdin and send it
Спуститься к концу Подняться к началу
Персональная информация
alexvm
Добавлено 21.02.2012 09:15 Редактировалось 21.02.2012 09:17 Сообщение: 3
alexvm
0

Пункты: 2274
Регистрация: 22.05.2009
Цитата
А зачем - это же не сервер, это клиент для отправки сообщений на сервер, не аналог одноименного широкоизвестного MTA Sendmail.
Цитата

Read email from stdin and send it


Хочу использовать SSL для клиента, отсылать защищённые письма. Без SSL всё ок, на порты 25 и 587 того же яндекса всё отправляется, а на 465 - нет, требует, как я понимаю, авторизации SSL. Если я использую sendmail -H 'exec openssl...', получаю ssl handshake failure... Как я понял из Гугла, бузибоксовский sendmail поддерживает TSL и SSL.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2012 09:48 Редактировалось 21.02.2012 09:50 Сообщение: 4
sasamy
4.71

Пункты: 83560
Регистрация: 14.08.2009
Скорей всего неправильно запрос оформляете - открытый ключ присылает сервер - клиент им шифрует и отправляет защищенные данные.
попробуйте как описано в хелпе

#sendmail -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' <email.txt -f vasya@gmail.com -auvasya -apvasya_pass

или если логин/пароль в файле хранить

#sendmail -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' <email.txt -f vasya@gmail.com 4<username_and_passwd.txt

насчет -f vasya@gmail.com не знаю - нужно ли.
Спуститься к концу Подняться к началу
Персональная информация
alexvm
Добавлено 21.02.2012 11:31 Сообщение: 5
alexvm
0

Пункты: 2274
Регистрация: 22.05.2009
Цитата
Скорей всего неправильно запрос оформляете - открытый ключ присылает сервер - клиент им шифрует и отправляет защищенные данные.
попробуйте как описано в хелпе

#sendmail -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' <email.txt -f vasya@gmail.com -auvasya -apvasya_pass

или если логин/пароль в файле хранить

#sendmail -H 'exec openssl s_client -quiet -tls1 -connect smtp.gmail.com:465' <email.txt -f vasya@gmail.com 4<username_and_passwd.txt

насчет -f vasya@gmail.com не знаю - нужно ли.


Два дня бьюсь - первое, что сделал - попробовал примеры из хелпа и гугла. Не работает. При использовании -tsl1 вообще вылезает: Verify error: self signed certificate in certificate chain. То есть сертификаты openssl откуда-то цепляет, но, полагаю, из неправильного места. Я создал свои файлы .pem, теперь осталось их подсунуть bb/sendmail/openssl.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2012 13:41 Редактировалось 21.02.2012 13:42 Сообщение: 6
sasamy
4.71

Пункты: 83560
Регистрация: 14.08.2009
Работают они, просто не совсем как надо :) сертификат можно явно указать openssl
-CAfile /path/to/sert.pem
путь по умолчанию к сертификатам можно посмотреть
#openssl version -d
можно путь указать
-CApath /path/to/cert
а вообще можно и без всего этого - только ненадежно :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2012 15:56 Сообщение: 7
sasamy
4.71

Пункты: 83560
Регистрация: 14.08.2009
Цитата

# sendmail -H "exec openssl s_client -quiet -tls1 -connect smtp.yandex.ru:465" <
email.txt -f my_login@yandex.ru -aumy_login -apmy_pass -t 2mail@mail.ru -v
sendmail: send:'NOOP'
depth=2 C = US, O = GTE Corporation, OU = "GTE CyberTrust Solutions, Inc.", CN = GTE CyberTrust Global Root
verify error:num=19:self signed certificate in certificate chain
verify return:0
sendmail: recv:'220 smtp1.mail.yandex.net (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)' 1
sendmail: recv:'250 2.0.0 Ok' 1
sendmail: send:'EHLO none'
sendmail: recv:'250-smtp1.mail.yandex.net' 1
sendmail: recv:'250-8BITMIME' 1
sendmail: recv:'250-PIPELINING' 1
sendmail: recv:'250-SIZE 42991616' 1
sendmail: recv:'250-AUTH LOGIN PLAIN' 1
sendmail: recv:'250 ENHANCEDSTATUSCODES' 1
sendmail: send:'AUTH LOGIN'
sendmail: recv:'334 VXNlcm5hbWU6' 1
sendmail: send:''
sendmail: recv:'334 UGFzc3dvcmQ6' 1
sendmail: send:''
sendmail: recv:'235 2.7.0 Authentication successful.' 1
sendmail: send:'MAIL FROM:<my_login@yandex.ru>'
sendmail: recv:'250 2.1.0 <my_login@yandex.ru> ok' 1
sendmail: send:'RCPT TO:<2mail@mail.ru>'
sendmail: recv:'250 2.1.5 <2mail@mail.ru> recipient ok' 1
sendmail: send:'DATA'
sendmail: recv:'354 Enter mail, end with "." on a line by itself' 1
sendmail: send:'From: my_login@yandex.ru'
sendmail: send:'Subject: mail'
sendmail: send:'To: 2mail@mail.ru'
sendmail: send:''
sendmail: send:'Hi Vasya :)'
sendmail: send:''
sendmail: send:'.'
sendmail: recv:'250 2.0.0 Ok: queued on smtp1.mail.yandex.net as oCUWvCmn-oDU8PHgu' 1
sendmail: send:'QUIT'
sendmail: recv:'221 2.0.0 Closing connection.' 1


Цитата

# cat email.txt
From: my_login@yandex.ru
Subject: mail

Hi Vasya :)

Спуститься к концу Подняться к началу
Персональная информация
alexvm
Добавлено 21.02.2012 16:22 Редактировалось 21.02.2012 16:33 Сообщение: 8
alexvm
0

Пункты: 2274
Регистрация: 22.05.2009
Цитата
Цитата

# sendmail -H "exec openssl s_client -quiet -tls1 -connect smtp.yandex.ru:465" <
email.txt -f my_login@yandex.ru -aumy_login -apmy_pass -t 2mail@mail.ru -v
sendmail: send:'NOOP'
depth=2 C = US, O = GTE Corporation, OU = "GTE CyberTrust Solutions, Inc.", CN = GTE CyberTrust Global Root
verify error:num=19:self signed certificate in certificate chain
verify return:0

Hi Vasya :)



:) Совсем запутали... Откуда в Вашем примере OpenSSL берет сертификаты, ведь путь к ним не указан явно в командной строке? А если не берет, то как почта пролезает через 465 порт (который у яндекса SSL)?

Скорей всего, Вы правы, у меня неверный формат самого передаваемого сообщения, сравнил сейчас лог - аутентификация у меня производится...

А с помощью какой проги получили лог?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2012 16:45 Редактировалось 21.02.2012 16:46 Сообщение: 9
sasamy
4.71

Пункты: 83560
Регистрация: 14.08.2009
# sendmail
BusyBox v1.19.3 (2012-02-21 11:20:33 MSK) multi-call binary.

Usage: sendmail [OPTIONS] [RECIPIENT_EMAIL]...
...
Busybox specific options:
-v Verbose
Спуститься к концу Подняться к началу
Персональная информация
alexvm
Добавлено 21.02.2012 22:21 Сообщение: 10
alexvm
0

Пункты: 2274
Регистрация: 22.05.2009
Цитата
# sendmail
BusyBox v1.19.3 (2012-02-21 11:20:33 MSK) multi-call binary.

Usage: sendmail [OPTIONS] [RECIPIENT_EMAIL]...
...
Busybox specific options:
-v Verbose


Понятно, я использовал bb 1.16.2, и у sendmail опции -v нет, пришлось strace ставить...

Ещё интересный момент: если использовать просто sendmail, без openssl (отправлять на 25-й порт), то в логе появляется строка

Цитата

sendmail: recv:'250-SIZE 42991616' 1
sendmail: recv:'250-STARTTLS' 1
sendmail: recv:'250-AUTH LOGIN PLAIN' 1


хотя никакого TLS на 25-м порту яндекса не должно быть...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux