Cyrus-Imap + Patch

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-08-10 14:30:14

Здравствуйте. Народ, кто ставил патч http://email.uoa.gr/projects/cyrus/autocreate/ для Cyrus-Imapd под FreeBSD отзовитесь! Либо кто силен в Makefil'ах тоже помогите!
В-общем суть проблемы. Ставлю cyrus-imapd23 из портов, перед сборкой накатываю патчи из http://email.uoa.gr/download/cyrus/cyrus-imapd-2.3.12/ для автосоздания папок IMAP и sieve скриптов (очень нужно). Последовательность действий:

Код: Выделить всё

cd /usr/ports/mail/cyrus-imapd23/
make extract
make patch
cd work
patch < ../patch/cyrus-imapd-2.3.12p2-autocreate-0.10-0.diff
patch < ../patch/cyrus-imapd-2.3.12p2-autosieve-0.6.0.diff
cd ..
make
И я получаю:

Код: Выделить всё

make: don't know how to make autosieve.o. Stop
*** Error code 1
Автор проекта говорит, что проблема в Makefile, т.к. в Makefile в портах FreeBSD вносятся изменения под ОС. Проблема в папке imap:

Код: Выделить всё

cd /usr/ports/mail/cyrus-imapd23/work/cyrus-imapd-2.3.12p2/imap
make
AWK=nawk ./xversion.sh
make: don't know how to make autosieve.o. Stop
Вот сравнение с Makefil'ом из портов и Makefil'от автора:

Код: Выделить всё

diff Makefile Makefile.in
50,68c50,68
< srcdir = .
< top_srcdir = ..
<
<
< CC = cc
< INSTALL = /usr/bin/install -c -o root -g wheel
< RANLIB = ranlib
< AWK = nawk
<
< CYRUS_USER=cyrus
< CYRUS_GROUP=cyrus
<
< DEFS = -DHAVE_CONFIG_H
< CPPFLAGS = -I.. -I$(srcdir)/../lib -I${top_srcdir}/com_err/et -I$(srcdir)/../sieve -I/usr/local/include/db46 -I/usr/include -DKRB5_HEIMDAL -I/usr/local/include
< IMAP_LIBS = -L/usr/local/lib -R/usr/local/lib -lsasl2 -lgssapi -lkrb5 -lasn1 -lroken -lcrypt -lcom_err -lfl -L/usr/local/lib -R/usr/local/lib -ldb-4.6 -lssl -lcrypto -lmd
< SIEVE_OBJS = lmtp_sieve.o smtpclient.o
< SIEVE_LIBS = ../sieve/libsieve.a
< IMAP_COM_ERR_LIBS = ../com_err/et/libcom_err.a
< LIB_WRAP = -lwrap
---
> srcdir = @srcdir@
> top_srcdir = @top_srcdir@
> VPATH = @srcdir@
>
> CC = @CC@
> INSTALL = @INSTALL@
> RANLIB = @RANLIB@
> AWK = @AWK@
>
> CYRUS_USER=@cyrus_user@
> CYRUS_GROUP=@cyrus_group@
>
> DEFS = @DEFS@ @LOCALDEFS@
> CPPFLAGS = -I.. -I$(srcdir)/../lib @COM_ERR_CPPFLAGS@ @SIEVE_CPPFLAGS@ @CPPFLAGS@ @SASLFLAGS@
> IMAP_LIBS = @IMAP_LIBS@ @LIB_RT@
> SIEVE_OBJS = @SIEVE_OBJS@
> SIEVE_LIBS = @SIEVE_LIBS@
> IMAP_COM_ERR_LIBS = @IMAP_COM_ERR_LIBS@
> LIB_WRAP = @LIB_WRAP@
70c70
< DEPLIBS = ../lib/libcyrus.a ../lib/libcyrus_min.a
---
> DEPLIBS = ../lib/libcyrus.a ../lib/libcyrus_min.a @DEPLIBS@
72,73c72,73
< CFLAGS = -O2 -fno-strict-aliasing -pipe
< LDFLAGS = -L/usr/lib -R/usr/lib -L/usr/local/lib -R/usr/local/lib -rpath=/usr/lib:/usr/local/lib
---
> CFLAGS = @CFLAGS@
> LDFLAGS = @LDFLAGS@ @COM_ERR_LDFLAGS@
76c76
< MAKEDEPEND = makedepend
---
> MAKEDEPEND = @MAKEDEPEND@
78c78
< COMPILE_ET=../com_err/et/compile_et
---
> COMPILE_ET=@COMPILE_ET@
94,97c94,97
< prefix = /usr/local
< exec_prefix = ${prefix}
< cyrus_prefix = /usr/local/cyrus
< service_path = /usr/local/cyrus/bin
---
> prefix = @prefix@
> exec_prefix = @exec_prefix@
> cyrus_prefix = @cyrus_prefix@
> service_path = @service_path@
121c121
< unexpunge compile_sieve tls_prune
---
> unexpunge compile_sieve @IMAP_PROGS@
Кто-нибудь может что-нибудь сказать на этот счет? Огромное спасибо за помощь.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение ProFTP » 2008-08-10 14:34:18

что за патч?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-08-10 14:36:03

ProFTP писал(а):что за патч?
Патч позволяет автоматически создавать заданные папки IMAP при 1) первого подключения пользователя к IMAP либо 2) при посте для пользователя. Также при создании могут автоматически создаваться Sieve скрипты, что опять же, очень удобно.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение ProFTP » 2008-08-10 14:41:05

а при добавлении пользователя в таблицу (через postfixadmin), postfix создает папку, или что-то я не понял?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-08-10 14:48:31

ProFTP писал(а):а при добавлении пользователя в таблицу (через postfixadmin), postfix создает папку, или что-то я не понял?
У меня не постфикс, а sendmail, но все равно отношения к делу не имеет. IMAP на базе Cyrus-IMAP. Через cyradm папки создаются без проблем. А что если планируется в будущем активно создавать новых почтовых пользователей? Было ведь удобно:
1) при подключении пользователя к IMAP серверу создавались бы папки INBOX, SPAM
2) создавался был автоскрипт на sieve, который бы помещал спам письма в SPAM

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение Alex Keda » 2008-08-10 16:22:27

несчастные...
то что с полпинка или по дефолту реализовано на связках типа exim+dovecot - они вынуждены лепить патчи и подпорки...
Убей их всех! Бог потом рассортирует...

fr33man
сержант
Сообщения: 218
Зарегистрирован: 2006-09-04 17:41:27
Откуда: Москва
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение fr33man » 2008-08-10 20:57:16

Я делал, только под openbsd...

Вот тут написано.
WBR Озеров Василий aka fr33man

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-08-11 0:35:51

fr33man писал(а):Я делал, только под openbsd...

Вот тут написано.
Спасибо, на FreeBSD не катит, там после применения родного патча, автопатч autocreate не до конца прописывает Makefile.in... Если получится, отпишусь.

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch [SOLVED]

Непрочитанное сообщение dm07 » 2008-08-11 16:19:23

Итак, решение задачи:
1 из патчей, которые вы скачали с сайта http://email.uoa.gr, нужно подправить, а именно:
правим патч cyrus-imapd-2.3.XX-autocreate-0.10-0.diff, в нем нужно заменить

Код: Выделить всё

-      $(DEPLIBS) $(LIBS) $(LIB_WRAP) -lpthread
+      $(SIEVE_LIBS) $(DEPLIBS) $(LIBS) $(LIB_WRAP) -lpthread
на
-      $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
+      $(SIEVE_LIBS) $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
а
-      mutex_pthread.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) -lpthread
+      mutex_pthread.o libimap.a $(SIEVE_LIBS) $(DEPLIBS) $(LIBS)$(LIB_WRAP) -lpthread
на
-      mutex_pthread.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
+      mutex_pthread.o libimap.a $(SIEVE_LIBS) $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
после этого:
1) cd \usr\ports\mail\cyrus-imapd23\
2) make extract
3) make patch
4) cd work/cyrus-imapd-2.3.12/
5) patch -p1 < /usr/ports/mail/cyrus-imapd23/patch/cyrus-imapd-2.3.12p2-autocreate-0.10-0.diff
6) patch -p1 < /usr/ports/mail/cyrus-imapd23/patch/cyrus-imapd-2.3.12p2-autosieve-0.6.0.diff
7) дальше cd ../..
8) make && make install

Этот мини HowTo был бы невозможен без помощи Алекса Шубникова, за что ему огромное человеческое спасибо.

P.S. Когда в /etc/imapd.conf будете вставлять опцию createonpost: yes, хорошо подумайте, т.к. каждая попытка отправить спам-письмо на несуществующий ящик вашего домена, заставит Cyrus-Imap создать его.

FreeManGH
проходил мимо

Re: Cyrus-Imap + Patch

Непрочитанное сообщение FreeManGH » 2008-10-29 18:23:12

после выше упомянутой процедуры:
  • cc -L/usr/lib -R/usr/lib -L/usr/local/lib -R/usr/local/lib -rpath=/usr/lib:/usr/local/lib -o imapd ../master/service.o pushstats.o imapd.o proxy.o imap_proxy.o index.o version.o mutex_fake.o libimap.a ../lib/libcyrus.a ../lib/libcyrus_min.a -L/usr/local/lib -R/usr/local/lib -lsasl2 -lgssapi -lkrb5 -lasn1 -lroken -lcrypt -lcom_err -lfl -L/usr/local/lib -R/usr/local/lib -ldb41 -lssl -lcrypto -lmd ../com_err/et/libcom_err.a -lwrap
    libimap.a(autosieve.o)(.text+0x8ae): In function `autoadd_sieve':
    : undefined reference to `sieve_interp_alloc'
    libimap.a(autosieve.o)(.text+0x8e6): In function `autoadd_sieve':
    : undefined reference to `sieve_register_redirect'
    libimap.a(autosieve.o)(.text+0x919): In function `autoadd_sieve':
    : undefined reference to `sieve_register_discard'
    libimap.a(autosieve.o)(.text+0x94c): In function `autoadd_sieve':
    : undefined reference to `sieve_register_reject'
    libimap.a(autosieve.o)(.text+0x97f): In function `autoadd_sieve':
    : undefined reference to `sieve_register_fileinto'
    libimap.a(autosieve.o)(.text+0x9b2): In function `autoadd_sieve':
    : undefined reference to `sieve_register_keep'
    libimap.a(autosieve.o)(.text+0x9e9): In function `autoadd_sieve':
    : undefined reference to `sieve_register_imapflags'
    libimap.a(autosieve.o)(.text+0xa20): In function `autoadd_sieve':
    : undefined reference to `sieve_register_size'
    libimap.a(autosieve.o)(.text+0xa57): In function `autoadd_sieve':
    : undefined reference to `sieve_register_header'
    libimap.a(autosieve.o)(.text+0xa8e): In function `autoadd_sieve':
    : undefined reference to `sieve_register_envelope'
    libimap.a(autosieve.o)(.text+0xac5): In function `autoadd_sieve':
    : undefined reference to `sieve_register_vacation'
    libimap.a(autosieve.o)(.text+0xafc): In function `autoadd_sieve':
    : undefined reference to `sieve_register_notify'
    libimap.a(autosieve.o)(.text+0xb33): In function `autoadd_sieve':
    : undefined reference to `sieve_register_parse_error'
    libimap.a(autosieve.o)(.text+0xbad): In function `autoadd_sieve':
    : undefined reference to `sieve_script_parse'
    libimap.a(autosieve.o)(.text+0xbda): In function `autoadd_sieve':
    : undefined reference to `sieve_interp_free'
    libimap.a(autosieve.o)(.text+0xbec): In function `autoadd_sieve':
    : undefined reference to `sieve_generate_bytecode'
    libimap.a(autosieve.o)(.text+0xc08): In function `autoadd_sieve':
    : undefined reference to `sieve_interp_free'
    libimap.a(autosieve.o)(.text+0xcb0): In function `autoadd_sieve':
    : undefined reference to `sieve_script_free'
    libimap.a(autosieve.o)(.text+0xcea): In function `autoadd_sieve':
    : undefined reference to `sieve_emit_bytecode'
    libimap.a(autosieve.o)(.text+0xd1c): In function `autoadd_sieve':
    : undefined reference to `sieve_free_bytecode'
    libimap.a(autosieve.o)(.text+0xd27): In function `autoadd_sieve':
    : undefined reference to `sieve_script_free'
    libimap.a(autosieve.o)(.text+0xd57): In function `autoadd_sieve':
    : undefined reference to `sieve_free_bytecode'
    libimap.a(autosieve.o)(.text+0xd62): In function `autoadd_sieve':
    : undefined reference to `sieve_script_free'
    *** Error code 1

    Stop in /usr/ports/mail/cyrus-imapd23/work/cyrus-imapd-2.3.12p2/imap.
    *** Error code 1

    Stop in /usr/ports/mail/cyrus-imapd23/work/cyrus-imapd-2.3.12p2.
    *** Error code 1

    Stop in /usr/ports/mail/cyrus-imapd23.
    *** Error code 1

    Stop in /usr/ports/mail/cyrus-imapd23.

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-10-30 0:02:47

Применили исходные патчи без их правки, которые я указал выше...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение ProFTP » 2008-10-30 8:56:44

можно эту папку SPAM сделать только для некоторых ящиков? (точнее чтобы спам принимался в эту папку для некоторый ящиков)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

FreeManGH
проходил мимо

Re: Cyrus-Imap + Patch

Непрочитанное сообщение FreeManGH » 2008-10-30 14:59:27

dm07 писал(а):Применили исходные патчи без их правки, которые я указал выше...
Патч корректировал.
Еще пробовал как тут народ описывал: http://www.bsdportal.ru/viewtopic.php?p=103824#103824

FreeManGH
проходил мимо

Re: Cyrus-Imap + Patch

Непрочитанное сообщение FreeManGH » 2008-10-30 15:05:29

dm07 писал(а):Применили исходные патчи без их правки, которые я указал выше...
Можете выложить откомпиленный пакет под 7-ку или выслать на khvastunov (at) gmail.com ?

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-10-30 15:26:07

ProFTP писал(а):можно эту папку SPAM сделать только для некоторых ящиков? (точнее чтобы спам принимался в эту папку для некоторый ящиков)
конечно.

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-10-30 15:29:42

FreeManGH писал(а):
dm07 писал(а):Применили исходные патчи без их правки, которые я указал выше...
Можете выложить откомпиленный пакет под 7-ку или выслать на khvastunov (at) gmail.com ?
отправил правленные патчи.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение ProFTP » 2008-10-31 2:01:12

dm07 писал(а):
ProFTP писал(а):можно эту папку SPAM сделать только для некоторых ящиков? (точнее чтобы спам принимался в эту папку для некоторый ящиков)
конечно.
как это сделать?

ЗЫ закачай плиз патч сюда на форум
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

Re: Cyrus-Imap + Patch

Непрочитанное сообщение dm07 » 2008-10-31 11:02:20

Папку SPAM для индивидуальных пользователей можно создать вручную в любом почтовом клиенте, поддерживающим IMAP.
Чтобы автоматом раскладывать СПАМ в папку SPAM я пользуюсь Sieve скриптами, всех удобнее в этом плане поставить веб-интерфейс Squirrel Mail и к нему поставить плагин AvelSieve. Критерием отбора писем дают доп. заголовки, вставляемые антиспам-системами, я пользуюсь SpamAssassin'ом и касперским антиспамом, они очень хорошо дополняют друг друга.
Например, простой скрипт Sieve, позволяющий по наличию заголовка X-Spam-Status: Yes и X-SpamTest-Status-Extended:spam, отправлять письмо в папку Spam:

Код: Выделить всё

require ["fileinto","envelope","reject","vacation","imapflags","relational","comparator-i;ascii-numeric","regex","notify"];
if anyof (header :contains "X-Spam-Status" "Yes",
header :contains "X-SpamTest-Status-Extended" "spam")
{
fileinto "SPAM";
 }
anyof - логическое ИЛИ.
Сохраняем в отдельный файл, запускаем управление sieve:

Код: Выделить всё

sieveshell –u пользователь_для_которого_пишем_скрипт -a администратор_cyrus (тот, который в /etc/imapd.conf у вас прописан в директиве admins) localhost_или_хост_на_котором_установлена_служба_Sieve
put имя_вашего_скрипта
activate имя_вашего_скрипта
quit
Все выше действия можно было выполнить и через AvelSieve у SquirrellMail.
Патч приложил для cyrus-imapd-2.3.12p2_1.
Вложения
Cyrus-iMAP patch.rar
(19.39 КБ) 27 скачиваний