[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