Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

В продолжение: скрипт по переименованию мейлов - Умлауты

552  1 2 все
Regenwolke постоялец04.06.12 14:33
Regenwolke
04.06.12 14:33 
Всем еще раз привет!
в продолжение моей предыдущей темы по переименованию файлов мейл-сообщений в название темы.
http://foren.germany.ru/linux/f/21640747.html?Cat=&page=0&view=collapsed&sb=5
( отдельный привет и риспект BSD Lamer - насчет его намеков на "костыли и грабли" как грится, не так уж и не прав был!.. все только начинается... )
вынимаю тему из сообщения, отсекаю все лишнее, заменяю спец. символы на , скажем, нижнее подчеркивание - все хорошо, но если встречаются в теме эти немецкие крокозябры, пардон, умлауты и ß, то файлО не переименовывается... Точнее, в винде имя файла отображается исходным, в линуксе:
=?ISO-8859-15?Q?Pr=FCfung_neues_Storagesystem?=.eml - это Prüfung neues Storagesystem
=?UTF-8?Q?Termin_ge=C3=A4ndert__Inbetriebnahme_EVA4_TEil_1?=.eml - это Termin geändert...
локаль на самом сервере выдает:
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
по идее для этого должна использоваться utf8 ?..
почитала, что виндовс использует utf16.
также что для желаемого результата нужно использовать утилиту quoted-printable.
пыталась "гуглить" и "яндексить", ничего не нашла похожего применимо к моей ситуации - хотя бы по переименовыванию файлов.
не даст ли кто вводную, с чего начать и как использовать?
Спасибо!
#1 
katran76 коренной житель05.06.12 10:00
BSDLamer Хвостатый Carpal Tunnel05.06.12 19:24
BSDLamer
NEW 05.06.12 19:24 
в ответ Regenwolke 04.06.12 14:33
В ответ на:
все только начинается...

это да ! Сначала хотел тебе сразу в той ветке и написать, но не захотел показаться занудным.
Еще раз хочу спросить почему нельзя стартануть вторую копию групвари подсунув ему backup за какой то день и дать юзеру подключиться, вытащить свою почту
и на этом забыть о проблеме ??? Это же вроде не exchange с которыми такие дела не пройдут.
Не особо понял чего именно ты хочешь добиться, но гуглить надо наверное про sed.
вот например
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#3 
katran76 коренной житель05.06.12 22:20
NEW 05.06.12 22:20 
в ответ BSDLamer 05.06.12 19:24
В ответ на:
Не особо понял чего именно ты хочешь добиться, но гуглить надо наверное про sed.

Она хочет RFC 2047 декодировать (ссылку я выше дал), в sed-е мона канешно, но замахаешься
#4 
Regenwolke постоялец06.06.12 12:16
Regenwolke
NEW 06.06.12 12:16 
в ответ BSDLamer 05.06.12 19:24
всем привет, и спасибо за ответы
BSDLamer,думаю с sed не все так просто при всем "хорошем", если у меня строка Subject, где умлауты, видится примерно так:
Subject: =?ISO-8859-15?Q?TERMIN=C4NDERUNG=3A_Ank=FCndigung_von_Wart?=
(сед-ом у меня заменяются при переименовании символы например ><:;$§&()/\^... ну и т.д. А как это расценивать?..)
ладно, я в общем спросила риторически, дело трудоемкое, в конце-концов можно и забить, пускай ищут по интуиции, их количество не перевешивает.
В ответ на:
Еще раз хочу спросить почему нельзя стартануть вторую копию групвари подсунув ему backup за какой то день и дать юзеру подключиться, вытащить свою почту

да х.. знает, почему.
потому как получается через Ж... все.
"чтоб дать пользователю подключиться" и достать свои мейлы - все через тот же "реконструкт" SESAM GUI.
также - регулярно ведется архивирование /var трех почтовых серверов
т.е. где лежат мыла и папки /var/spool/imap/user/<username>, оттуда и достается, остальное ты уже знаешь.
#5 
Regenwolke постоялец06.06.12 15:16
Regenwolke
NEW 06.06.12 15:16 
в ответ katran76 05.06.12 22:20
помойму вот это как раз то что нужно:
blog.php-web-developer.de/it/linux-unix-server/umlaute-sonderzeichen-linu...
http://linux.die.net/man/5/detoxrc
надо будет поизучать, как прикрутить.
#6 
katran76 коренной житель06.06.12 16:36
NEW 06.06.12 16:36 
в ответ Regenwolke 06.06.12 15:16
там не умляуты, там rfc2047-кодировка
помочь может перл (ссылка выше)
use Encode qw(decode);
my $decoded = decode("MIME-Header", $encoded);


#7 
katran76 коренной житель06.06.12 19:23
NEW 06.06.12 19:23 
в ответ katran76 06.06.12 16:36
здесь можешь почитать
http://www.hackerwiki.org/index.php/Email_Parsing_mit_den_MIME-Tools_f%C3%BCr_Pe...
большую часть кода можно скопипастить, и потом добавить вот здесь
if($newmail_files[0]) {
foreach(@newmail_files) {
my $infile = $_; # dies ist der Name der aktuell bearbeiteten Email-Datei
my $top_entity = &parse_MIME_stream($infile); # das Entity-Objekt fuer diese Email
my $subject = &handle_Mail_header($top_entity, 'subject'); # Subject der Email
my $from = &handle_Mail_header($top_entity, 'from'); # Absender
my $to = &handle_Mail_header($top_entity, 'to'); # Empfaenger
my $date = &handle_Mail_header($top_entity, 'date'); # Timestamp
my @body = &get_body($top_entity);
}
}


что-то типа

rename($infile, "${subject}.eml") or  
warn "Couldn't rename $infile to ${subject}.eml: $!\n";


#8 
BSDLamer Хвостатый Carpal Tunnel08.06.12 15:57
BSDLamer
NEW 08.06.12 15:57 
в ответ Regenwolke 06.06.12 12:16
В ответ на:
да х.. знает, почему.

:)
В ответ на:
"чтоб дать пользователю подключиться" и достать свои мейлы - все через тот же "реконструкт" SESAM GUI.

если нет саппорта то забудь этот SESAM, я другой пример приводил.
Еще раз попытаюсь обьяснить.
Есть сервер в продакшене и есть backup-сервер который хранит например snapshots продуктивного. Снепшоты (бекапы) делаются например раз в день в 12 часов дня, снепшот является копией баз данных групвари в определенный момент.
В 13 часов юзер удаляет мейл из своего ящика.
На backup-сервере стартуются сервисы групвари со снепшотом который был сделан в 12 часов
Юзер коннектится своим клиентом к backup-серверу и видит свой ящик таким каким он был в 12 часов, и соответственно свое мыло которое он затер в 13 часов.
Юзер видит бекап в удобном и привычном для него виде, может пользоваться поиском и т.д. + юзер видит свой календарь и заметки и addressbook (чего нет в костыле) + юзер видит encrypted мыло
Юзер архивирует/експортирует удаленное мыло с backup-сервера, коннектится обратно к продуктивному и импортирует заарховорованое/експортированое мыло
все рады
есть аргументы против ?
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#9 
Regenwolke постоялец09.06.12 11:45
Regenwolke
NEW 09.06.12 11:45 
в ответ BSDLamer 08.06.12 15:57
привет!
ах, ты про идею со снапшотами!... это в общем мысль, действительно, имеет смысл продумать!
у нас имеются снапшоты для важных рабочих Ablagen, от виндовс и линукс кластеров, реализованные через svsp, презентованные от двух хостов. Они выполняются три раза в день: в 9, 12 и 15 часов.
одним из коллег был сострочено одно приложеньице, по которому при запуске выбираются нужные снапшоты и подключатся в Винвдовс=эксплорере.
аргументы против с ходу пока не найду, имею в виду, которые можно с ходу сформулировать точно, но вопросы может по ходу возникнуть.
по мне пока схема действий выглядит так: почтовик - бекап (бекапсервер) - снапшоты с бекап-сервера либо с него напрямую, либо с др хоста. Архивируется в идеале сейчас, отбросив Сезам, для мейлов партиция /var. Там где все ящики. И если насчет последнего, что ты пишешь, не представляю себе к сож-ю структуру базы данных почтовика, достаточно ли это будет прицепить клиентом снапшот, ну в виде как бы еще одного ящика, так?...
#10 
BSDLamer Хвостатый Carpal Tunnel11.06.12 13:42
BSDLamer
NEW 11.06.12 13:42 
в ответ Regenwolke 09.06.12 11:45
чет мне кажется мы друг друга не понимаем, или если и понимаем то только частично.
Еще пример, еще проще, самый элементарный
1) есть продуктивный сервер с OX, как я понял это все опенсорсные компоненты подточеные напильником, база мускул (MySQL).
2) есть backup-сервер на котором тоже установлен OX
3) тушим все на продуктивном сервере ( это просто для упрощения примера) например в 13:00 и коммандой cp тупо копируем например по NFS все папки с данными на backup-сервер. Тоесть делаем зеркало.
4) стартуем OX на продуктивном сервере и все есть как было, все работает
5) в 15:00 юзер на продуктивном сервере стер мыло которое получил в 7:00 и хочет его назад
6) продуктивный сервер не трогаем, там все есть как было и другие юзеры работают. Стартуем сервисы OX на backup-сервере, все должно выглядеть на нем так как это выглядело на продуктивном в 13:00, логично ?
7) говорим юзеру отключиться от продуктивного сервера и просим подключиться к backup-серверу. Что он увидит на backup-сервере ? Правильно, свой ящик каким он был в 13:00, а соответственно и мыло которое он стер.
8) юзер експортирует мыло, коннектится обратно к продуктивному серверу и импортирует мыло в свой продуктивный ящик
Теперь яснее ?
Ахтунг, это тоже костыль, но более эллегантный и простой, так как ты даешь юзеру не просто кучу текстовых файлов а полный функционал групвари, тебе же не надо придумывать колесо заново.
Ахтунг номер два, лицензия и дизайн групвари должна позволять такие приколы.
Если не уверенна, построй себе маленькое окружение и поиграйся, или хотябы выдвигай эту идею на митинге, попроси помощи. Пускай шеф бросает тебя и админа групвари на решение этой проблемы.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#11 
Regenwolke постоялец14.06.12 21:22
Regenwolke
NEW 14.06.12 21:22 
в ответ BSDLamer 11.06.12 13:42
BSDLamer, да я тебя поняла
что похоже без полноценной копии почтовика не обойтись.
почтовик виртуальный.
поиграться так что можно попробовать.
насчет лицензий и тд это уже вопрос не ко мне, так или иначе привлекать коллегу по групваре придется, это точно.
ну и возвращаясь к теме, скриптец работает, если не брать в расчет крокозябры, но есть проблема если в восстанавливаемом каталоге встречаются один или несколько пробелов... ((( как переименовать файлы в каталогах с пробелами?.. линукс их режет на части. Т.е. он читает файлы в каталоге так: если каталог HP SEA: EVA , то HP/xxx, SEA:/xxx, EVA/xxx
точный вывод с отладкой могу похзже сбросить, помоему так... точно может ща не воспроизведу, но принцип понятен думаю.
идею с копией почтовика все равно рассмотрю, просто хочется уж продуктивно начатое "добить".
#12 
l@nix прохожий18.06.12 15:25
NEW 18.06.12 15:25 
в ответ Regenwolke 04.06.12 14:33
чего вы так страдаете. для этого существуют уже готовые решения. вам ведь нужно архивировать мыло не так ли? вы хотите юзверям дать возможность покапаться в этом заархивированом мыле? они должны так же иметь возможность восстановить мыло?
я вам представляю решение:
http://www.mailarchiva.com/
свободного варианта достаточно. ентрепрайс может коннектиться в аутлук.
а в общем и целом советую просто мыло по запросу клиента при условии доплаты пропускать через какой нить сервачек, который все это мыло хранит. в принципе то же самое что делает выше указаное решение, только прийдется все своими руками делать.
#13 
BSDLamer Хвостатый Carpal Tunnel18.06.12 16:16
BSDLamer
NEW 18.06.12 16:16 
в ответ l@nix 18.06.12 15:25
предидущую ветку ТС читал ?
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#14 
  L@nixx прохожий18.06.12 16:56
NEW 18.06.12 16:56 
в ответ BSDLamer 18.06.12 16:16
краем глаза. понял что они хотят все на блюдечке приподнести. нах надо. юзверь сам знаем что ему нужно. + в этой системе поиск реализован хорошо. делать за юзверя, усложнять себе жизнь! :)
#15 
BSDLamer Хвостатый Carpal Tunnel18.06.12 17:05
BSDLamer
NEW 18.06.12 17:05 
в ответ L@nixx 18.06.12 16:56
архивация мылa это как бэ совсем не backup. И тему лучше всю прочесть.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#16 
  L@nixx прохожий20.06.12 09:51
NEW 20.06.12 09:51 
в ответ BSDLamer 18.06.12 17:05
ну я из тех соображений, что мыло изменяется один раз. можно конечно извращаться, но я говорю о рядовом пользователе. поэтому большой разницы иметь одно и от же мыло в нескольких копиях смысла не вижу. архивации в полне достаточно.
ща посмотрю. ;)
#17 
  L@nixx прохожий20.06.12 09:59
NEW 20.06.12 09:59 
в ответ BSDLamer 18.06.12 17:05, Последний раз изменено 20.06.12 10:06 (L@nixx)
http://foren.germany.ru/showmessage.pl?Number=21654213&Board=linux
по моему это самое главное, вызывающее гемор, не так ли? :)
а так конечно с ОХ-ом как то разбирался. интересно какой MDA используется: courier, curys. скорее всего последний. если так то там есть возможность репликации. по этому смысла трогать мыло помимо MDA не вижу.
#18 
BSDLamer Хвостатый Carpal Tunnel20.06.12 10:46
BSDLamer
NEW 20.06.12 10:46 
в ответ L@nixx 20.06.12 09:51
В ответ на:
ну я из тех соображений, что мыло изменяется один раз. можно конечно извращаться, но я говорю о рядовом пользователе. поэтому большой разницы иметь одно и от же мыло в нескольких копиях смысла не вижу. архивации в полне достаточно.

достаточно архивации или нет, это уже второстепенный вопрос.
Backup должен быть и работать как часы.
Backup нужен для restore/recovery всего сервера, в случае если ты сервер потерял вообще. Как сам понимаешь из архива сервер не восстановить. Второе назначение backup это single item recovery или single mailbox recovery.
Будь то мыло, заметка, appointment или содержание адресной книги или вообще весь ящик одного или нескольких юзеров. Насколько я знаю в архиве хранится только мыло, все остальное ты из архива не вытащишь и из архива не восстановишь.
Надо мыло архивировать или не надо, до сих пор еще никто не знает. Закон об архивировании бизнес-мыла нарушает другие законы.
Для архивации мыла нужны отдельные и определенные ресурсы + хранить 10 лет, не у всех есть бютжет. Обычный storage там не прокатит.
Я конечно понимаю что многие хотят на этом сделать бабки. Сам давно работал на контору которая кроме всего прочего пыталась впарить такие вот продукты, пугая клиента законами, правда многого при этом не договаривала.
Кстати весь топик на самом деле вообще о другом. Тут ТС пытается изобрести заново колесо и нажить гемор. Вместо того чотбы утюжить производителя софта, который за это еще и бабло поимел. Но тут у всех ситуации индивидуальные, поэтому судить не берусь.
Еще ТС был предложен альтернативный вариант, с зеркалом продуктивного сервера. Такой вариант себя оправдал в боевых ситуациях но правдо с другим продуктом.
Такие дела...
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#19 
  L@nixx прохожий20.06.12 11:41
NEW 20.06.12 11:41 
в ответ BSDLamer 20.06.12 10:46
по поводу бэкапов я не спорю! имел ввиду что бэкапить мыло я стал бы дополнительно.
по поводу производителя согласен.
по поводу ОХ не было ничего сказано. у тех клиентов, которых я знал сплошные проблемы с этой груп-тварью. с некоторых пор даже Univention предлагает как альтенативную groupware - zarafa и kolab, хотя раньше концентрировались по-моему только на ОХ.
#20 
BSDLamer Хвостатый Carpal Tunnel20.06.12 16:59
BSDLamer
NEW 20.06.12 16:59 
в ответ L@nixx 20.06.12 11:41
В ответ на:
по поводу ОХ не было ничего сказано. у тех клиентов, которых я знал сплошные проблемы с этой груп-тварью.

в смысле небыло ничего сказано. Весь топик про OX. A а проблемы с любой групварью есть. Exchange админил когданить ? :)
К счастью мне уже давно не надо ковыряться в этом групварном дерьме :)
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#21 
  L@nixx прохожий20.06.12 17:25
NEW 20.06.12 17:25 
в ответ BSDLamer 20.06.12 16:59
видел как это делают и понял что мне это не нужно. :)
#22 
Regenwolke постоялец21.06.12 16:39
Regenwolke
NEW 21.06.12 16:39 
в ответ BSDLamer 20.06.12 16:59
нп
спасибо всем!
В ответ на:
courier, curys. скорее всего последний. если так то там есть возможность репликации. по этому смысла трогать мыло помимо MDA не вижу.

cyrus ))
вполне возможно, я увы тут не в теме слегонца...
BSDLamer,
сердечное тебе Данке за поддержку !
поразводим немного лирику...
Насчет Exchange я так скажу, приходилось с ним иметь дело где то около года... Отдельные мылы восстанавливались и синхронизировались в ящик прекрасно посредством встроенной фичи в Veritas Backup Exec
При потере сервера был конечно геморрой.
Но я думаю это касается не только exchange. Если не имеешь полной боевой копии.
OX - виртуальный сервер на Suse (SLES), делается копия-имидж машинки через VCB, архив, как ты выразился, тупо - архивируется вся партиция где находятся мылы. В этом то вся беда, когда теряешь сервер целиком, процесс восстановления из архива может затянуться на веки вечные, как было у нас в случае тогда с exchange...
когда нужно быстро поднят рабочий вариант - тут да, без лишних слов! именно по этим соображениям я считаю надо в первую очередь продавливать.
но не под тем соусом, что касается восстановления отдельных мылов, чтоб дать юзерам возможность подключения к бекапному мейл-серверу (на это вряд ли поведутся). А там уже можно будет "внушить", что и так будет проще и удобнее ))
для этого и был собс-но тот самый софт, упомянутый ранее, все, о нем разговору нет больше...((
да, поэтому и выставлена альтернатива - кидать мылы в папку юзера и "показать" их ему для него в читабельном виде.
в общем, состряпала я скриптец, оттестила уже, все работает как надо, получился - пальчики оближешь )) чувствую себя героем-первопроходцем...
все мылы с красивыми названиями тем и отсортиваны как надо по папкам.
по поводу крокозябр, этот кусок - написал мне один умелец на awk..
Принцип, как мне объяснили: В части формата темы " =?<кодировка>?Q?<Сам текст темы письма>?=" (Quonted printable) каждый из подозрительных символов (немецкие с умлаутами, или русские любые) замен на трехбайтовую конструкцию. Первый байт - символ равенства, а два других - это шестнадцатеричный код этого символа. Ищутся такие конструкции и сворачиваются их обратно в один байт.
т.е. если по поводу отдельных мылов - если не нарастет еще каких нить костылей или граблей, то конструкция себя для своей цели вполне может и оправдать. Поживем-увидим

#23 
  L@nixx прохожий21.06.12 17:24
NEW 21.06.12 17:24 
в ответ Regenwolke 21.06.12 16:39
по поводу репликации. все на самом деле просто. я работал с ОХ, как я уже говорил и мне приходилось восстанавливать то или иное мыло/папки с мылом.
я могу сказать что успешно опробовал следующий конструкт.
1. бэкапы мыла делались rsync
2. для восстановления обратный rsync в соответсвующую папку
3. cyrus reconstruct и все готово.
для бэкапов использовались скрипты peer heinlein. приимущество их в том что при ротировании создаются не копии файлов а всего лишь линки, если файл один и тот же.
зачем создавать какие то файлы с названиями. на крайний случай создавай подпапку и восстанавливай туда, потом реконструкт и юзверь должен лишь ее абонировать.
ну если работает, то ура! :)
#24 
Regenwolke постоялец21.06.12 18:22
Regenwolke
NEW 21.06.12 18:22 
в ответ L@nixx 21.06.12 17:24
В ответ на:
я могу сказать что успешно опробовал следующий конструкт.
1. бэкапы мыла делались rsync
2. для восстановления обратный rsync в соответсвующую папку
3. cyrus reconstruct и все готово.

точняк. так и есть.
на самом деле пофик с чего восстанавливаешь напрямую в ящик, реконструкт производится.. а потом абонируешь папку по новой. Кажется так?.. Это уже далее пользователю по указке админа почтовика делалось
#25 
Regenwolke постоялец21.06.12 18:28
Regenwolke
NEW 21.06.12 18:28 
в ответ L@nixx 21.06.12 17:24, Последний раз изменено 21.06.12 18:33 (Regenwolke)
В ответ на:
зачем создавать какие то файлы с названиями. на крайний случай создавай подпапку и восстанавливай туда, потом реконструкт и юзверь должен лишь ее абонировать.
ну если работает, то ура! :)

уп-с... тока потом прочла до конца после того как запостила! хаха, именно!
а по поводу файлов
ты почитай, я в пред теме писала.. Там файлы все имеют вид - несколько цифр и точка. И софтина-клиент Sesam (ты наверное ее тоже знаешь, раз знаком с окс-ом), как раз позволяла отловить выборочно мылы, по названиям темы, какие хотел пользователь.
#26 
1 2 все