[Comm] Maildrop filtering

Dmitry Lebkov =?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Пт Май 16 20:56:12 MSD 2003


On Fri, 16 May 2003 13:23:49 +0400
Прокопьев Евгений <john на rmts.donpac.ru> wrote:

> Dmitry Lebkov пишет:
> 
> >>А как вообще тогда правильно решить задачу? Необходимо дублировать 
> >>определенные письма, выкладывая их в общую папку и в персональную
> >для>alex.
> > 
> > 
> > Все зависит от того, как организована доставка почты вообще. В каком
> > формате хранится, что alex использует для получения почты - IMAP или
> > POP3, alex и john - это учетные записи в системе или виртуальные
> > почтовые ящики? После ответов на эти вопросы можно будет думать над
> > задачей ...
> 
> Задача в целом такая. Есть группа разработчиков, для общения которых 
> имеется shared folder, в который они пишут (это последовательно 
> обрабатывают Postfix и Maildrop со своим
> /etc/courier-imap/maildroprc), и из которой читают посредством Courier
> IMAP. Есть некоторые (alex), которые сидят на диалапе, и просто не
> могут синхронизироваться с shared folder, даже при небольшом
> количестве писем, просто не удается дождаться окончания синхронизации.
> Ну а читать в онлайне им, понятное дело, неприкольно. Вот им и надо
> дать доступ через POP3, а копии писем складывать туда.

Для такой задачи самый оптимальный (IMHO) вариант - поднять лист
рассылки. Для начала - может быть даже примитивное перечисление
подписчиков в/etc/postfix/aliases. А почту фильтровать с помощью
персональных $HOME/.mailfilter.

> > Да, в процессе доставки почты локальным учетным записям maildrop
> > выполняется с UID/GID пользователя, которому производится доставка.
> > Т.е. если alex и john - локальные учетные записи и ты хочешь
> > скопировать сообщение, которое идет к john, в ящик к alex - оба этих
> > пользователя должны иметь одну и ту же _основную_ группу (Note: в
> > ALM, при создании пользователя, создается и группа с таким же именем
> > и по-умолчанию она является основной для этого пользователя).
> 
> # id john
> uid=500(john) gid=10(wheel) 
> groups=10(wheel),12(mail),52(cvs),104(webmaster),503(arbuz)
> # id alex
> uid=502(alex) gid=10(wheel) 
> groups=10(wheel),52(cvs),104(webmaster),503(arbuz)
> # ls -l /var/spool/mail/alex/
> total 14
> -rw-r--r--    1 alex     mail           12 Apr 27 13:13 
> courierimapsubscribed
> -rw-r--r--    1 alex     mail           15 Apr 27 13:13
> courierimapuiddb drwxrwx---    2 alex     mail           48 Apr 26
> 16:22 cur drwxrwx---    2 alex     mail          104 May 15 08:40 new
> drwx------    3 alex     mail           72 Apr 27 13:19 shared-folders
> -rw-r--r--    1 alex     mail           58 Apr 26 19:54
> shared-maildirs drwxrwx---    2 alex     mail           48 May 15
> 08:40 tmp
> # ls -l /var/spool/mail | grep alex
> drwxrwx---    7 alex     mail          280 Apr 27 13:16 alex
> 
>>> Я включил пользователя john, от которого доставляется почта, в
>>> группу mail, и разрешил этой группе писать в /var/spool/mail/alex
>>> и все подпапки, но все равно:
>>>
> >>[john на myserver john]$ echo hello | maildrop-userdb alex на myserver.ru
> >>maildrop-userdb: Unable to open filter file, errno=2.
> >>
> >>Видимо, необходим доступ еще и к /home/alex/.mailfilter или как там
> >>его, но это уж слишком.
> > 
> > Нет, этого не нужно.
> 
> А в чем же тогда дело?

Скорее всего, это искуственное ограничение в коде maildrop - не
открывать файл на запись, если UID/GID не являются основными и нет
однозначного разрешения записи в файл для всех остальных. 

> >>Да и вообще манипуляции с группой mail тоже не очень хороши. Есть ли
> >
> >>более изящные способы (кроме mailman - это как пушкой по мухе).
> > 
> > 
> > Мне видится три варианта:
> >  - общая основная группа у всех почтовых аккаунтов, для которых
> >    требуется описанный тобой способ филтьрации;
> 
> + права доступа для группы. Но это вроде есть. Кстати, почему именно 
> _основная_ ?

См. выше.

> >  - отдельная Maildir-папка с соответствующими правами;
> 
> Да, так все и работает по-нормальному, но тут исключительная ситуация
> 
> >  - виртуальные почтовые ящики
> 
> Ох... Не читал ты мое письмо чуть ниже?
> 
> # echo hello | maildrop-userdb -d marconi на ugtovar.ru
> [root на ugtovar etc]# su - mail -s /bin/bash
> -bash-2.05b$ echo hello | maildrop-userdb -d marconi на ugtovar.ru
> 
> Все прекрасно. А вот результаты echo hello | mail marconi на myserver.ru
> 
> May 16 13:16:23 ugtovar postfix/pickup[28624]: 5600D1C68: uid=0
> from=<root> May 16 13:16:23 ugtovar postfix/cleanup[29086]: 5600D1C68:
> 
> message-id=<20030516091623.5600D1C68 на ugtovar.ru>
> May 16 13:16:23 ugtovar postfix/qmgr[18962]: 5600D1C68: 
> from=<root на ugtovar.ru>, size=279, nrcpt=1 (queue active)
> May 16 13:16:23 ugtovar postfix/local[29088]: 5600D1C68: 
> to=<marconi на ugtovar.ru>, relay=local, delay=0, status=bounced (unknown
> 
> user: "marconi")
> 
> Я знаю, что Postfix не по твоей части, но может идейку какую-нибудь, а
> ? ;-)

Лучше в отдельной ветке. В постфиксе я уже почти ас (не путать с ass) %)
- второй месяц "пытаю" его и в хвост и в гриву ...

> >>Нельзя ли из /etc/courier-imap/maildroprc отдать письмо MTA или
> >>положить в  /var/spool/mail/alex от имени alex?
> > 
> > 
> > В процессе фильтрации, сообщение можно отдать на STDIN внешней
> > программы. man maildirfilter. Но имей ввиду, что в случае доставки
> > того же сообщения через MTA ты получищь mail loop, т.к. информация
> > о получателе останется без изменения и сообщение снова попадет
> > под общесистемный фильтр.
> 
> Угу, думал уже об этом
> 
> > Вобщем, вариантов - море. Сообщай подробности конфигурации, а там
> > что-нить придумаем ... ;)
> 
> С stdin все-таки наверняка я выкручусь (хотя может это просто только
> на первый взгляд).

Лучше нормальные манагеры листов рассылки, чем пляски с самописными
скриптами ... ;)

> А вот как быть с виртуальными почтовыми ящиками, для которых мне
> вообще не нужны записи в /etc/passwd, я не могу придумать. Может
> Postfix вообще так не умеет? Т.е. ищет $LOGNAME в /etc/passwd в
> обязательном порядке, а если не нашел, то в master.cf на maildrop не
> смотрит, а просто выплевавает, да и все?

В отдельной ветке. Опиши, чего хочешь джостигнуть, и что не получается.
Что-нить подскажу ... ;)

--
WBR, Dmitry Lebkov



Подробная информация о списке рассылки community