URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 27015
[ Назад ]

Исходное сообщение
"procmail и проблема домашних директорий."

Отправлено dedok , 27-Фев-03 12:20 
Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова не работает :(( Сменил уже и chmod на 777 - никак.
Подскажите - может кто сталкивался - в каком направлении рыть?

Содержание

Сообщения в этом обсуждении
"RE: procmail и проблема домашних директорий."
Отправлено dedok , 27-Фев-03 17:54 
дошло вот до чего:
/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 - но не срабатывает тоже. ГДЕ ГРАБЛИ?


"RE: procmail и проблема домашних директорий."
Отправлено Antonio , 28-Фев-03 11:35 
>Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в
>директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все
>мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова
>не работает :(( Сменил уже и chmod на 777 - никак.
>
>Подскажите - может кто сталкивался - в каком направлении рыть?

/etc/procmailrc не пробовал? Ведь, судя по всему, procmail вызывается не от имени юзера.


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 28-Фев-03 11:40 
>
>/etc/procmailrc не пробовал? Ведь, судя по всему, procmail вызывается не от имени
>юзера.

то то и оно, что про /etc/procmail я написал второе сообщение - длинное... пробовал. но грабли где-то мешают пройти...


"RE: procmail и проблема домашних директорий."
Отправлено teebot , 28-Фев-03 11:50 
>Требуется отсортировывать некоторые письма пользователей. Создаю файло .procmailrc - запихиваю его в
>директорию юзера. Не работает. ИМХО грабли потому что sendmail пихает все
>мыло всех пользователей в /var/spool/mail . Ок. Копирую файл туда. Снова
>не работает :(( Сменил уже и chmod на 777 - никак.
>
>Подскажите - может кто сталкивался - в каком направлении рыть?

Вообще не пойму в чем проблема.
Действительно дел в том от кого запущен процмаил.
Если процмыл прикручен к кому либо (сендмыл или фетчмыл) вот и смотри от кого они запущены. А вообще попробуй запихнуть в /root
Думаю поможет.


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 28-Фев-03 12:02 
>
>Вообще не пойму в чем проблема.
>Действительно дел в том от кого запущен процмаил.
>Если процмыл прикручен к кому либо (сендмыл или фетчмыл) вот и смотри
>от кого они запущены. А вообще попробуй запихнуть в /root
>Думаю поможет.

Нет, стоп! вопрос в другом! Письма-то он сортирует. Но вся почта локальных юзеров лежит в одном месте. И, естественно, когда правило срабатывает, то письмо пытается переложиться с места на место в одной папке и пять нарывается на правило. При перегладывании (правило "! user") все заголовки остаются! Поэтому и пришлось написать тот изврат, который приведен. А от кого - да какая разнича! CHMOD 777 у файла...
Во всех примерах приводится вариант сортировки када юзера сидят по разным папкам... $HOMEDIR/user - а при установке сендмыла по умлолчанию - они только в /var/spool/mail - я не думаю что надо всех рассаживать - 20 юзеров - квоты не грозят совсем. А простота проверки у кого что в ящиках налицо. Хотя это уже разговор на другую тему :))
Трабла в том - как изменить заголовок...


"RE: procmail и проблема домашних директорий."
Отправлено teebot , 28-Фев-03 14:00 
Я так понял procmail прикручен к sendmail, а ты для доставки почты после разбора используешь !user. Так ты просто пиши в файл /var/spool/mail/user либо $HOME/ (домашний каталог юзера.) тогда sendmail не бдет срабатыватьи передавать управление procmail`у. Все тоже самое только без !

"RE: procmail и проблема домашних директорий."
Отправлено dedok , 28-Фев-03 14:09 
>Я так понял procmail прикручен к sendmail, а ты для доставки почты
>после разбора используешь !user. Так ты просто пиши в файл /var/spool/mail/user
>либо $HOME/ (домашний каталог юзера.) тогда sendmail не бдет срабатыватьи передавать
>управление procmail`у. Все тоже самое только без !

Точно! все работает, но для 1 пользователя. А если письмо надо разослать двоим? В случае !user помогали (бы) aliases для sendmail :((


"RE: procmail и проблема домашних директорий."
Отправлено teebot , 28-Фев-03 14:24 
>>Я так понял 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
}

точно не уверен но приблизительно так.


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 28-Фев-03 14:37 
>
>Попробуй так.
>:0
>*условие
>{
>:0
>/var/spool/mail/user1
>:0
>/var/spool/mail/user2
>}
>
>точно не уверен но приблизительно так.

Могу сказать точно - в этом случае мыло получает только user1. А в man написано что чиста одна строка может быть с правилами после условия :((


"RE: procmail и проблема домашних директорий."
Отправлено teebot , 28-Фев-03 17:41 
>>
>>Попробуй так.
>>: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

}


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 28-Фев-03 18:10 
>
>попробуй добавить с.
>
>:0 c
>*условие
>{
>:0 c
>/var/spool/mail/user1
>:0
>/var/spool/mail/user2
>......
>:0
>/var/spool/mail/userN
>
>}

Короче осталось полбеды :))) получатель получает 2 письма :) причет независимо, стоит ли он в правиле или нет. Если правило для него - значит писем будет 2 :))) Хитро млин слов нет мозги кипят :))))))


"RE: procmail и проблема домашних директорий."
Отправлено teebot , 28-Фев-03 18:51 
>>
>>попробуй добавить с.
>>
>>:0 c
>>*условие
>>{
>>:0 c
>>/var/spool/mail/user1
>>:0
>>/var/spool/mail/user2
>>......
>>:0
>>/var/spool/mail/userN
>>
>>}
>Короче осталось полбеды :))) получатель получает 2 письма :) причет независимо, стоит
>ли он в правиле или нет. Если правило для него -
>значит писем будет 2 :))) Хитро млин слов нет мозги кипят
>:))))))


В последнем правиле "с" ставить не надо.
с - означает что берется копия, если последнее правило будет с "с" рецеп будет считаться недоставочным и выполненеие перейдет к следующему рецепту


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 03-Мрт-03 19:26 

>В последнем правиле "с" ставить не надо.
>с - означает что берется копия, если последнее правило будет с "с"
>рецеп будет считаться недоставочным и выполненеие перейдет к следующему рецепту

Спасибо!
Отлично!
Работает так :)
:0
*условие
{
:0 с
/var/spool/mail/user1
}
и когда идет письмо, его получает тот кому надо + юзер1 . Все супер!
(странное дело - без фигурных скобочек не прокатывало)
Огромное спасибо!


"RE: procmail и проблема домашних директорий."
Отправлено dedok , 03-Мрт-03 19:28 
П.С.
Извините, прогнал. Без скобочек делался файл :0 - все ок. сам дурак :))
Еще раз спасибо.



"RE: procmail и проблема домашних директорий."
Отправлено lavr , 03-Мрт-03 19:37 
>П.С.
>Извините, прогнал. Без скобочек делался файл :0 - все ок. сам дурак
>:))
>Еще раз спасибо.

http://www.ii.com/internet/robots/procmail/qs/

maildir как просто директория
и
MAILDIR как формат