forum.bitel.ru http://forum.bitel.ru/ |
|
Подписывание исходящих mail. Возможно? http://forum.bitel.ru/viewtopic.php?f=22&t=10205 |
Страница 1 из 1 |
Автор: | Yagoda [ 20 фев 2015, 09:37 ] |
Заголовок сообщения: | Подписывание исходящих mail. Возможно? |
Вопрос. Возможно ли все исходящие для клиентов email (уведомления, сообщения от модуля Bill и т.д.) подписывать имеющимся X.509 сертификатом? В идеале бы подписывать просто pdf формируемые модулем bill (из-за него весь сыр-бор, пытаемся уйти от бумажек), но думаю это будет сложно и у клиентов должны быть определенные pdf-читалки. Технологически наверное проще подписывать все исходящие email. Да, и сертификат по ГОСТу... PS. Если кто подскажет софтину SMTP-Relay под Debian с возможностью изменения сообщений (надо добавить подпись), то буду благодарен и буду копать в эту сторону. PS. Сервер: вер. 6.0 сборка 1811 от 13.11.2014 18:45:59 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_38 |
Автор: | dimOn [ 20 фев 2015, 14:07 ] |
Заголовок сообщения: | Re: Подписывание исходящих mail. Возможно? |
Ну всё верно, это нужно делать извне биллинга. Ставите локальный какой-то там sendmail, через него настраиваете, а туда всякие сертификаты любые и алга. |
Автор: | Yagoda [ 03 мар 2015, 06:20 ] |
Заголовок сообщения: | Re: Подписывание исходящих mail. Возможно? |
Победил. )) Может кому пригодится. Исходные: - Почтовый сервер на одной машине с биллингом, организовать на нем обработку невозможно. Требуется: Подписывать сообщение (само тело сообщения без заголовков) имеющимся сертификатом. Решение: - Для обработки сообщений ставим proxsmtp. Конфигурация proxsmtp (может быть несколько конфигураций, для каждой должен быть файл /etc/proxsmtp/*.conf): # cat billing.conf Код: Listen: 127.0.0.1:10025 MaxConnections: 64 OutAddress: 127.0.0.1:25 TransparentProxy: off FilterCommand: /etc/proxsmtp/billing.sh FilterType: file Скрипт обработки: # cat billing.sh Код: #! /bin/sh #Будем подписывать только если отправитель - биллинг и есть вложения if [ "$SENDER" = "billing@MyCompany.ru" ]; then att=$( cat $EMAIL | grep "Content-Disposition: attachment;" ) if [ "qqq$att" != "qqq" ]; then /etc/proxsmtp/sign $EMAIL fi fi exit 0 Скрипт, который непосредственно подписывает сообщение: # cat sign Код: #! /bin/sh msg=$1 #Временные файлы f_in=$( mktemp /tmp/in.XXXXXXXXXX ) f_line=$( mktemp /tmp/line.XXXXXXXXXX ) f_out=$( mktemp /tmp/out.XXXXXXXXXX ) #Найдем начало тела сообщения n=$( cat $msg | awk '$0 ~ "MIME-Version: 1.0" { print NR }' ) #Сохраним отдельно тело сообщения cat $msg | awk -v n_start=$n 'NR>=n_start { print $0 }' > $f_in #И заголовки cat $msg | awk -v n_start=$n 'NR<n_start { print $0 }' > $f_line #Подпишем тело имеющимся сертификатом openssl smime -sign -signer /etc/proxsmtp/mycert.pem -in $f_in -out $f_out #Соберем сообщение из сохраненных заголовков + подписанное тело cat $f_line > $msg cat $f_out >> $msg #Удаляем временные файлы rm -f $f_in rm -f $f_line rm -f $f_out В результате получается подписанное сообщение (вложен файл подписи, включает сертификат с публичным ключем). Сообщения нормально открываются в MS Outlook Express и MS Outlook (если есть доверие к сертификату). PS. В конфигурации сервера добавить строку Код: mail.properties.mail.smtp.port=10025 и перезапустить биллинг (достаточно сам процесс server). PSS. Файл mycert.pem содержит сертификат + приватный ключ. Т.е. формат: Код: -----BEGIN CERTIFICATE-----
***** -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- ***** -----END RSA PRIVATE KEY----- |
Автор: | ok-2004 [ 03 мар 2015, 08:04 ] |
Заголовок сообщения: | Re: Подписывание исходящих mail. Возможно? |
Последний пост тянет на статью на Хабре. За такие труды раньше на родине героев бронзовые бюсты отливали.... |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |