2015-05-05 3 views
0

Я должен отрезать тело почты ниже определенной строки. Кроме того, сообщение кодируется base-64. Этот рецепт отлично работает:Procmail: подкомплект фильтра затем изменить почтовый ящик

:0fb 
| base64 -d 
:0fb 
|sed '/string/,$d' 
:0fb 
| base64 

Рецепт первый декодирует тело, делает то, что мне нужно, затем кодирует обратно то, что остается. Но если бы я попытался добавить некоторую фильтрацию она заканчивается сообщением с пустым телом:

:0 
* ^Subject.*sometext 
{ 
:0fb 
|base 64 -d 
:0fb 
|sed '/string/,$d' 
:0fb 
|base 64 
} 

ли я пропустить что-нибудь?

ответ

0

Непосредственная проблема заключается в том, что вам не хватает символа трубы до base64 -d.

Однако вы можете легко свернуть это в одно действие.

:0fb 
* ^Subject:.*sometext 
| base64 -d | sed '/string/,$d' | base64 

Выполнение этой обработки в конвейере оболочки немного непривлекательным в том, что на самом деле это не способ, чтобы избежать фильтра, когда это не-оп (т.е. когда string не кодируется в теле сообщения). Для эффективности и элегантности вам может понадобиться преобразовать это в простой скрипт Python (или что у вас есть), который просто прерывается, если строка, которую вы хотите отфильтровать, отсутствует.

+0

Хм, мне нравится скрипт bash :) Персонаж трубы был потерян во время редактирования моего сообщения, исправлено. – Grzegorz

 Смежные вопросы

  • Нет связанных вопросов^_^