Отправляет email-рассылки с помощью сервиса Sendsay

Почтовый фильтр

Фильтр всякого от Subscribe.ru. Удаляет из письма сами-знаете-что ;)

Сам фильтр:
цут хере #!/usr/bin/perl

while (<>) {
$skip=1 if $_ =~ "-\\*-----";
if ($_ =~ "mailto:ask\@subscribe.ru") {
$skip=0;
$skip_this=1;
}
if ($skip==0 && $skip_this==0) {
print;
}
$skip_this=0;
}
и цут хере Применять:

1) На существующем файле в формате mailbox:

cat mbox | sf.pl >mbox-stripped

Проверено мной на своих ящиках. Все ОК ;)

2) Фильтр к procmail:

цут хере # Сначало определимся с местоположением
SUBSCRFLT=$HOME/bin/sf.pl
...

# Применим на практике ;)
:0
* ^List-Id: <comp.soft.linux.discuss.subscribe.ru>
| $SUBSCRFLT >>$MAILDIR/linux.discuss-stripped
и цут хере Так же проверено.

Улучшения всегда приветствуются. Мне вот, например, не нравится фигня
с $skip_this, но сразу в голову ничего другого не пришло. Так, что
если сможете от нее избавится -- пишите.

Всего хорошего.

Ответить   Thu, 1 Jul 2004 19:03:37 +0400 (#182347)

 

Ответы:

i586-asplinux-linux-gnu)

В сообщении от Thu, 1 Jul 2004 19:03:37 +0400 Вы написали:

цут хере #!/bin/awk -f

BEGIN {sk=0;IGNORECASE=1}
/^-\*-----/ {sk=1}
/^from/ {if (sk) print "\n";sk=0}
/^/ {if (!sk) print}
и цут хере Проверено. Но НИКАКИХ ГАРАНТИЙ!

Ответить   Konstantin Korikov Sat, 3 Jul 2004 03:54:31 +0300 (#183214)

 

i686-pc-linux-gnu)

Thu, 1 Jul 2004 19:03:37 +0400 Mike Belopuhov Mike <mkb-mall@l*****.ru> писал:

Окончательный вариант:

/****************************************************/
#!/bin/sh

mkdir stripped

for i do
cat ./$i | sf.pl >./stripped/$i;
done
/****************************************************/

Передаете скрипту в качестве параметра имена файлов и в
директории stripped получаете отфильтрованные письма.

Пример:

Mail {директория с почтой}
| Linux {директория с почтой от Subscribe}
| | sf.pl {чистящий скрипт}
| | clear.sh {вышеуказанный скрипт}
| | * {сами письма}

Выполняем: cd ./Mail/Linux && clear.sh *
Получаем:
Mail {директория с почтой}
| Linux {директория с почтой от Subscribe}
| | stripped {директория с чистыми письмами}
| | sf.pl {чистящий скрипт}
| | clear.sh {вышеуказанный скрипт}
| | * {сами письма}

zOrg

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 9130; Возраст листа: 343; Участников: 1190
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/183498



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать : mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Sat, 3 Jul 2004 20:31:43 +0400 (#183498)

 

i386-asplinux-linux-gnu)

On Sat, 3 Jul 2004 20:31:43 +0400
zOrg <nazgul4ev***@m*****.ru> wrote:

а пожалуйста!

- - - - - - -
#!/usr/bin/perl

$skip= 0;

while (<>) {
/^-\*---/ and $skip=1;
print if!$skip;
}
- - - - - - -

a вот еще такой для почтовых ящиков Sylpheed ;)
Осторожно, работает рекурсивно!!! Чтобы случайно не затереть не те файлы,
скрипт откажется работать если текущий путь не содержит "Mailing lists"
(замените на ту где у вас лежат письма)
Может кто подскажет как это сделать грамотнее...

- - - - - -
#!/bin/sh

if [ ! "`echo "$PWD" | grep 'Mailing lists'`" ]
then
echo "You should be in Mailing lists subdirectories to proceed"
else
for i in `find | egrep '[0123456789]+$'`; do
strip_subscribe_ru.pl < $i > $i.stripped
mv -f $i.stripped $i
done
fi
- - - - - -

Проблемы:

1. все это работает МЕДЛЕННО даже на небольших ящиках
(чтенние построчно -> запись в новый файл -> удаление старого файла)

2. Посоветуйте как их прикрутить к Sylpheed

Ответить   Sun, 4 Jul 2004 00:33:03 +0300 (#183640)

 

i586-asplinux-linux-gnu)

Не будет работать с mbox (вернее удалит все сообщения, после
первого сами знаете с чем).

Ну, если с новыми сообщениями фильтровать еще пару сотен старых
отфильтрованных, то действительно будет медленно.

Зачем? Есть fetchmail и procmail, которые все будут делать сами и
быстро.

Ответить   Konstantin Korikov Sun, 4 Jul 2004 02:51:03 +0300 (#183688)

 

On Sun, Jul 04, 2004 at 02:51:03AM +0300, Konstantin Korikov wrote:

Угу. Потрет все нах...

Чего-то я не понял зачем это надо? Конфигурите его фильтром для каждого
соответствующего входящего письма и ненадо этого всего.

Configuration->Filtering (или Pre/Post-Processing):

Condition: ...
Action: Execute <....>

Насчет того что нужно Filtering или Pre/Post-Processing я не знаю, потому
как Stylpheed не использую.

Да, procmail это получше будет.

PS. Вот пользуюсь я этой штуковиной до сих пор и нет границ моему щастью ;)

Ответить   Mon, 5 Jul 2004 23:15:40 +0400 (#184788)

 

i386-asplinux-linux-gnu)

On Mon, 5 Jul 2004 23:15:40 +0400
Mike Belopuhov <mkb-mall@l*****.ru> wrote:

Sylpheed хранит каждое письмо в отдельном файле поэтому
фильтр ничего нах не потрет, если его использовать там

Вот чуть исправленная версия, работает и на остальных рассылках
Subscribe.ru (это для товарищей с вышеупомянутым мэйлером)

НО НЕ БУДЕТ работать если все письма упакованы в один файл!
В этом случае надо сбрасывать $skip перед каждым новым письмом
(а для этого надо знать какой заголовок будет первый)
Что сказать, пишите патчи.

- - цут - - -
#!/usr/bin/perl

$skip= 0;
$napisat_v_list=0;

while (<>) {

# skip this and all following lines
# just after '-*-----....'
/^-\*---/ and $skip=1;

# print this and all following
# after '-----...' or '======...'
(/^-{5}/ or /^={5}/) and $skip=0;

# these lines are always skipped
/Информационный канал Subscribe.Ru/ and next;

#these lines are always printed
/^Отписать/ and do {
print;
next;
};
/^Написать в лист/ and do {
$napisat_v_list || print;
$napisat_v_list = 1; # do not want to print this more than once
next;
};

print if!$skip;
}

- - цут - - -

Ответить   Tue, 6 Jul 2004 00:29:37 +0300 (#184858)

 

On Tue, Jul 06, 2004 at 12:29:37AM +0300, Alex Dunaevsky wrote:

Да, я потом об этом вспомнил, но... см. ниже

тот скрипт работает для _любых_ входных данных. Оберните с sh, как Вы
и сделали, и получите работоспособную версию для Sylpheed. Не надо делать
версии специально для каждой почтовой программы.

Ответить   Tue, 6 Jul 2004 18:45:06 +0400 (#185356)

 

i586-asplinux-linux-gnu)

Там в справке написано что сообщение не должно изменяться...

А я не пользуюсь, и тоже счаслив, и совесть чиста :).

Ответить   Konstantin Korikov Tue, 6 Jul 2004 05:22:02 +0300 (#184910)

 

On Tue, Jul 06, 2004 at 05:22:02AM +0300, Konstantin Korikov wrote:

Ну я не тестил. Мне незачем ;) С другой стороны нах нужны тогда такие
вещи делать. Раз уж дали волю запускать программы-фильтры, не накладывайте
ограничения на их работу....

А вообще говоря, мне кажется, что в таком случае Pre-Processing должен
подходить.... Но это уже проблемы почитателей sylpheed ;)

Свободные люди в свободной стране, однако ;)

Ответить   Tue, 6 Jul 2004 18:44:58 +0400 (#185355)

 

i386-asplinux-linux-gnu)

On Tue, 6 Jul 2004 18:44:58 +0400
Mike Belopuhov <mkb-mall@l*****.ru> wrote:

а к какому почтовому клиенту procmail лучше прикрутить?
вы сами -то чем пользуетесь?

Ответить   Wed, 7 Jul 2004 02:25:44 +0300 (#185555)

 

i686-pc-linux-gnu)

On Wed, 7 Jul 2004 02:25:44 +0300
Alex Dunaevsky <alex_cr***@b*****.ru> wrote:



Я сделал так:

1)fetchmail забирает почту

2)procmail раскидывает ее по различным ящикам (от разных
корреспондентов)

3)при этом оттуда запускается спам-фильтр bmf. Как результат - procmail
откидывает спам в отдельный ящик (не удаляю автоматически на всякий
случай)

4)wmbiff мониторит пришедшую почту, показывает каждый почтовый
ящик отдельной строкой и дает звуковые сигналы в зависимости от ящика

5)смотрю почту sylpheed-claws

PS: в последнем пункте присутствует неизящное решение - sylpheed-claws
сливает почту вместе и заново разделяет ее. Т. е. повторно работает
фильтрация.

--

С наилучшими пожеланиями
Крохин Анатолий (kraw)
icq 20060869

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 9226; Возраст листа: 347; Участников: 1211
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/185669



-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Крохин Анатолий Александрович Wed, 7 Jul 2004 09:57:35 +0400 (#185669)

 

On Wed, Jul 07, 2004 at 02:25:44AM +0300, Alex Dunaevsky wrote:

Procmail прикручивается в общем к любому почтовику. Но как правило чаще
встречаются конфигурации с mutt, и реже с pine. Все это от того, что mutt
_ничего_ не умеет кроме чтения писем (построение нитей, прочтение писем,
прикрепление аттачей и т.п.), а PINE (к примеру) умеет еще фильтры.

Так вот. В mutt фильтра нет, поэтому "приходится" использовать крутой
procmail. Связка устоявшаяся: fetchmail -> procmail -> mutt+vim -> sendmail.
Каждый делает свое дело на 5+. И я этим пользуюсь. Правда пришел я к этому
не давно (всего пару месяцев назад), хотя почту читаю под Unix несколько
лет. Перешел с PINE.

Если Вы тоже решите перейти, я готов оказать посильную помощь ;)

Ответить   Wed, 7 Jul 2004 12:54:50 +0400 (#185780)

 

i386-asplinux-linux-gnu)

On Wed, 7 Jul 2004 12:54:50 +0400
Mike Belopuhov <mkb-mall@l*****.ru> wrote:

скорее всего так и произойдет :)
Похоже у Sylpheed какие -то глюки с фильтрацией через Execute
А у procmail с этим все ок. Кстати к ней у меня получилось
нормально прицепить свой скрипт фильтрации :) Но обо всем по порядку.

хочу настроить такую связку:
fetchmail -> procmail -> sylpheed
^ ^ пока все остальное
| |
общий спул cортировка/
фильтрация

почитал FAQ по procmail, создал такой конфиг:

- - цут - -
#VERBOSE=yes
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/-Inbox/.
PATH=/bin:/usr/bin:$MAILDIR

:0 f
* ^TO_.*comp\.soft\.linux.*|^From.*Subscribe.Ru.*
| sr_filter.pl

:0
* ^TO_.*linux\.discuss.*
ML-linux.discuss/.

:0
* ^TO_.*linux\.debate.*
ML-linux.debate/.

- - -ну и т.д. в том же духе, для другой почты- - -

/. после директорий т.к. у меня MH a не mbox.
Попробовал на отдельных письмах - работает :)
Попытался прикрутить к Sylpheed: удалил все ее фильтры, и добавил один
`all execute "procmail < %F"'
В результате у меня на каждом получаемом висьме вызывается
сами догадываетесь что и делает свое дело :)
Т.к. все письма Sylpheed по умолчанию кидает в inbox
то procmail все неотсортированные -- в -Inbox, чтобы не было конфликтов.

в общем пришлось добавить еще одну строку фильтров:
`all delete'
т.е. это очищает inbox, оставляя только письма обработанные procmail !

даже fetchmail не понадобился:)

Но Sylpheed не знает что содержимое директорий изменилось
и не перекрашивает их соотвествующим цветом (типа "есть новые сообщения")
и нужно постоянно щелкать "Поиск новых сообщений в папках" :((

может fetchmail окажется для этой цели все же лучше?
Имхо тот способ которым я сейчас пользуюсь - хоть не
страшное, но извращение (программа-фильтр вызывается через фильтр же)

вот тут хотелось бы услышать ваши мнения:)

Ответить   Wed, 7 Jul 2004 19:32:08 +0300 (#186083)

 

On Wed, Jul 07, 2004 at 07:32:08PM +0300, Alex Dunaevsky wrote:

Ну и хорошо ;)

Ему не надо этих \. и проч. Вот как у меня:

цут хере :0
* ^List-Id: <comp.soft.bsd.all.subscribe.ru>
| $SUBSCRFLT >>$MAILDIR/bsd.all

:0
* ^List-Id: <comp.soft.linux.discuss.subscribe.ru>
| $SUBSCRFLT >>$MAILDIR/linux.discuss

:0
* ^To: owl-use***@l*****.com
$MAILDIR/owl-users

:0
* .*
$MAILDIR/default
и хере тоже > /. после директорий т.к. у меня MH a не mbox.

Если в sylpheed есть возможность сделать биндинг на hotkey, чтоб команда
вызывалать (как в mutt), то можно (нужно! ;) выполнить что-нибудь вроде:

fetchmail -a -f ~/.fetchmailrc -m 'procmail -d %T'

Здесь fetchmail отдает письма не MTA (SMTP сервер), а LDA, в качестве
которого исп. procmail.

Мнение одно. mutt. Sylpheed это не очень удобно.

Ответить   Thu, 8 Jul 2004 00:48:08 +0400 (#186252)

 

i386-asplinux-linux-gnu)

On Thu, 8 Jul 2004 00:48:08 +0400
Mike Belopuhov <mkb-mall@l*****.ru> wrote:

'.' - метасимвол в regexp (match any character),
имхо правильнее было бы точку эскейпнуть...

Как match'ить заголовки писем в кодировке koi8-r ?
типа

неужели всю эту фигню писать в regexp'e?

Можно назначить "Действие" (но без хоткея, просто элемент в меню )

а что за магическая опция "-d %T"?

в мане fetchmail:
.....
Some possible MDAs are
"/usr/sbin/sendmail -i -f %F %T",
"/usr/bin/deliver" and "/usr/bin/procmail -d %T"
....

и если несложно пришлите ваш конфиг ~/.fetchmail

Ответить   Thu, 8 Jul 2004 02:28:04 +0300 (#186290)

 

On Thu, Jul 08, 2004 at 02:28:04AM +0300, Alex Dunaevsky wrote:

Да. Но так читабельность ухудшается, а толку не прибавляется...

Я никак не могу найти причины по которой вообще нужно это делать ;) Так что
пока не задаюсь этим вопросом.... Но я вижу, что Крохин Анатолий Александрович
<kraw()bis!ru> уже начал заниматься этим вопросом 8-)

-d это от прокмайла, значит, что будет доставлять тому, который %T, а %T это
от фетчмайла -- local delivery address (т.е. адрес юзера на Вашем хосте).

Ничего такого в нем нет.

ЦУТ ХЕРЕ poll stargate proto pop3 user 'mkb' pass '********' is 'mkb' here;
АНД ЦУТ ХЕРЕ Я забираю почту на stargate, а потом раздаю по POP3.

Ответить   Thu, 8 Jul 2004 13:31:39 +0400 (#186518)

 

i686-pc-linux-gnu)

On Thu, 8 Jul 2004 13:31:39 +0400
Mike Belopuhov <mkb-mall@l*****.ru> wrote:


Начинал, но потом бросиз из-за нехватки времени.

--

С наилучшими пожеланиями
Крохин Анатолий (kraw)
icq 20060869

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 9283; Возраст листа: 348; Участников: 1214
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/186534



-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Крохин Анатолий Александрович Thu, 8 Jul 2004 13:58:22 +0400 (#186534)

 

i686-pc-linux-gnu)


У меня в начале ~/.procmailrc для фильтрации спама:
:0fw
| bmf -p

:0:
* ^X-Spam-Status: Yes
$HOME/.mail/spam



Пытался сделать еще перкодировку заголовков в koi8-r, но то ли по
нехватки времени и настойчивости, или по скудоумию так и не сумел этого
сделать. Может кто-нибудь это сделал procmail'ом?





--

С наилучшими пожеланиями
Крохин Анатолий (kraw)
icq 20060869

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 9274; Возраст листа: 348; Участников: 1214
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/186368



-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Крохин Анатолий Александрович Thu, 8 Jul 2004 09:39:19 +0400 (#186368)