powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почта IdSMTP вопросы безопастности
13 сообщений из 13, страница 1 из 1
Почта IdSMTP вопросы безопастности
    #39314900
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Я решил сделать свою рассылку файлов на емаил.
Будут высылаться экселевские прайсы на почту клиентам. Использую следующий код. Все работает прекрасно.
Но возникают вопросы безопасности пересылки. Больших требований по безопасности для это рассылки нет. Сверхсекретную информацию она не пересылает. Раньше пользователи сами отправляли эти файлы вручную через Outlook. Хотелось бы чтобы автоматизация с моей рассылкой не ухудшила уровень безопасности. Некоторое время я отправлял письма автоматически через xStarter. Там есть возможность выбора защищенного соединения (обычное;TLS;SSL). И сейчас пытаюсь сделать аналог этого режима TLS в своей рассылке. Для этого поставил IdSMTP1.UseTLS := utUseExplicitTLS и IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL. Я отправляю с доменной почты компании и только с нее может отправлять xStarter. С ней можно отправлять и без вышеназванных добавок, а с mail.ru или yandex.ru только с ними. Причем если я отправляю на почту gmail то там в свойствах письма пишется (шифрование: стандартное (TLS) ), независимо ставлю ли я IdSMTP1.UseTLS := utUseExplicitTLS или нет и если письмо отправлено xStarter-ом от его параметров защищенного соединения (обычное;TLS;SSL).
Скажите пожалуйста какие подводные камни особенно в вопросах безопасности есть у моей рассылки и как сделать чтобы она в этом не проигровала Outlook-у или xStarter-у. Или может вообще за все отвечает домен почты и все эти 3 способа равнозначны? Я не очень осведомлен в вопросах защиты почты так что буду признателен если подскажите куда копать
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
var
 IdSMTP1: TIdSMTP;
 idMessage1: TIdMessage;
 idAttach: TidAttachment;
 idText1: TidText;
// idText2: TidText;
 p: TidMessageParts;
// slBody: TStringList;
 IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
begin

 IdSMTP1 := TIdSMTP.Create(nil);
 IdSMTP1.Host:= 'myHost.ru';
 IdSMTP1.Password:= 'MyPassword';
 IdSMTP1.Username:= 'MyUsername';

//*******************************************************************
 //-------------------------------------------------------------
 //Ставлю TLS шифрование и IOHandler
 //но и без этого все работает

IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdSSLIOHandlerSocketOpenSSL.Destination := IdSMTP1.Host+':'+IntToStr(IdSMTP1.Port);
IdSSLIOHandlerSocketOpenSSL.Host := IdSMTP1.Host;
IdSSLIOHandlerSocketOpenSSL.Port := IdSMTP1.Port;
IdSSLIOHandlerSocketOpenSSL.DefaultPort := 0;
IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1;// sslvSSLv2;
IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmUnassigned;

IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL;
 //if not IdSMTP1.SupportsTLS then ShowMessage('not IdSMTP1.SupportsTLS');
 IdSMTP1.UseTLS := utUseExplicitTLS;
//-----------------------------------------------------------------------------
//*******************************************************************


 idMessage1 := TIdMessage.Create(IdSMTP1);
 idMessage1.OnInitializeISO := Form1.LInitializeISO;
 idMessage1.From.Address := 'a@td-qqqq.ru';
 idMessage1.From.Name := 'Степан Иванов';
 idMessage1.Subject := 'Письмо с картинкой AComp'+FormatDateTime('dd.mm.yyyy hh:mm:ss',Now);

 idMessage1.CharSet := 'Windows-1251';
 idMessage1.ContentTransferEncoding  := '8bit';

 idMessage1.Recipients.EMailAddresses := 'bilov2000@gmail.com';
 TIdAttachmentFile.Create(idMessage1.MessageParts, GetCurrentDir+'\general_2016_05_01.xls');

 p := idMessage1.MessageParts;
 idText1 := TidText.Create(p);//, slBody);
 try
   // Load slBody with your HTML text...
   idText1.ContentType := 'text/html';
   idText1.CharSet := 'Windows-1251';
   idText1.ContentTransfer := '8bit';
   if FileExists('подпись.htm') then
   idText1.Body.LoadFromFile('подпись.htm');

   idAttach := TIdAttachmentFile.Create(p,GetCurrentDir+'\подпись.files\image002.jpg');// TidAttachment.Create(p);
   idAttach.ContentType := 'image/jpeg';
   idAttach.ContentDisposition := 'inline';
   idAttach.ExtraHeaders.Values['content-id'] := 'image002.jpg';
   idAttach.DisplayName := 'image002.jpg';
   idMessage1.ContentType := 'multipart/mixed';
   idSMTP1.Connect;
   idSMTP1.Send(idMessage1);
   idMessage1.SaveToFile('AComp.eml');
 finally
   idSMTP1.Disconnect;
   idSMTP1.Free;
   IdSSLIOHandlerSocketOpenSSL.Free;
   Showmessage('done');
 end;
end;
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314910
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bilovБольших требований по безопасности для это рассылки нет.

А какие есть? Допускается опечатка в почтовом адресе, в результате которой файл попадает
не тому, кому предназначен?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314913
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор//Ставлю TLS шифрование и IOHandler //но и без этого все работает

когда начнёшь рассылать через gmail или mail.ru, то тебя без шифрования отфутболят
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314914
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас многие переходят на шифрование. Например, вот: http://ain.ua/2016/09/09/669184
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314927
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, Адреса один раз внесут менеджеры в базу (под свою ответственность) и всегда программа будет брать с неё. Тут для меня проблемы нет. Я тут имел ввиду гипотетическую опасность перехвата писем, хакеров так сказать. Хотя это можно назвать пароноей конечно. Просто хотелось бы не допустить в этом вопросе грубых ляпов
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314930
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, Совершенно верно. Сам проверил на собственной шкуре. Из-за этого все попытки сделать эту вещь проверяя на личной почте обламывались, до тех пор пока не взял сразу почту конторы.Только месяц назад, когда стал разбираться с шифрованием случайно обнаружил это. Много времени потерял. И ведь раньше где-то в 2008 такого не было, если не ошибаюсь
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314932
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bilovЯ тут имел ввиду гипотетическую опасность перехвата писем, хакеров так сказать.

Если не хочешь чтобы файл смог просмотреть кто-то кроме получателя - шифруй его. Другого
способа нет. Шифрование траффика от тебя до почтового сервера (который стоит в твоей же
сети) тебе не поможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314939
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, т.е. моя рассылка через idSMTP тоже самое что и ручная пересылка через Outlook в смысле безопасности? При той же доменной почте
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bilovт.е. моя рассылка через idSMTP тоже самое что и ручная пересылка через Outlook в смысле
безопасности? При той же доменной почте

Нет. Внутренний враг не спит и может перехватить это письмо с соседнего от тебя компьютера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39314955
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
В понедельник посмотрю настройки безопасности Outlook-а на компах менеджеров, на всякий случай. Но что-то мне подсказывает что там будет пусто.
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39474656
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова здравствуйте. Таким образом (с шифрованием с IOHandler) я высылаю на очень многие адреса и все хорошо. Но когда я высылаю на один особый из них то высылает но выдает исключение
<e74759c8-62b0-490c-92ae-648a56a0db88@CARS.carville.ru>; [InternalId=3245440] Queued mail for delivery
перестает только если я убираю IOHandler, то есть ставлю такое
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        if (Pos('.yandex.ru',MailHost)>0)or(Pos('.mail.ru',MailHost)>0) then
        begin
          IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(IdSMTP1);
          //IdSSLIOHandlerSocketOpenSSL1.MaxLineAction := maException;
          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

          IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
          if EmPort>0 then
          IdSMTP1.Port := EmPort
          else
          IdSMTP1.Port := 465;
          IdSMTP1.UseTLS := utUseExplicitTLS;
          IdSMTP1.ReadTimeout := 15000;

        end;


Скажите пожалуйста что неправильно в моей рассылке и как избавиться от этого костыля, тоесть сделать единообразно для любого MailHost
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39475030
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня вот это работает с хугли и со шманем и с мыло

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
procedure SendMail(const aHost,aUsername,aPassword,aSubject,aLetter,aMailFrom,aMailTo,aName:string;
                     var aIsMailSended:Boolean; var aErrorMsg:string);
var
  SMTP:TIdSmtp;
  fSSL:TIdSSLIOHandlerSocketOpenSSL;
  Msg:TIdMessage;
begin
  SMTP:=TIdSmtp.Create(nil);
  fSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  Msg:=TIdMessage.Create(SMTP);

  try
    fSSL.SSLOptions.Mode:=sslmClient;
    fSSL.SSLOptions.Method:=sslvSSLv23;
    fSSL.SSLOptions.SSLVersions:=[sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];

    SMTP.Host:=aHost;
    SMTP.Username:=aUserName;
    SMTP.Password:=aPassWord;

    SMTP.MailAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0';       (*имя почтового агента приискать*)
    SMTP.IOHandler:=fSSL;                           (*вначале подключить шифратор, потом все остальное*)
    SMTP.AuthType:=satDefault;                      (*так правильно*)
    SMTP.UseTLS:=utUseImplicitTLS;                  (*использовать неявный TSL*)

    SMTP.Port:=465;
    SMTP.ConnectTimeout:=5000;
    SMTP.ReadTimeout:=5000;

    Msg.CharSet:='windows-1251';                    (*принуд. установка кодировки для письма - работает для режима ТЕКСТ*)
    Msg.ContentType:='text/html; charset=UTF-8';    (*уточнить что нужно для ХТМЛ-кода multipart/alternative text/html text/plain*)
    Msg.Body.Text:=aLetter;                         (*текст письма*)
    Msg.Subject:=aSubject;                          (*тема письма*)

    Msg.From.Name:=aName;                           (*имя отправителя*)
    Msg.From.Address:=aMailFrom;                    (*мыло отправителя*)
    Msg.ReplyTo.EMailAddresses:=aMailFrom;          (*емейл отправителя*)
    Msg.Recipients.EMailAddresses:=aMailTo;         (*мыло получателя*)
    Msg.Priority:=TIdMessagePriority(1);            { Message Priority = 3(NORMAL) }
    Msg.CCList.EMailAddresses:='';                  {CC}
    Msg.BccList.EMailAddresses:='';                 {BBC}
    Msg.ReceiptRecipient.Text:='';                  {indicate that there is no receipt recipiant}

    try
      SMTP.Connect;
      try
        SMTP.Send(Msg);
        aIsMailSended:=True;
      finally
        SMTP.Disconnect;
      end;
    except
      on E:EIdException do
      begin
        aErrorMsg:=E.Message;
        aIsMailSended:=False;
      end;
    end;

  finally
    FreeAndNil(fSSL);
    FreeAndNil(Msg);
    FreeAndNil(SMTP);
  end;
end;
...
Рейтинг: 0 / 0
Почта IdSMTP вопросы безопастности
    #39475089
bilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair, у меня нет SSLOptions.SSLVersions:=[sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
а без него Connect timed out
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почта IdSMTP вопросы безопастности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]