ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
* [Sysadmins] фильтры в procmail
@ 2009-04-08  8:21 Михаил Шувалов
  2009-04-08 10:39 ` Alexey I. Froloff
  0 siblings, 1 reply; 9+ messages in thread
From: Михаил Шувалов @ 2009-04-08  8:21 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

Добрый день!

Решил таки попробовать разобраться с procmail и что-то не очень
получается с фильтром. Создал такой вот .procmailrc для тестирования

$ cat .procmailrc
PATH=/bin:/usr/bin:/usr/bin
LOGFILE=fromyandex.log

:0
* ^From.*yandex
{
   mailname="yan113"

   :0 cw
   /home/mike/Mail/$mailname

   :0 fw
   | "/usr/bin/ripmime -i  /home/mike/Mail/$mailname -d /home/mike/Mail/files"
}


Письмо копируется в вайл  /home/mike/Mail/$mailname, а вот ripmime
пишет, что нет такого файла

$ cat fromyandex.log
/bin/sh: /usr/bin/ripmime -i /home/mike/Mail/$mailname -d
/home/mike/Mail/files: No such file or directory
procmail: Error while writing to "/usr/bin/ripmime -i
-/home/mike/Mail/$mailname -d /home/mike/Mail/files"
procmail: Program failure (127) of "/usr/bin/ripmime -i
/home/mike/Mail/$mailname -d /home/mike/Mail/files"
From mike@to-18-2.fss.spb.ru  Tue Apr  7 19:09:55 2009
 Subject: test 11
 Folder: /var/spool/mail/mike                                            69410

Подскажите, где грабли?

-- 
С уважением,
Михаил Шувалов

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-08  8:21 [Sysadmins] фильтры в procmail Михаил Шувалов
@ 2009-04-08 10:39 ` Alexey I. Froloff
  2009-04-08 13:05   ` Михаил Шувалов
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey I. Froloff @ 2009-04-08 10:39 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 330 bytes --]

* Михаил Шувалов <shuvalov.mv@> [090408 12:23]:
>    | "/usr/bin/ripmime -i  /home/mike/Mail/$mailname -d /home/mike/Mail/files"
> /bin/sh: /usr/bin/ripmime -i /home/mike/Mail/$mailname -d
> /home/mike/Mail/files: No such file or directory

> Подскажите, где грабли?
В кавычках вокруг команды.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-08 10:39 ` Alexey I. Froloff
@ 2009-04-08 13:05   ` Михаил Шувалов
  2009-04-08 13:29     ` Alexey I. Froloff
  0 siblings, 1 reply; 9+ messages in thread
From: Михаил Шувалов @ 2009-04-08 13:05 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

8 апреля 2009 г. 14:39 пользователь Alexey I. Froloff написал:
> * Михаил Шувалов <shuvalov.mv@> [090408 12:23]:
>>    | "/usr/bin/ripmime -i  /home/mike/Mail/$mailname -d /home/mike/Mail/files"
>> /bin/sh: /usr/bin/ripmime -i /home/mike/Mail/$mailname -d
>> /home/mike/Mail/files: No such file or directory
>
>> Подскажите, где грабли?
> В кавычках вокруг команды.
>
Спасибо.

Видимо меня сбила с толку ругань в логе, такая как и сечас вываливается:

[mike@to-18-2 ~]$ cat fromyandex.log
procmail: Error while writing to "/usr/bin/ripmime"
procmail: Rescue of unfiltered data succeeded
From mike@to-18-2.fss.spb.ru  Wed Apr  8 16:53:04 2009
 Subject: test 28
  Folder: /var/spool/mail/mike						  69420

Как-то от этого можно избавиться (от строчек с ошибками, начинающихся
на procmail)?

-- 
С уважением,
Михаил Шувалов

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-08 13:05   ` Михаил Шувалов
@ 2009-04-08 13:29     ` Alexey I. Froloff
  2009-04-09 14:28       ` Михаил Шувалов
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey I. Froloff @ 2009-04-08 13:29 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 395 bytes --]

* Михаил Шувалов <shuvalov.mv@> [090408 17:14]:
> procmail: Error while writing to "/usr/bin/ripmime"
> procmail: Rescue of unfiltered data succeeded

> Как-то от этого можно избавиться (от строчек с ошибками, начинающихся
> на procmail)?
А ripmime это точно фильтр?  Который на выходе (stdout) выдаёт
модифицированное письмо?  Если нет, то флаг 'f' лишний.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-08 13:29     ` Alexey I. Froloff
@ 2009-04-09 14:28       ` Михаил Шувалов
  2009-04-09 14:58         ` Alexey I. Froloff
  0 siblings, 1 reply; 9+ messages in thread
From: Михаил Шувалов @ 2009-04-09 14:28 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

8 апреля 2009 г. 17:29 пользователь Alexey I. Froloff написал:
> * Михаил Шувалов <shuvalov.mv@> [090408 17:14]:
>> procmail: Error while writing to "/usr/bin/ripmime"
>> procmail: Rescue of unfiltered data succeeded
>
>> Как-то от этого можно избавиться (от строчек с ошибками, начинающихся
>> на procmail)?
> А ripmime это точно фильтр?  Который на выходе (stdout) выдаёт
> модифицированное письмо?  Если нет, то флаг 'f' лишний.
>
Да, действительно, ripmime не является фильтром (он извлекает из писем
приатаченные файлы), убрал 'f' и немного переделал условия:

$ cat /home/mike/.procmailrc
PATH=/bin:/usr/bin
LOGFILE=fromyandex.log

:0
* ^From.*shmikes@yandex.ru
{
    mailname=`mktemp -t msg.XXXXX`
    :0 c
    $mailname
    :0
    | /home/mike/testpm $mailname
}

Как я себе представляю, должно работать так. При приходе сообщения с
определенного адреса выполняются правила, в которых это сообщение
копируется во временный файл, имя которого передается скрипту. В этом
скрипте из файла с письмом извлекается приатаченный файл, после чего
файл с сообщением удаляется. При этом писмо так же направляется в мой
ящик. Отправляю два сообщения с вложениями. Получаю одно. При этом
procmail обрабатывает оба сообщения и извлекает вложения из _обоих_
писем. т.е. где-то теряется одно письмо.
Вот скрипт, который выполняется из правила:

$ cat /home/mike/testpm
#!/bin/bash

/usr/bin/ripmime -i $1 -d /home/mike/Mail/files
rm -f $1

Ии вот лог, который пишет procmail

$ cat /home/mike/fromyandex.log
From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:46:01 2009
 Subject: test 73
  Folder: /home/mike/testpm /tmp/msg.eVC2M				  33297
procmail: Error while writing to "/home/mike/testpm"
From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:54:54 2009
 Subject: test 72
  Folder: /var/spool/mail/mike						  69406

Первое сообщение (в логе с темой test 73) так и не попало в мой ящик.
Что не так, почему одно сообщение доходит, а другое нет?
И еще вопрос. Почему, если я добавляю условие (дабы отбирать сообщения
только с вложениями)

:0
* ^From.*shmikes@yandex.ru
* ^Content-Disposition: attachment;

то вообще не выполняются правила (т.е. пришедшее сообщение перестает
подпадать под условие)?

-- 
С уважением,
Михаил Шувалов

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-09 14:28       ` Михаил Шувалов
@ 2009-04-09 14:58         ` Alexey I. Froloff
  2009-04-10 18:48           ` Михаил Шувалов
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey I. Froloff @ 2009-04-09 14:58 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 1102 bytes --]

* Михаил Шувалов <shuvalov.mv@> [090409 18:30]:
>     mailname=`mktemp -t msg.XXXXX`
>     :0 c
>     $mailname
>     :0
>     | /home/mike/testpm $mailname
Зачем такой ужос?  repmime не работает через пайп?

> From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:46:01 2009
>  Subject: test 73
>   Folder: /home/mike/testpm /tmp/msg.eVC2M				  33297
> procmail: Error while writing to "/home/mike/testpm"
testpm вернул ненулевой код возврата или отказался читать stdin.
Кстати, есть флаг i для таких целей.

> From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:54:54 2009
>  Subject: test 72
>   Folder: /var/spool/mail/mike						  69406
А тут блок просто не выполнился.

> Первое сообщение (в логе с темой test 73) так и не попало в мой ящик.
И не попадёт.  На правиле с | обработка письма заканчивается,
надо carbon'ить в этом правиле или при открытии блока.

> * ^From.*shmikes@yandex.ru
Эта строчка нахдится в заголовках письма.

> * ^Content-Disposition: attachment;
А эта - в теле.  Не хватает флагов.

Начните с чтения procmailrc(5) и procmailex(5).

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-09 14:58         ` Alexey I. Froloff
@ 2009-04-10 18:48           ` Михаил Шувалов
  2009-04-10 22:12             ` Alexey I. Froloff
  0 siblings, 1 reply; 9+ messages in thread
From: Михаил Шувалов @ 2009-04-10 18:48 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

В Чтв, 09/04/2009 в 18:58 +0400, Alexey I. Froloff пишет:
> * Михаил Шувалов <shuvalov.mv@> [090409 18:30]:
> >     mailname=`mktemp -t msg.XXXXX`
> >     :0 c
> >     $mailname
> >     :0
> >     | /home/mike/testpm $mailname
> Зачем такой ужос?  repmime не работает через пайп?
>
repmime работает через pipe, но полученный файл нужно дальше
обрабатывать, для этого и приходится писать скрипт. Если я что-то
перемудриваю/недомудриваю - советы принимаются.
Нужно:
1. извлечь файл архива из полученного письма
2. проанализировать имя файла архива и создать соответствующий каталог
3. разархивировать полученный архив в созданный каталог

> > From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:46:01 2009
> >  Subject: test 73
> >   Folder: /home/mike/testpm /tmp/msg.eVC2M                            33297
> > procmail: Error while writing to "/home/mike/testpm"
> testpm вернул ненулевой код возврата или отказался читать stdin.
> Кстати, есть флаг i для таких целей.
>
Я про этот флаг знаю, просто хотелось понять почему так происходит.

> > From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:54:54 2009
> >  Subject: test 72
> >   Folder: /var/spool/mail/mike                                                69406
> А тут блок просто не выполнился.
>
Почему Вы так решили? Ведь и извлечение файла произошло и копия письма
ушла в мой ящик.

> > Первое сообщение (в логе с темой test 73) так и не попало в мой ящик.
> И не попадёт.  На правиле с | обработка письма заканчивается,
> надо carbon'ить в этом правиле или при открытии блока.
>
т.е. во втором правиле вложенного блока нужно было добавить флаг "с"?

> > * ^From.*shmikes@yandex.ru
> Эта строчка нахдится в заголовках письма.
>
> > * ^Content-Disposition: attachment;
> А эта - в теле.  Не хватает флагов.
>
Отправил сообщение, а потом уже сообразил что к чему :(

> Начните с чтения procmailrc(5) и procmailex(5).
>
Я всегда начинаю с прочтения манов, но не всегда сразу сообразишь как
правильно применять тот или иной параметр.

Собственно все получилось с таким правилом

$ cat .procmailrc
PATH=/bin:/usr/bin
LOGFILE=fromyandex

:0 c
* ^From.*shmikes@yandex.ru
| /home/mike/testmail

и дальше в testmail я выполняю поставленную задачу.

Если есть другие предожения - с удовольствием выслушаю.

-- 
С уважением,
Михаил Шувалов

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-10 18:48           ` Михаил Шувалов
@ 2009-04-10 22:12             ` Alexey I. Froloff
  2009-04-11 13:47               ` Михаил Шувалов
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey I. Froloff @ 2009-04-10 22:12 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 819 bytes --]

* Михаил Шувалов <shuvalov.mv@> [090410 22:51]:
> > > From mike@to-18-2.fss.spb.ru  Thu Apr  9 17:54:54 2009
> > >  Subject: test 72
> > >   Folder: /var/spool/mail/mike                                                69406
> > А тут блок просто не выполнился.
> Почему Вы так решили? Ведь и извлечение файла произошло и копия письма
> ушла в мой ящик.
Если письмо попало в дефолтный бокс, значит оно не обработалось
правилом.

> Собственно все получилось с таким правилом
> :0 c
> * ^From.*shmikes@yandex.ru
> | /home/mike/testmail
> Если есть другие предожения - с удовольствием выслушаю.
Можно добавить в начало файла что-то вроде:

tmpfile="$(mktemp -t msg.XXXXXXXXXX)"
trap 'rm -f -- "$tmpfile"' EXIT
cat > "$tmpfile"

И дальше всё делать с этим временным файлом.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Sysadmins] фильтры в procmail
  2009-04-10 22:12             ` Alexey I. Froloff
@ 2009-04-11 13:47               ` Михаил Шувалов
  0 siblings, 0 replies; 9+ messages in thread
From: Михаил Шувалов @ 2009-04-11 13:47 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

В Сбт, 11/04/2009 в 02:12 +0400, Alexey I. Froloff пишет:
> * Михаил Шувалов <shuvalov.mv@> [090410 22:51]:
> > Собственно все получилось с таким правилом
> > :0 c
> > * ^From.*shmikes@yandex.ru
> > | /home/mike/testmail
> > Если есть другие предожения - с удовольствием выслушаю.
> Можно добавить в начало файла что-то вроде:
> 
> tmpfile="$(mktemp -t msg.XXXXXXXXXX)"
> trap 'rm -f -- "$tmpfile"' EXIT
> cat > "$tmpfile"
> 
> И дальше всё делать с этим временным файлом.
> 
Спасибо. Попробую и так.

-- 
С уважением,
Михаил Шувалов



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-04-11 13:47 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-08  8:21 [Sysadmins] фильтры в procmail Михаил Шувалов
2009-04-08 10:39 ` Alexey I. Froloff
2009-04-08 13:05   ` Михаил Шувалов
2009-04-08 13:29     ` Alexey I. Froloff
2009-04-09 14:28       ` Михаил Шувалов
2009-04-09 14:58         ` Alexey I. Froloff
2009-04-10 18:48           ` Михаил Шувалов
2009-04-10 22:12             ` Alexey I. Froloff
2009-04-11 13:47               ` Михаил Шувалов

ALT Linux sysadmins discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
		sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
	public-inbox-index sysadmins

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sysadmins


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git