html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Sieve: фильтрация почты на стороне сервера

После того, как Google закрыл Reader, я утратил веру в большую компанию, которая делает для меня инструмент, решающий важные мне задачи. Я решился строить свой собственный Луна-парк с читалками, агрегаторами, болжеком и т.п. Почта на своем домене — первое, что приходит в голову. Не вопрос прописать MX запись, поставить Postfix на локальную доставку, установить IMAP-сервер Dovecot и почтовый веб-клиент Roundcube, вопрос повторить функциональность «большой» системы, в первую очередь, сортировку. Я не буду дублировать существующие инструкции, опишу только неочевидные моменты.

Что меня не устраивает в Gmail? Это идеология меток (labels), которых можно прицепить к одному и тому же письму несколько, а в IMAP отобразить их в виде папок. В результате корневая папка всегда полна писем, а я такой человек (возможно, мой случай уникален), что всю «лишнюю» почту я удаляю, а всю «нужную» раскладываю по папкам. Я стираю все уведомления от веб-магазинов, форумов, сервисов и т.п., что не укладывается в идеологию Гугла «зачем удалять, если место бесконечно?». Гугл хочет видеть у меня как можно больше, а я не хочу видеть мусор. Далее, я пользовался iCloud/me.com, там все просто: правила сортировки входящей почты просто не работают и все.

Итак, задача: чтобы Dovecot сам раскладывал почту по папкам IMAP'а. Честно говоря, я провел минут 20 в поиске «а где же у Roundcube'а настройки фильтрации?», а потом начал читать инструкции. К сожалению, все, что можно найти в вебе, не содержит полного списка граблей, на которые можно наступить, постараюсь по горячим следам описать их тут.

Сперва, надо выучить слово sieve, это целый язык описания правил фильтрации, созданный Cyrusoft'ом во время работы над почтовым сервером Cyrus (не к ночи помянут). Он позволяет писать такие вот самоочевидные правила:

require ["fileinto"];
# rule:[LinkedIn]
if header :contains "From" "linkedin.com"
{
	fileinto "INBOX/LinkedIn";
	stop;
}
# rule:[Drupal Alerts]
if header :contains "Subject" "yet another home page"
{
	fileinto "INBOX/Drupal Alerts";
	stop;
}
if header :contains "From" [ "user@example.com" ] {      
  addflag "\\flagged";
  fileinto "Trash";
  stop;
}
# rule:[Paypal]
if allof (header :contains "From" "paypal")
{
	fileinto "INBOX/Ebay, Paypal";
	stop;
}


Конечно, не очень хочется лезть в консоль, чтобы прописать новое правило фильтрации, к счастью, есть протокол managesieve, который позволяет почтовому клиенту рулить правилами на сервере. Удачно, что и Dovecot, и Roundcubе поддерживают обе функциональности. А дальше, начинаются грабли.

Во-первых, самое простое и естественное, что делается для включения seive, это установка mail_plugins = sieve где-то глобально для всего Dovecot'а. Это неправильно! Будет так:

Error: dlopen(/usr/lib64/dovecot/lib90_sieve_plugin.so) failed: /usr/lib64/dovecot/libdovecot-sieve.so.0: undefined symbol: mail_deliver_get_log_var_expand_table


Переменную следует выставить в /etc/dovecot/conf.d/15-lda.conf, для lda, локальной доставки. Включение managesieve и в Dovecot'е и в Roundcube проблем не вызывает (плагины есть в стандартной поставке), надо только не забыть прописать порт. Можно начинать писать правила, только работать они не будут, так как хотя почта раскладыватеся по папкой из клиента, «локальный доставщик» по-прежнему Postfix и INBOX не в /home/username, а в /var/mail/username. Надо прописать в main.cf mailbox_command = /usr/lib/dovecot/deliver -d «$USER». Теперь кажется, что все нормально: почти все письма раскладываются по почти всем правилам. Я потратил день на то, чтобы выяснить почему почта не попадает в папку и вывел коллег-из себя своими экспериментами. Я думал, что неправильно описываю свойства заголовка, так как там данные конверта и доставки отличаются (потому что общение происходит на сервере рассылки в рассылке, а выглядеть все должно как от собеседника собеседнику). Потом я увидел ошибку:

Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: write() failed with mbox file /home/shaman007/mail/INBOX/LOR: File too large (process was started with ulimit -f limit)
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: sieve: msgid=<d068a42487535146ce3e7ec8b6557b27@andreybondarenko.com>: failed to store into mailbox 'INBOX/LOR': Internal error occurred. Refer to server log for more information. [2013-03-16 17:52:57]
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): sieve: msgid=<d068a42487535146ce3e7ec8b6557b27@andreybondarenko.com>: stored mail into mailbox 'INBOX'
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: sieve: execution of script /home/shaman007/.dovecot.sieve failed, but implicit keep was successful (user logfile /home/shaman007/.dovecot.sieve.log may reveal additional details)
Mar 16 17:53:01 DJBZ002 postfix/local[13359]: 4575811F76E: to=<shaman007@andreybondarenko.com>, orig_to=<me@andreybondarenko.com>, relay=local, delay=3.9, delays=0.21/0.02/0/3.7, dsn=2.0.0, status=sent (delivered to command: /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT")
Mar 16 17:53:01 DJBZ002 postfix/qmgr[29435]: 4575811F76E: removed


File too large! Целых 100 мегабайт! Оказалось, что хотя инициирует ошибку Dovecot, дело в параметре mailbox_size_limit Postfix'а. По умолчанию там 5 что-ли мегабайт, надо выставить в 0. Кажется, это все грабли.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

1

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции