[Comm] Maildrop filtering

Прокопьев Евгений =?iso-8859-1?q?john_=CE=C1_rmts=2Edonpac=2Eru?=
Пт Май 16 13:23:49 MSD 2003


Dmitry Lebkov пишет:

>>А как вообще тогда правильно решить задачу? Необходимо дублировать 
>>определенные письма, выкладывая их в общую папку и в персональную для
>>alex.
> 
> 
> Все зависит от того, как организована доставка почты вообще. В каком
> формате хранится, что alex использует для получения почты - IMAP или
> POP3, alex и john - это учетные записи в системе или виртуальные
> почтовые ящики? После ответов на эти вопросы можно будет думать над
> задачей ...

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


> Да, в процессе доставки почты локальным учетным записям 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 или как там
>>его, но это уж слишком.
> 
> 
> Нет, этого не нужно.

А в чем же тогда дело?

>>Да и вообще манипуляции с группой 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 не по твоей части, но может идейку какую-нибудь, а ? ;-)

>>Нельзя ли из /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 не смотрит, а просто 
выплевавает, да и все?

-- 
С уважением, Прокопьев Евгений




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