Comments 26
>Но, на мой взгляд, это способ не для пользователей (как в почтовых клиентах)
Конечно не для пользователей. По хорошему и не для админов, человеку свойственно ошибаться. Такие скрипты, не более чем описательным метод сортировки (как и предложенный через mysql). Ни кто говорит, что эти правила нужно писать руками.
К примеру, в Roundcube есть плагин, который добавляет в него возможность написания таких скриптов, причем сделано это в виде GUI. Пользователь просто пишит правила сортировки, PHP скрипт уже переводит их в sieve. И это правильный путь ведущий к унификации, потому как у sieve есть стандарт. Любой админ имевший с ними дела сможет с ними работать на любом сервере, в отличие от велосипедов в которых еще только предстоит разобраться.
Конечно не для пользователей. По хорошему и не для админов, человеку свойственно ошибаться. Такие скрипты, не более чем описательным метод сортировки (как и предложенный через mysql). Ни кто говорит, что эти правила нужно писать руками.
К примеру, в Roundcube есть плагин, который добавляет в него возможность написания таких скриптов, причем сделано это в виде GUI. Пользователь просто пишит правила сортировки, PHP скрипт уже переводит их в sieve. И это правильный путь ведущий к унификации, потому как у sieve есть стандарт. Любой админ имевший с ними дела сможет с ними работать на любом сервере, в отличие от велосипедов в которых еще только предстоит разобраться.
На своем сервере пошел тем же путем, сортировка писем делает сам exim, беря из mysql путь к папке, на основании отправителя (аналогично правилам, помещающим спам в соотв.папку). Тогда я решил, что этот способ самый простой, т.к. не требовалось делать много правил — они в основном нужны только директору.
Не хватает только интерфейса, который позволил бы редактировать эти правила самим пользователям…
Можно было и не делать велосипед:
Пока я искал решение, для Roundcube обнаружил plugin Managesieve — это тот самый недостающий интерфейс, но есть одно НО — для его работы, вместо courier-imap должен быть установлен dovecot. А на рабочей системе перейти от одного к другому — трудоемкий процесс. Хотя игра и стоит свеч, но я до сих пор на это не решился.
Не хватает только интерфейса, который позволил бы редактировать эти правила самим пользователям…
Можно было и не делать велосипед:
Пока я искал решение, для Roundcube обнаружил plugin Managesieve — это тот самый недостающий интерфейс, но есть одно НО — для его работы, вместо courier-imap должен быть установлен dovecot. А на рабочей системе перейти от одного к другому — трудоемкий процесс. Хотя игра и стоит свеч, но я до сих пор на это не решился.
Хотя у нашего с Вами метода может быть будущее, если кто-то наконец перепишет плагин Managesieve для реализации необходимой логики. Это будет бомба!
Я попробовал разобраться, но прикинул, что времени уйдет масса, ибо не ООПшник ни разу, не говоря уж о работе с чужими фреймворками) Подумываю подбить за пиво напрячьтись знакомого программера, т.к. незавершенность реализации гложет.
Managesieve плагин к Roundcube? А что там не так? Я его щупал. Он вполне неплох и там даже рабочий GUI, хотя юзабилити его отвратительно.
P.S. Для одного проекта буду делать генератор sieve скриптов, но не от того, что имеющийся в Roundcube плох.
P.S. Для одного проекта буду делать генератор sieve скриптов, но не от того, что имеющийся в Roundcube плох.
Имхо, мелось в виду написание плагина, реализующего приведенный мною и Никитой функционал.
Скажите, sieve нормально работает с русскими кодировками?
Скажите, sieve нормально работает с русскими кодировками?
Я же говорю — все так, но это ж почтовую систему переустанавливать, и как-то почту всю перекидывать из курьера в довекота.
Игра стоит свеч, dovecot очень хорош. Лично для меня связка postfix+dovecot — идеальное почтовое решение.
Кстати, когда я планировал создание своего почтового сервера, тоже самое говорилось на сайте НЛО не смогло распознать ссылку про exim. Все его так хвалили, а мне его настройка показалась чем-то невообразимо сложным. Коллега с опытом помогал устанавливать, а я уже по мануалам потихоньку разобрался. Так что, с моей колокольни, идеальной была бы связка exim+dovecot. Но, как там говорится… фломастеры разные
Меня первое время смущал Postfix тем, что у него для каждой задачи была отдельная программа, в top не было единого процесса почтовика (как в exim), было куча маленьких. Но покрутив связку Postfix+Dovecot (с его локальными доставщиками) понял, что это как раз и есть идеальный почтовик. Легкий, гибко конфигурируемый, масштабируемый. Единственно что при этом обязательно нужно — четкое понимание как это все работает вплоть до уровня протокола. Это позволяет создать очень эффективную конфигурацию.
Охотно верю. Вот вопрос: у кого-нибудь есть опыт перехода с одного на другое? Что-то меня берут сомнения, что установив однажды, кто-нибудь куда-нибудь переходил. :)
Опять эта лень…
Опять эта лень…
При чем тут лень? Обычное «работает? не трогай!». У меня система была гораздо более примитивная, и если бы не крайне назревшая необходимость иметь всю почту в одном месте, особенно отправленные, то я тоже бы не дернулся.
Сподобился начать писать плагин, правда за такую адаптацию скриптов любой знающий человек обвинил бы в Ереси, но если будет работать...)
Сподобился начать писать плагин, правда за такую адаптацию скриптов любой знающий человек обвинил бы в Ереси, но если будет работать...)
И кстати я заметил одно НО в Вашей реализации: нет проверки на существование папки.
Как это сделано у меня:
Роутер:
Транспорт:
Перед всем этим я вычисляю необходимые переменные в acl_check_rcpt.
Как это сделано у меня:
Роутер:
mysqluser_forward:
driver = accept
domains = +local_domains
condition = ${if eq{$acl_m6}{1}{yes}{no}}
condition = ${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}'}}}{no}{yes}}
condition = ${if exists{/usr/mail/$local_part@$domain/${acl_m5}/.}{yes}{no}}
transport = mysql_forward_delivery
no_expn
no_more
Транспорт:
mysql_forward_delivery:
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = ${lookup mysql{SELECT CONCAT(`home`, '/', '${acl_m5}') FROM users WHERE id='${local_part}@${domain}'}}
directory_mode = 770
envelope_to_add
group = mail
maildir_format
maildir_use_size_file
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0600
quota = ${lookup mysql{SELECT quota FROM users WHERE id='${local_part}@${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_message = "\
To: $local_part@$domain\n\
From: postmaster@$domain\n\
Subject: Ваш ящик переполняется - Your maildir is going full\n\
This message is automaticaly gnerated by Mail Server.\n\
This means, that your mailbox is 75% full. If you would \n\
override this limit new mail would not be delivered to you!\n"
quota_warn_threshold = 75%
Перед всем этим я вычисляю необходимые переменные в acl_check_rcpt.
Особенность конфига в том, что папка автоматом создастся. Что, конечно же, создаст эффект потери писем, если сделать папку, настроить на нее фильтр, а потом папку удалить.
Спасибо за замечание, учту.
Спасибо за замечание, учту.
Sign up to leave a comment.
Сортировка писем по imap-папкам на почтовом сервере без использования sieve и иже с ними