|
|
  |
STM32F407: LwIP + SSL -> SMTP |
|
|
|
Dec 5 2014, 11:47
|

Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978

|
Цитата(Aner @ Dec 5 2014, 13:43)  Используйте RTOS например, все остальное без OS кривота для серии 4xx. а если весь функционал в прошивке реализован без RTOS, дак что теперь все перелопачивать ради SSL? покурил внутринности PolarSSL и решил переписать сетевую прослойку на Raw API вместо Netcon API + Socket Если у когонибудь есть подобный опыт, не откажусь от помощи. так же полезен будет любой пример переделки приложения вида Код struct sockaddr_in server_addr;
if( ( *fd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ) ) < 0 ) return( POLARSSL_ERR_NET_SOCKET_FAILED );
server_addr.sin_family = AF_INET; server_addr.sin_port = net_htons( port );
if( connect( *fd, (struct sockaddr *) &server_addr, sizeof( server_addr ) ) < 0 ) { close( *fd ); return( POLARSSL_ERR_NET_CONNECT_FAILED ); } на код вида Код struct tcp_pcb* pcb; ip_addr_t addr;
pcb = tcp_new();
tcp_arg(pcb, s); tcp_recv(pcb, *tcp_recv); tcp_err(pcb, *tcp_err); tcp_poll(pcb, *tcp_poll, POLL_INTERVAL); tcp_sent(pcb, *tcp_sent);
|
|
|
|
|
Jan 31 2017, 11:19
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Здравствуйте. Подниму тему. Вопрос похожий, но надеюсь проще в решении: Есть LwIP, FreeRTOS, STM32F4. написан и работает smtp клиент по порту 25 (исходник чужой вот отсюда и даже не мной интегрированная в проект, я с smtp врукопашную раньше дела не имел). сейчас стейт-машина в указанном исходнике так работает (полностью можно по ссылке исходник на гитхабе глануть): Код enum smtp_session_state { SMTP_NULL, SMTP_HELO, SMTP_AUTH_PLAIN, SMTP_AUTH_LOGIN_UNAME, SMTP_AUTH_LOGIN_PASS, SMTP_AUTH_LOGIN, SMTP_MAIL, SMTP_RCPT, SMTP_DATA, SMTP_BODY, SMTP_QUIT, SMTP_CLOSED }; нужно добавить возможность работы по портам 587 и/или 465. Как это сделать с наименьшим напряжением рук и головы? на этапе "SMTP_AUTH_" что подсунуть в процесс? Cобственно, как я понимаю, нужен SSL. и вижу PolarSSL в составе LwIP, это оно? Какие несколько команд вставить на этапе smtp авторизации чтобы это заработало? Может быть решение простое и где-то рядом, но не доходит до меня... Спасибо всем кто откликнется.
|
|
|
|
|
Jan 31 2017, 12:30
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
подергал через телнет нужный smtp сервер, говорит следующее на EHLO порт 587: Цитата 220 <address> ESMTP Postfix (Ubuntu) EHLO <address> 250-<address> 250-PIPELINING 250-SIZE 15728640 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN на 465 вообще не соединяется по телнету. Хотя может и не должен.
|
|
|
|
|
Jan 31 2017, 18:05
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(Ruslan1 @ Jan 31 2017, 15:30)  на 465 вообще не соединяется по телнету. Хотя может и не должен. и не должен. Обычно 465 - это SMTP через TLS, а 587 - это TLS внутри SMTP, так называемый STARTTLS Лог можно здесь посмотреть http://www.checktls.com/testsender.html. Опыта отправки писем из lwIP нет.
|
|
|
|
|
Feb 1 2017, 09:46
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Ruslan1 @ Jan 31 2017, 21:13)  Вроде бы начало проясняться что дело темное, явно не два байта переслать. в моем LwIP - старенький огрызок от polarSSL, сейчас нужно смотреть mbed TLS. В нем есть файлик "ssl_mail_client.c", который вроде бы то что нужно. Но задачка-то не такая простая, и по пониманию-тестированию, и по ресурсам в МК. Неск. лет назад реализовывал на LPC1768 SMTP-клиент (поверх своего TCP-стека). Самостоятельно конечно, без чьих-то исходников. Смотрел тогда тоже в сторону добавления возможности работы через шифрованное соединение. Но тоже понял, что там всё непросто. И очень мало толковой документации по этому делу - это самое главное! В то время как нешифрованный SMTP разжёван вдоль и поперёк в разных источниках. Именно это меня тогда и остановило. В результате нашёл достаточно много нешифрованных SMTP-серверов и решил пока отложить эту тему до тех пор когда реально припрёт. Если нароете хорошее описание SMTP-протокола через защищённое соединение - выкладывайте. Думаю тоже когда-то придётся вернуться к этой теме. Как я подозреваю: там главное установить и поддерживать шифрованное соединение, а уж протокол SMTP через него - точно такой-же как и через открытое.
|
|
|
|
|
Feb 1 2017, 12:45
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(jcxz @ Feb 1 2017, 11:46)  Если нароете хорошее описание SMTP-протокола через защищённое соединение - выкладывайте. Думаю тоже когда-то придётся вернуться к этой теме. Да не вопрос. Причем делать точно буду, но вот не знаю когда (пока что у этой задачи статус "critical", то есть: спать мешает, но жить c этим можно). И да, сейчас безопасный smtp доступ отмирает понемногу. Уже столкнулся с мобильными операторами, которые "587/465 only". Опять же, в перспективе уже не сильно удивлюсь, если FTP на FTPS менять нужно будет в обозримом будущем, так что от понимания "как это работает" не уйти.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|