Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова не работает :(( Сменил уже и chmod на 777 - никак.
Подскажите - может кто сталкивался - в каком направлении рыть?
дошло вот до чего:
/etc/procmailrc
#mail 1
:0
* ^From:.*name1
mail_for_forward1
#mail 2
:0
* ^From:.*name2
mail_for_forward2
Дальше в /etc/cron.hourly пихай файло:#!/bin/sh
DIR=/var/spool/mqueue/ #path to dir#mail 1
IFTMP=$(ls $DIR | grep mail_for_forward1)
if [ -z $IFTMP ]; then
IFTMP="file_not_found"
fi
if [ $IFTMP = "mail_for_forward1" ]; then #if exists mail
cat $DIR"mail_for_forward1" >> /var/spool/mail/user1
rm $DIR"mail_for_forward1"
fi
#mail 2
IFTMP=$(ls $DIR | grep mail_for_forward2)
if [ -z $IFTMP ]; then
IFTMP="file_not_found"
fi
if [ $IFTMP = "mail_for_forward2" ]; then #if exists mail
cat $DIR"mail_for_forward2" >> /var/spool/mail/user2
rm $DIR"mail_for_forward2"
fi
И раз в час приходящее рассылается. Но почему все так криво? Почта лежит в одной куче ,и создать .procmailrc в локальной директории как во всех красивых примерах - не выходит :(( не срабатывает. а если просто указать -#mail 1
:0
* ^From:.*name1
! user1
то понятно дело циклит мыло - потому как передает, подхватывает каспер (он еще тоже гад мешает :) ) и снова к этому правилу обращается. замкнутый круг.
Есть возможность задать | formail и сменить поле From - но не срабатывает тоже. ГДЕ ГРАБЛИ?
>Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в
>директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все
>мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова
>не работает :(( Сменил уже и chmod на 777 - никак.
>
>Подскажите - может кто сталкивался - в каком направлении рыть?/etc/procmailrc не пробовал? Ведь, судя по всему, procmail вызывается не от имени юзера.
>
>/etc/procmailrc не пробовал? Ведь, судя по всему, procmail вызывается не от имени
>юзера.то то и оно, что про /etc/procmail я написал второе сообщение - длинное... пробовал. но грабли где-то мешают пройти...
>Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в
>директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все
>мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова
>не работает :(( Сменил уже и chmod на 777 - никак.
>
>Подскажите - может кто сталкивался - в каком направлении рыть?Вообще не пойму в чем проблема.
Действительно дел в том от кого запущен процмаил.
Если процмыл прикручен к кому либо (сендмыл или фетчмыл) вот и смотри от кого они запущены. А вообще попробуй запихнуть в /root
Думаю поможет.
>
>Вообще не пойму в чем проблема.
>Действительно дел в том от кого запущен процмаил.
>Если процмыл прикручен к кому либо (сендмыл или фетчмыл) вот и смотри
>от кого они запущены. А вообще попробуй запихнуть в /root
>Думаю поможет.Нет, стоп! вопрос в другом! Письма-то он сортирует. Но вся почта локальных юзеров лежит в одном месте. И, естественно, когда правило срабатывает, то письмо пытается переложиться с места на место в одной папке и пять нарывается на правило. При перегладывании (правило "! user") все заголовки остаются! Поэтому и пришлось написать тот изврат, который приведен. А от кого - да какая разнича! CHMOD 777 у файла...
Во всех примерах приводится вариант сортировки када юзера сидят по разным папкам... $HOMEDIR/user - а при установке сендмыла по умлолчанию - они только в /var/spool/mail - я не думаю что надо всех рассаживать - 20 юзеров - квоты не грозят совсем. А простота проверки у кого что в ящиках налицо. Хотя это уже разговор на другую тему :))
Трабла в том - как изменить заголовок...
Я так понял procmail прикручен к sendmail, а ты для доставки почты после разбора используешь !user. Так ты просто пиши в файл /var/spool/mail/user либо $HOME/ (домашний каталог юзера.) тогда sendmail не бдет срабатыватьи передавать управление procmail`у. Все тоже самое только без !
>Я так понял procmail прикручен к sendmail, а ты для доставки почты
>после разбора используешь !user. Так ты просто пиши в файл /var/spool/mail/user
>либо $HOME/ (домашний каталог юзера.) тогда sendmail не бдет срабатыватьи передавать
>управление procmail`у. Все тоже самое только без !Точно! все работает, но для 1 пользователя. А если письмо надо разослать двоим? В случае !user помогали (бы) aliases для sendmail :((
>>Я так понял procmail прикручен к sendmail, а ты для доставки почты
>>после разбора используешь !user. Так ты просто пиши в файл /var/spool/mail/user
>>либо $HOME/ (домашний каталог юзера.) тогда sendmail не бдет срабатыватьи передавать
>>управление procmail`у. Все тоже самое только без !
>
>Точно! все работает, но для 1 пользователя. А если письмо надо разослать
>двоим? В случае !user помогали (бы) aliases для sendmail :((Попробуй так.
:0
*условие
{
:0
/var/spool/mail/user1
:0
/var/spool/mail/user2
}точно не уверен но приблизительно так.
>
>Попробуй так.
>:0
>*условие
>{
>:0
>/var/spool/mail/user1
>:0
>/var/spool/mail/user2
>}
>
>точно не уверен но приблизительно так.Могу сказать точно - в этом случае мыло получает только user1. А в man написано что чиста одна строка может быть с правилами после условия :((
>>
>>Попробуй так.
>>:0
>>*условие
>>{
>>:0
>>/var/spool/mail/user1
>>:0
>>/var/spool/mail/user2
>>}
>>
>>точно не уверен но приблизительно так.
>
>Могу сказать точно - в этом случае мыло получает только user1. А
>в man написано что чиста одна строка может быть с правилами
>после условия :((попробуй добавить с.
:0 c
*условие
{
:0 c
/var/spool/mail/user1
:0
/var/spool/mail/user2
......
:0
/var/spool/mail/userN}
>
>попробуй добавить с.
>
>:0 c
>*условие
>{
>:0 c
>/var/spool/mail/user1
>:0
>/var/spool/mail/user2
>......
>:0
>/var/spool/mail/userN
>
>}Короче осталось полбеды :))) получатель получает 2 письма :) причет независимо, стоит ли он в правиле или нет. Если правило для него - значит писем будет 2 :))) Хитро млин слов нет мозги кипят :))))))
>>
>>попробуй добавить с.
>>
>>:0 c
>>*условие
>>{
>>:0 c
>>/var/spool/mail/user1
>>:0
>>/var/spool/mail/user2
>>......
>>:0
>>/var/spool/mail/userN
>>
>>}
>Короче осталось полбеды :))) получатель получает 2 письма :) причет независимо, стоит
>ли он в правиле или нет. Если правило для него -
>значит писем будет 2 :))) Хитро млин слов нет мозги кипят
>:))))))
В последнем правиле "с" ставить не надо.
с - означает что берется копия, если последнее правило будет с "с" рецеп будет считаться недоставочным и выполненеие перейдет к следующему рецепту
>В последнем правиле "с" ставить не надо.
>с - означает что берется копия, если последнее правило будет с "с"
>рецеп будет считаться недоставочным и выполненеие перейдет к следующему рецептуСпасибо!
Отлично!
Работает так :)
:0
*условие
{
:0 с
/var/spool/mail/user1
}
и когда идет письмо, его получает тот кому надо + юзер1 . Все супер!
(странное дело - без фигурных скобочек не прокатывало)
Огромное спасибо!
П.С.
Извините, прогнал. Без скобочек делался файл :0 - все ок. сам дурак :))
Еще раз спасибо.
>П.С.
>Извините, прогнал. Без скобочек делался файл :0 - все ок. сам дурак
>:))
>Еще раз спасибо.http://www.ii.com/internet/robots/procmail/qs/
maildir как просто директория
и
MAILDIR как формат