* [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