Фильтры avelsieve

Есть такой почтовый веб-интерфейс, SquirrelMail называется. И у него есть плагин avelsieve1), позволяющий настраивать пользовательские фильтры2).

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

Русскоязычные папки

Оказалось, что фильтры avelsieve не работают с папками, обозванными по-русски. Мой вариант решения этой проблемы:

--- include/sieve_buildrule.inc.php.orig    2012-10-12 00:07:52.494562347 +0400
+++ include/sieve_buildrule.inc.php         2012-10-12 00:08:36.596562199 +0400
@@ -627,7 +627,7 @@
         break;
     
     case '5':    /* fileinto folder */
-        $out .= 'fileinto '.$flags_out.' "'.$rule['folder'].'";';
+        $out .= 'fileinto '.$flags_out.' "'.htmlspecialchars(imap_utf7_decode_local($rule['folder'])).'";';
 
         if(!empty($inconsistent_folders) && in_array($rule['folder'], $inconsistent_folders)) {
             $clr = '<span style="color:'.$color[2].'">';

Флаги

Не работают флаги Seen, Answered и т.д. Это проблема с экранированием символов. Не знаю, как это лечат умные люди, а я так:

--- include/avelsieve_action_imapflags.class.php.orig 2009-05-29 12:24:15.000000000 +0400
+++ include/avelsieve_action_imapflags.class.php      2013-03-30 02:00:41.000000000 +0400
@@ -57,11 +57,11 @@
 
         $this->imapflags = array(
             'standard' => array(
-                '\\\\Seen' => _("Seen"),
-                '\\\\Answered' => _("Answered"),
-                '\\\\Flagged' => _("Flagged"),
-                '\\\\Deleted' => _("Deleted"),
-                '\\\\Draft' => _("Draft"),
+                '\\\\\\\\\\\\\\\\Seen' => _("Seen"),
+                '\\\\\\\\\\\\\\\\Answered' => _("Answered"),
+                '\\\\\\\\\\\\\\\\Flagged' => _("Flagged"),
+                '\\\\\\\\\\\\\\\\Deleted' => _("Deleted"),
+                '\\\\\\\\\\\\\\\\Draft' => _("Draft"),
             ),
             'labels' => array(
                 '$Important' => _("Important"),

Смена версий php

Здесь тупо применяем чужие патчи:

--- addrule.php.orig  2009-05-29 12:24:15.000000000 +0400
+++ addrule.php       2012-12-02 05:37:46.000000000 +0400
@@ -41,9 +41,9 @@
 
 if(isset($_POST['cancel'])) {
        unset($_SESSION['newrule']);
-       session_unregister('newrule');
        unset($part);
-       session_unregister('part');
+       if(isset($_SESSION['part']))
+           unset($_SESSION['part']);
        header("Location: ./table.php");
        exit;
 }
@@ -250,8 +250,10 @@
        $_SESSION['comm']['new'] = true;
 
        /* Remove addrule.php stuff */
-       session_unregister('newrule');
-       session_unregister('part');
+       if(isset($_SESSION['newrule']))
+           unset($_SESSION['newrule']);
+       if(isset($_SESSION['part']))
+           unset($_SESSION['part']);
 
        /* go to table.php */
        session_write_close();
--- include/DO_Sieve.class.php.orig   2009-05-29 12:24:15.000000000 +0400
+++ include/DO_Sieve.class.php        2012-12-02 06:27:54.000000000 +0400
@@ -138,7 +138,7 @@
     * @param string $script
     * @return string
     */
-    function encode_script($script) {
+    static function encode_script($script) {
         global $languages, $squirrelmail_language, $default_charset;
     
         /* change $default_charset to user's charset */
@@ -183,7 +183,7 @@
     * @param string $script
     * @return string
     */
-    function decode_script($script) {
+    static function decode_script($script) {
     
         global $languages, $squirrelmail_language, $default_charset;
     
--- include/DO_Sieve_ManageSieve.class.php.orig   2009-05-29 12:24:15.000000000 +0400
+++ include/DO_Sieve_ManageSieve.class.php        2012-11-25 01:17:25.000000000 +0400
@@ -123,7 +123,7 @@
             }
 
             // 2) Map capabilities to condition kinds
-            $this->condition_kinds = $this->_get_active_condition_kinds();
+            // $this->condition_kinds = $this->_get_active_condition_kinds();
 
             // All done
             $this->loggedin = true;
--- include/avelsieve_action_fileinto.class.php.orig  2009-05-29 12:24:15.000000000 +0400
+++ include/avelsieve_action_fileinto.class.php       2012-10-26 01:58:34.000000000 +0400
@@ -55,7 +55,7 @@
             $this->helptxt = mailboxlist('folder', false);
         }
         */
-            
+
         return sprintf( _("Or specify a new folder: %s to be created under %s"), 
                 ' <input type="text" size="15" name="newfoldername" onclick="checkOther(\'5\');" /> ',
                 mailboxlist('newfolderparent', false, true));
--- include/avelsieve_condition_datetime.class.php.orig   2009-05-29 12:24:15.000000000 +0400
+++ include/avelsieve_condition_datetime.class.php        2012-12-02 06:19:19.000000000 +0400
@@ -53,7 +53,7 @@
      * @return void
      */
     function __construct(&$s, $rule, $n, $test = 'currentdate') {
-        parent::__construct(&$s, $rule, $n);
+        parent::__construct($s, $rule, $n);
 
         if($test == 'currentdate') {
             $this->test = 'currentdate';
--- include/html_main.inc.php.orig    2009-05-29 12:24:15.000000000 +0400
+++ include/html_main.inc.php         2012-12-02 04:55:34.000000000 +0400
@@ -225,7 +225,7 @@
      */
     function clear_avelsieve_messages() {
         if(isset($_SESSION['comm'])) {
-            session_unregister('comm');
+            unset($_SESSION['comm']);
         }
     }
     
--- include/managesieve.lib.php.orig  2009-05-29 12:24:15.000000000 +0400
+++ include/managesieve.lib.php       2012-12-02 06:14:32.000000000 +0400
@@ -139,13 +139,13 @@
     unset($this->error_raw);
 
     $this->line=fgets($this->fp,1024);
-    $this->token = split(" ", $this->line, 2);
+    $this->token = explode(" ", $this->line, 2);
 
     if($this->token[0] == "NO"){
         /* we need to try and extract the error code from here.  There are two possibilites: one, that it will take the form of:
            NO ("yyyyy") "zzzzzzz" or, two, NO {yyyyy} "zzzzzzzzzzz" */
         $this->x = 0;
-        list($this->ltoken, $this->mtoken, $this->rtoken) = split(" ", $this->line." ", 3);
+        list($this->ltoken, $this->mtoken, $this->rtoken) = explode(" ", $this->line." ", 3);
         if($this->mtoken[0] == "{"){
             while($this->mtoken[$this->x] != "}" or $this->err_len < 1){
                 $this->err_len = substr($this->mtoken, 1, $this->x);
@@ -233,7 +233,7 @@
            atleast true for timsieved as it sits in 2.1.16, if someone has a 
            BYE (REFERRAL ...) example for later timsieved please forward it to 
            me and I'll code it in proper-like! - mloftis@wgops.com */
-        $this->reftok = split(" ", $this->token[1], 3);
+        $this->reftok = explode(" ", $this->token[1], 3);
         $this->refsv = substr($this->reftok[1], 0, -2);
         $this->refsv = substr($this->refsv, 1);
 
@@ -438,7 +438,7 @@
     //response.  They repsond as follows: "Cyrus timsieved v1.0.0" "SASL={PLAIN,........}"
     //So, if we see IMPLEMENTATION in the first line, then we are done.
 
-    if(ereg("IMPLEMENTATION",$this->line))
+    if(strpos($this->line,'IMPLEMENTATION')!==false)
     {
       //we're on the Cyrus V2 or Cyrus V3 sieve server
       while(sieve::status($this->line) == F_DATA){
@@ -454,7 +454,7 @@
               } else {
                   $this->cap_type="auth";            
               }
-              $this->modules = split(" ", $this->item[1]);
+              $this->modules = explode(" ", $this->item[1]);
               if(is_array($this->modules)){
                   foreach($this->modules as $this->module)
                       $this->capabilities[$this->cap_type][$this->module]=true;
@@ -488,7 +488,7 @@
         $this->modules = substr($this->item[1], strpos($this->item[1], "{"),strlen($this->item[1])-1);
 
         //then split again at the ", " stuff.
-        $this->modules = split($this->modules, ", ");
+        $this->modules = explode($this->modules, ", ");
  
         //fill up our $this->modules property
         if(is_array($this->modules)){
@@ -884,7 +884,7 @@
                   $cap_type="auth";            
               }
 
-              $this->modules = split(' ', $this->item[1]);
+              $this->modules = explode(' ', $this->item[1]);
               if(is_array($this->modules)){
                   foreach($this->modules as $m) {
                       $this->capabilities[$cap_type][strtolower($m)]=true;

Хотя это вроде бы похоже на мои «костыли»:

--- include/html_rulestable.inc.php.orig      2009-05-29 12:24:15.000000000 +0400
+++ include/html_rulestable.inc.php           2012-12-02 06:50:00.000000000 +0400
@@ -161,7 +161,7 @@
      */
     function rules_confirmation_text() {
         $out = $this->retrieve_avelsieve_messages();
-        session_unregister('comm');
+        $this->clear_avelsieve_messages();
         return $out;
     }

Русификация

Ну и для окончательного эстетства позволю себе частично русифицировать плагин:

epsilon#  cat avelsieve.po
# Translation of avelsieve to Russian.
# Copyright (C) 2002 Alexandros Vellis <avel@noc.uoa.gr>
# Vadim Kozlov <vad@tomsknet.ru> 2002.
#
msgid ""
msgstr ""
"Project-Id-Version: avelsieve 0.9\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-29 11:16+0300\n"
"PO-Revision-Date: 2003-05-21 13:15+0300\n"
"Last-Translator: Vadim Kozlov <vad@tomsknet.ru>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "You have to define at least one header match text."
msgstr "Вы должны определить хотя бы одну строку соответствия заголовка."

msgid "Add New Rule"
msgstr "Добавить новое правило"

msgid "New Rule Wizard - Step"
msgstr "Построитель правил - шаг"

msgid "of"
msgstr "из"

msgid "Rule Type"
msgstr "Тип правила"

msgid "Condition"
msgstr "Условие"

msgid "Action"
msgstr "Действие"

msgid "Confirmation"
msgstr "Подтверждение"

msgid ""
"<p>You have chosen to keep every mail. This is the default action anyway, so "
"you might want to start over with a rule that makes more sense. Select &quot;"
"finished&quot; to save this rule nonetheless.</p>"
msgstr ""
"<p>Ваше правило сводится к сохранению сообщения в почтовом ящике; это "
"действие по умолчанию, так что вы можете заменить это правило более "
"осмысленным. Выберите &quot;finished&quot; для того, чтобы сохранить правило "
"несмотря ни на что.</p>"

msgid ""
"Please use the buttons on the bottom instead of your browser's reload, back "
"and forward buttons, to build a rule."
msgstr ""
"Пожалуйста, для построения правила используйте кнопки внизу вместо кнопок "
"обновить, вперёд и назад вашего браузера."

#, fuzzy
msgid "Display and Edit"
msgstr "Показывать как"

msgid ""
"Shows a table of the mail filtering rules of this script and allows editing "
"of them."
msgstr "Показывает таблицу текущих правил фильтрации почты и позволяет их редактировать"

msgid "Save Locally / Backup"
msgstr ""

msgid ""
"Retrieve the mail filtering script from the Sieve server to your computer."
msgstr ""

msgid "Set as Filtering script for a Shared Folder"
msgstr ""

msgid ""
"Activates this script, for all email received directly to a shared folder."
msgstr ""

#, fuzzy
msgid "Mail Filtering Scripts"
msgstr "Имеющиеся правила фильтрации"

msgid "Script Name"
msgstr ""

msgid "Status"
msgstr "Статус"

msgid "Actions"
msgstr "Действия"

msgid "Initial / Predefined script"
msgstr ""

msgid "Message Filters"
msgstr "Фильтры сообщений"

msgid ""
"Server-Side mail filtering enables you to add criteria in order to "
"automatically forward, delete or place a given message into a folder."
msgstr ""
"Фильтрация почты на сервере позволяет Вам определить критерии в соответствии "
"с которыми данное сообщение будет автоматически пренаправлено, удалено или "
"помещено в конкретную папку (IMAP)"

msgid "Junk Mail Options"
msgstr ""

msgid ""
"The Junk Mail Filter gathers all unwanted SPAM / Junk messages in your Junk "
"folder."
msgstr ""

msgid "Filters"
msgstr "Фильтры"

msgid "Could not set active script on your IMAP server"
msgstr "Не могу сделать скрипт активным на вашем сервере IMAP"

msgid "Please contact your administrator."
msgstr "Пожалуйста, сообщите вашему администратору."

#, php-format
msgid "Could not delete rule #%s: This type of rule cannot be deleted."
msgstr ""

#, php-format
msgid "Could not delete rules #%s: This type of rule cannot be deleted."
msgstr ""

#, php-format
msgid "The entered position, %s, is not valid."
msgstr ""

#, php-format
msgid "The entered position, %s, is greater than the current number of rules."
msgstr ""

msgid "Message"
msgstr "Сообщение"

msgid "Current Date / Time"
msgstr "Текущие Дата / Время"

msgid "Always"
msgstr "Всегда"

msgid "Could not get SIEVE script from your IMAP server"
msgstr "Не могу получить скрипт с вашего сервера IMAP"

msgid "Error Encountered:"
msgstr "Обнаружено ошибок:"

msgid "Unable to load script to server."
msgstr "Не могу загрузить фильтр на сервер."

#, php-format
msgid "Could not delete script from server %s."
msgstr "Не могу удалить скрипт с сервера IMAP"

msgid "Could not set active script on your IMAP server "
msgstr "Не могу установить флаг исполняемости скрипта на сервере IMAP"

msgid "Could not delete script from server "
msgstr "Не могу удалить скрипт с сервера IMAP"

msgid "Could not log on to timsieved daemon on your IMAP server"
msgstr "Не могу соединится с демоном timsiaved на вашем сервере IMAP"

msgid "Server responded with:"
msgstr "Сервер ответил:"

msgid "Disable"
msgstr "Отключить"

msgid "The rule will have no effect for as long as it is disabled."
msgstr "Правило не будет применяться, пока оно отключено."

msgid "Discard"
msgstr "Уничтожить"

msgid "Silently discards the message; use with caution."
msgstr "Уничтожить сообщение без предупреждения; используйте с осторожностью."

msgid "Move to Folder"
msgstr "Переместить в папку"

#, php-format
msgid "Or specify a new folder: %s to be created under %s"
msgstr "Или создать новую папку %s, размещенную в %s"

msgid "Flag"
msgstr "Флаг"

msgid "Set message flags"
msgstr "Установить флаги сообщения"

msgid "Standard Flags"
msgstr "Стандартные флаги"

msgid "Message Labels"
msgstr "Метки сообщения"

msgid "Custom Flags"
msgstr "Пользовательские флаги"

msgid "Seen"
msgstr "Просмотрено"

msgid "Answered"
msgstr "Отвечено"

msgid "Flagged"
msgstr "Отмечено"

msgid "Deleted"
msgstr "Удалено"

msgid "Draft"
msgstr "Черновик"

msgid "Important"
msgstr "Важное"

msgid "Work"
msgstr "Работа"

msgid "Personal"
msgstr "Личное"

msgid "To Do"
msgstr "Исполнить"

msgid "Later"
msgstr "Позже"

msgid "Junk"
msgstr "Спам"

msgid "Not Junk"
msgstr "Не спам"

#, php-format
msgid "Also, set message flag %s"
msgstr ""

#, php-format
msgid "Also, set message flags: %s"
msgstr ""

#, php-format
msgid "Flags: %s"
msgstr "Флаги: %s"

#, php-format
msgid "Set (replace) flags as the current set: %s"
msgstr ""

#, php-format
msgid "Set (replace) flags: %s"
msgstr "Установить (заменить) флаги: %s"

#, php-format
msgid "Add flags to current set: %s"
msgstr "Добавить флаги к текущим: %s"

#, php-format
msgid "Add flags: %s"
msgstr "Добавить флаги: %s"

#, php-format
msgid "Remove flags from current set: %s"
msgstr "Удалить флаги из текущего набора: %s"

#, php-format
msgid "Remove flags: %s"
msgstr "Удалить флаги: %s"

msgid ""
"Enter here a list of flags separated by spaces. Example: <tt>$MyFlag "
"$Special</tt>"
msgstr ""
"Задайте список флагов, разделенных пробелами. Пример: <tt>$MyFlag"
"$Special</tt>"

msgid "Move to Junk"
msgstr "Переместить в Спам"

#, php-format
msgid ""
"Store message in your Junk Folder. Messages older than %s days will be "
"deleted automatically."
msgstr ""
"Помещать спам в папку Junk. Сообщения, старше чем %s дней, будут удалены "
"автоматически."

msgid "Note that you can set the number of days in Folder Preferences."
msgstr "Напоминаем, что Вы можете установить количество дней в настройках папок."

msgid "Keep Message"
msgstr "Сохранить сообщение"

msgid "Save the message in your INBOX."
msgstr "Сохранить сообщение в папке Входящие."

msgid "Also keep copy in INBOX, marked as deleted."
msgstr "Также сохранить во Входящих, пометив как удалённое."

msgid "Notify"
msgstr "Уведомить"

msgid "Send a notification "
msgstr "Отправить уведомление "

msgid "Mobile Phone Message (SMS)"
msgstr "Уведомление через SMS"

msgid "Email notification"
msgstr "Уведомление через email"

msgid "Notification via Zephyr"
msgstr "Уведомление через Zephyr"

msgid "Notification via ICQ"
msgstr "Уведомление через ICQ"

msgid "Method"
msgstr "Способ"

msgid "Notification ID"
msgstr "Идентификатор уведомления"

msgid "Destination"
msgstr "Назначение"

msgid "Priority"
msgstr "Приоритет"

msgid "Help: Valid variables are:"
msgstr "Справка: Допустимыми переменными являются:"

msgid "Redirect"
msgstr "Перенаправить"

msgid "Automatically redirect the message to a different email address"
msgstr "Автоматически перенаправить сообщение на другой адрес"

msgid "someone@example.org"
msgstr "someone@example.org"

msgid "Keep a local copy as well."
msgstr "Сохранить локальную копию."

msgid ""
"Incorrect email address(es). You must enter one or more valid email "
"addresses, separated by comma."
msgstr ""

msgid "Reject"
msgstr "Отклонить"

msgid "Send the message back to the sender, along with an excuse"
msgstr "Отправить сообщение обратно с пояснением"

msgid "Please do not send me large attachments."
msgstr "Пожалуйста, не отправляйте мне больших вложений."

msgid "If this rule matches, do not check any rules after it."
msgstr "Если это правило срабатывает, не проверять другие правила после него"

msgid "STOP"
msgstr "ЗАКОНЧИТЬ"

msgid "Move to Trash"
msgstr "Переместить в Корзину"

msgid ""
"Store message in your Trash Folder. You will have to purge the folder "
"yourself."
msgstr ""
"Помещать спам в папку Trash. Вы должны будете очищать её самостоятельно."

msgid "Vacation / Autoresponder"
msgstr "Отпуск / Автоответчик"

msgid ""
"This is an automated reply; I am away and will not be able to reply to you "
"immediately."
msgstr ""
"Это автоматический ответ; В данный момент я отсутствую и не смогу ответить "
"Вам немедленно."

msgid "I will get back to you as soon as I return."
msgstr "Я отвечу Вам, когда вернусь"

msgid ""
"The notice will be sent only once to each person that sends you mail, and "
"will not be sent to a mailing list address."
msgstr ""
"Уведомление будет отправлено только один раз каждому корреспонденту и не "
"будет отправляться в списки рассылки."

msgid "Subject:"
msgstr "Тема:"

msgid "Optional subject of the vacation message."
msgstr "Тема автоматического сообщения (опционально)."

msgid "Your Addresses:"
msgstr "Ваши адреса:"

msgid ""
"A vacation / autorespond message will be sent only if an email is sent "
"explicitly to one of these addresses."
msgstr "Автоматический ответ будет отправлен, только если сообщение "
"было отправлено в точности на один из этих адресов."

msgid "Days:"
msgstr "Дни:"

msgid "days"
msgstr "дней"

msgid ""
"A vacation / autorespond message will not be resent to the same address, "
"within this number of days."
msgstr "Автоответ / уведомление об отпуске будет отправляться повторно на тот же адрес"
"не ранее, чем через указанное количество дней."

msgid "Message:"
msgstr "Сообщение:"

msgid "The number of days between vacation messages must be a positive number."
msgstr "Количество дней между уведомлениями об отпуске должно быть положительным числом."

#, fuzzy
msgid "Date"
msgstr "Скопировать"

msgid "Received"
msgstr "Получено"

msgid "Year"
msgstr "Год"

msgid "Month"
msgstr "Месяц"

msgid "Day"
msgstr "День"

msgid "Weekday"
msgstr "День недели"

msgid "Hour"
msgstr "Час"

msgid "Minute"
msgstr "Минута"

msgid "Second"
msgstr "Секунда"

msgid "Sunday"
msgstr "Воскресенье"

msgid "Monday"
msgstr "Понедельник"

msgid "Tuesday"
msgstr "Вторник"

msgid "Wednesday"
msgstr "Среда"

msgid "Thursday"
msgstr "Четверг"

msgid "Friday"
msgstr "Пятница"

msgid "Saturday"
msgstr "Суббота"

msgid "Is"
msgstr ""

msgid "Before (&lt;=)"
msgstr ""

msgid "After (=&gt;)"
msgstr ""

msgid "Before (&lt;)"
msgstr ""

msgid "After (&gt;)"
msgstr ""

msgid "January"
msgstr ""

msgid "February"
msgstr ""

msgid "March"
msgstr ""

msgid "April"
msgstr ""

msgid "May"
msgstr ""

msgid "June"
msgstr ""

msgid "July"
msgstr ""

msgid "August"
msgstr ""

msgid "September"
msgstr ""

msgid "October"
msgstr ""

msgid "November"
msgstr ""

msgid "December"
msgstr ""

msgid "Occurence"
msgstr ""

msgid "Specific Date"
msgstr ""

msgid "Specific Time"
msgstr ""

#, fuzzy, php-format
msgid "of header %s"
msgstr "заголовок"

msgid "Current date / time:"
msgstr ""

#, fuzzy
msgid "Current date:"
msgstr "Создано:"

#, fuzzy
msgid "message header"
msgstr "Сообщение"

#, fuzzy
msgid "Message header"
msgstr "Фильтры сообщений"

#, fuzzy, php-format
msgid "is %s"
msgstr "Редактировать"

msgid "is"
msgstr "совпадает"

#, php-format
msgid "is before than %s (inclusive)"
msgstr ""

#, php-format
msgid "is after than %s (inclusive)"
msgstr ""

#, fuzzy, php-format
msgid "is before than %s"
msgstr "меньше чем"

#, fuzzy, php-format
msgid "is after than %s"
msgstr "больше чем"

#, php-format
msgid "&quot;%s&quot;"
msgstr ""

#, php-format
msgid "&quot;<tt>%s:</tt>&quot;"
msgstr ""

msgid "AND (Every item must match)"
msgstr "И (выполнение всех условий)"

msgid "OR (Either item will match)"
msgstr "ИЛИ (выполнение любого условия)"

#, fuzzy
msgid "Rule"
msgstr "Тип правила"

#, fuzzy, php-format
msgid "Add a new %s"
msgstr "Добавить новое правило"

#, fuzzy
msgid "SPAM Rule"
msgstr "Добавить новое правило для фильтрации спама"

msgid "Junk Mail Rule"
msgstr ""

#, fuzzy, php-format
msgid "Edit %s"
msgstr "Редактировать"

msgid "Whitelist"
msgstr "Белый список"

#, fuzzy, php-format
msgid "Add new %s"
msgstr "Сравнение адреса"

msgid "Sieve Code"
msgstr ""

#, fuzzy
msgid "Address"
msgstr "Сравнение адреса"

msgid ""
"Perform an action depending on email addresses appearing in message headers."
msgstr "Выполнить действие в зависимости email-адресов в заголовках сообщения."

#, fuzzy
msgid "Header"
msgstr "Сравнение заголовков"

msgid ""
"Perform an action on messages matching a specified header (From, To etc.)."
msgstr ""
"Выполнить действие по результатам анализа заголовков сообщения (From, To и т."
"д.)."

msgid "Envelope"
msgstr ""

#, fuzzy
msgid ""
"Perform an action on messages matching a specified envelope header (Envelope "
"FROM, TO)."
msgstr ""
"Выполнить действие по результатам анализа заголовков сообщения (From, To и т."
"д.)."

msgid "Size"
msgstr "Размер"

msgid "Perform an action on messages depending on their size."
msgstr "Выполнить действие в зависимости от размера сообщения."

msgid "Body"
msgstr ""

msgid "Perform an action on messages depending on their content (body text)."
msgstr "Выполнить действие в зависимости от содержания (текста сообщения)."

#, fuzzy
msgid ""
"Perform an action on messages depending on date or time related to the "
"message."
msgstr "Выполнить действие в зависимости от размера сообщения."

msgid "All"
msgstr "Все"

msgid "Perform an action on <strong>all</strong> incoming messages."
msgstr "Выполнить действие для <strong>всех</strong> входящих сообщений."

msgid "contains"
msgstr "содержит"

msgid "does not contain"
msgstr "не содержит"

msgid "is not"
msgstr "не совпадает"

msgid "matches"
msgstr "соответствует"

msgid "wildcard"
msgstr "шаблон"

msgid "does not match"
msgstr "не соответствует"

msgid "regexp"
msgstr "регулярное выражение"

msgid "is greater than"
msgstr "больше чем"

msgid "is greater or equal to"
msgstr "больше или равно"

msgid "is lower than"
msgstr "меньше чем"

msgid "is lower or equal to"
msgstr "меньше или равно"

msgid "is equal to"
msgstr "равно"

msgid "is not equal to"
msgstr "не равно"

msgid "verbose"
msgstr "детально"

msgid "Textual descriptions of the rules"
msgstr "Текстовое описание правил"

msgid "terse"
msgstr "кратко"

msgid "More suitable for viewing the table of rules at once"
msgstr "Наиболее оптимальный вариант для просмотра таблицы правил"

msgid "source"
msgstr "исходный код"

msgid "Display SIEVE source"
msgstr "Отобразить исходный код SIEVE"

msgid "Low"
msgstr "Низкий"

msgid "Normal"
msgstr "Нормальный"

msgid "High"
msgstr "Высокий"

msgid "Delete"
msgstr "Удалить"

msgid "Edit"
msgstr "Редактировать"

msgid "Duplicate"
msgstr "Скопировать"

msgid "Move Up"
msgstr "Переместить выше"

msgid "Move to Top"
msgstr "Переместить на самый верх"

msgid "Move Down"
msgstr "Переместить ниже"

msgid "Move to Bottom"
msgstr "Переместить в самый низ"

msgid "Junk Folder"
msgstr "Папка Junk"

#, php-format
msgid ""
"Store SPAM message in your Junk Folder. Messages older than %s days will be "
"deleted automatically."
msgstr ""
"Помещать спам в папку Junk. Сообщения, старше чем %s дней, будут удалены "
"автоматически."

msgid "Trash Folder"
msgstr "Папка Trash"

msgid ""
"Store SPAM message in your Trash Folder. You will have to purge the folder "
"yourself."
msgstr ""
"Помещать спам в папку Trash. Вы должны будете очищать её самостоятельно."

msgid ""
"Discard SPAM message. You will get no indication that the message ever "
"arrived."
msgstr "Уничтожить спам. Вы не увидите, что такое сообщение вообще приходило."

msgid "Server-Side Mail Filtering"
msgstr "Фильтрация почты на сервере"

msgid "Successfully added new rule."
msgstr "Новое правило успешно добавлено."

#, php-format
msgid "Successfully updated rule #%s"
msgstr "Правило номер #%s успешно обновлено"

#, php-format
msgid "Successfully deleted rules #%s"
msgstr "Правила(о) #%s успешно удалены(о)"

#, php-format
msgid "Successfully deleted rule #%s"
msgstr "Правило #%s успешно удалено"

msgid "You must correct the above errors before continuing."
msgstr "Вы не можете продолжить, пока не исправлены ошибки."

msgid "No check"
msgstr "Не проверять"

#, php-format
msgid "Editing %s"
msgstr ""

#, php-format
msgid "(Rule #%s)"
msgstr "(Правило #%s)"

#, php-format
msgid "Add a new %s "
msgstr "Добавить новое правило #%s"

msgid "Configure Anti-SPAM Protection"
msgstr "Конфигурирование защиты от спама"

msgid ""
"All incoming mail is checked for unsolicited commercial content (SPAM) and "
"marked accordingly. This special rule allows you to configure what to do "
"with such messages once they arrive to your Inbox."
msgstr ""
"Вся входящая почта проверяется на предмет спама и помечается соответственно. "
"Это специальное правило позволяет вам указать, что делать с такими "
"сообщениями, когда они приходят в ваш почтовый ящик."

#, php-format
msgid ""
"Select %s to add the predefined rule, or select the advanced SPAM filter to "
"customize the rule."
msgstr ""
"Выберите %s для добавления готового правила или выберите расширенный спам-"
"фильтр для создания собственного."

msgid "Add Spam Rule"
msgstr "Добавить правило в спам-фильтр"

msgid "Advanced Spam Filter..."
msgstr "Расширенный спам-фильтр..."

msgid "Target Score"
msgstr "Уровень соотвествия"

#, php-format
msgid ""
"Messages with SPAM-Score higher than the target value, the maximum value "
"being %s, will be considered SPAM."
msgstr ""
"Сообщения с уровнем соответствия выше, чем данное значение, начиная с %s, "
"будут считаться спамом."

msgid "SPAM Lists to check against"
msgstr "Чёрные списки для проверки"

msgid ""
"Messages that match any of these header rules will never end up in Junk "
"Folders or regarded as SPAM."
msgstr ""

msgid "Apply Changes"
msgstr "Сохранить изменения"

msgid "Cancel"
msgstr "Отказаться"

#, fuzzy
msgid "Information..."
msgstr "Подтверждение"

#, php-format
msgid ""
"There is currently no Junk Mail Filter, so we are suggesting the following "
"default settings. To add the Junk Mail Filter, simply choose <em>&quot;%"
"s&quot;</em>."
msgstr ""

#, fuzzy
msgid "Enable Junk Mail Filtering"
msgstr "Включить правила фильтрации спама"

msgid "Automatically delete Junk Messages"
msgstr "Автоматически удалять спам"

#, php-format
msgid "when they are older than %s days"
msgstr ""

msgid "Enable Whitelist"
msgstr "Включить Белый список"

msgid ""
"Messages sent from the addresses in your Whitelist will never end up in your "
"Junk Mail folder, or considered as SPAM."
msgstr ""

msgid "Edit Whitelist...."
msgstr ""

msgid "Automatically add all your Address Book Contacts in the Whitelist"
msgstr ""

msgid "Configure Advanced Junk Mail Tests"
msgstr ""

#, fuzzy
msgid "You have to enable at least one Junk Mail Test."
msgstr "Вы должны определить хотя бы одну строку соответствия заголовка."

msgid "Junk Mail Options have been saved."
msgstr ""

msgid "Editing Whitelist"
msgstr ""

msgid ""
"Messages coming from the email addresses that you enter here will never end "
"up in your Junk folder or be considered as SPAM."
msgstr ""

msgid ""
"Enter <strong>one (1) email address per line</strong>. Note that you can "
"also enter an incomplete address or a mail domain."
msgstr ""

msgid "Example:"
msgstr ""

msgid "Whitelist has been updated."
msgstr ""

#, php-format
msgid "Editing Sieve Code (Rule #%s)"
msgstr ""

#, fuzzy
msgid "Create New Custom Sieve Rule"
msgstr "Имеющиеся правила фильтрации"

msgid "Custom Rule"
msgstr ""

msgid "Please enter valid Sieve code in the textbox below."
msgstr ""

msgid ""
"Note: The <tt>require</tt> command is not needed; it will be added "
"automatically at the start of the script."
msgstr ""

#, php-format
msgid "Sieve Capabilities supported: %s"
msgstr ""

msgid "Please enter a valid Sieve code snippet."
msgstr ""

msgid "To: or Cc"
msgstr ""

msgid "The condition for the following rules is:"
msgstr "Условием для этого правила является: "

msgid "Less..."
msgstr "Меньше..."

msgid "More..."
msgstr "Больше..."

msgid "bigger"
msgstr "больше"

msgid "smaller"
msgstr "меньше"

msgid "than"
msgstr "чем"

msgid "KB (kilobytes)"
msgstr "KB (килобайт)"

msgid "MB (megabytes)"
msgstr "MB (мегабайт)"

msgid "All Messages"
msgstr "Все сообщения"

msgid ""
"The following action will be applied to <strong>all</strong> incoming "
"messages that do not match any of the previous rules."
msgstr ""
"Следующее действие будет применено ко <strong>всем</strong> входящим "
"сообщениям, не подпадающим под действие ни одного из предыдущих правил."

msgid "1st"
msgstr "1-й"

msgid "2nd"
msgstr "2-й"

msgid "3rd"
msgstr "3-й"

msgid "4th"
msgstr "4-й"

msgid "5th"
msgstr "5-й"

msgid "6th"
msgstr "6-й"

msgid "7th"
msgstr "7-й"

msgid "8th"
msgstr "8-й"

msgid "9th"
msgstr "9-й"

msgid "from the end"
msgstr "начиная с конца"

msgid "Choose what to do when this rule triggers, from one of the following:"
msgstr "Выберите действие, выполняющееся когда срабатывает данное правило:"

msgid "Add SPAM Rule"
msgstr "Добавить новое правило для фильтрации спама"

msgid "Editing Mail Filtering Rule"
msgstr "Редактирование правила фильтрации"

msgid "Create New Mail Filtering Rule"
msgstr "Создать новое правило фильтрации"

msgid "Additional Actions"
msgstr "Дополнительные действия"

msgid "You have to define at least one condition."
msgstr "Вы должны задать по крайней мере одно условие."

msgid "Clear this Form"
msgstr "Очистить форму"

msgid "Start Over"
msgstr "Начать заново"

msgid "Move back to step"
msgstr "Вернуться на шаг"

msgid "Finished"
msgstr "Готово"

msgid "Move on to step"
msgstr "Следующий шаг"

msgid "Your new rule states:"
msgstr "Ваше новое правило гласит:"

msgid ""
"If this is what you wanted, select Finished. You can also start over or "
"cancel adding a rule altogether."
msgstr ""
"Если это то, что вы хотели, выберите Finished. Вы можете также начать заново "
"или вообще отказаться от добавления правила"

msgid ""
"Here you can add or delete filtering rules for your email account. These "
"filters will always apply to your incoming mail, wherever you check your "
"email."
msgstr ""
"Здесь Вы можете добавить или удалить правила фильтрации для Вашего почтового "
"ящика. Фильтры будут применяться ко всей Вашей входящей почте."

msgid ""
"You don't have any rules yet. Feel free to add any with the button &quot;Add "
"a New Rule&quot;. When you are done, please select &quot;Save Changes&quot; "
"to get back to the main options screen."
msgstr ""
"Пока у Вас нет правил. Вы можете их добавить при помощи кнопки &quot;"
"Добавить новое правило&quot;. Когда Вы закончите добавление, нажмите, "
"пожалуйста, кнопку &quot;Сохранить изменения&quot; для возврата на основную "
"страницу настроек."

msgid ""
"When you are done with editing, <strong>remember to select &quot;Save "
"Changes&quot;</strong> to activate your changes!"
msgstr ""
"Завершив редактирование, <strong>не забудьте</strong> нажать &quot;Сохранить "
"изменения&quot;, чтобы они вступили в силу"

msgid "The following table summarizes your current mail filtering rules."
msgstr ""
"В таблице представлены текущие правила фильтрации Ваших почтовых сообщений"

msgid ""
"Warning: In your rules, you have defined an action that refers to a folder "
"that does not exist or a folder where you do not have permission to append "
"to."
msgstr ""

#, php-format
msgid ""
"Note: A <a href=\"%s\">Vacation Autoresponder</a> is active (<a href=\"%s"
"\">Rule #%s</a> in your current Mail Filtering Rules).<br/>Don't forget to "
"disable it or delete it when you are back."
msgstr ""

msgid "No"
msgstr "N правила"

msgid "Options"
msgstr "Настройки"

msgid "Description of Rule"
msgstr "Описание правила"

msgid "Display as:"
msgstr "Показывать как"

msgid "Position"
msgstr "Порядок"

msgid "Add a new Rule"
msgstr "Добавить новое правило"

msgid "Really delete selected rules?"
msgstr "Подтверждаете удаление выбранных правил?"

msgid "Enable"
msgstr "Разрешить"

msgid ""
"When you are done, please click the button below to return to your webmail."
msgstr "Нажмите эту кнопку, когда закончите редактирование"

msgid "Save Changes"
msgstr "Сохранить изменения"

msgid "Created:"
msgstr "Создано:"

msgid "Last modified:"
msgstr "Изменено:"

msgid "Current Mail Filtering Rules"
msgstr "Имеющиеся правила фильтрации"

msgid "Close"
msgstr "Закрыть"

msgid "No Filtering Rules Defined Yet"
msgstr "Правила фильтрации не определены"

#, fuzzy
msgid "Really delete this rule?"
msgstr "Успешно удалено правило #"

msgid "More Options..."
msgstr "Дополнительные опции..."

#, fuzzy
msgid "Move to Position..."
msgstr "Переместить на ..."

msgid "--------"
msgstr ""

#, fuzzy
msgid "Duplicate this Rule"
msgstr "Успешно удалено правило #"

msgid "Insert a New Rule here"
msgstr "Вставить новое правило сюда"

msgid "Send this Rule by Email"
msgstr "Отправить это правило по почте"

msgid "Go"
msgstr ""

msgid "Action for Selected Rules:"
msgstr "Действие для выбранных правил:"

#, fuzzy
msgid "Junk Folder Information"
msgstr "Папка Junk"

msgid "Messages in this folder have been identified as SPAM / Junk."
msgstr ""

#, php-format
msgid ""
"Note: Junk Mail is currently not enabled. Select &quot;%s&quot; to enable it."
msgstr ""

msgid "Edit Junk Mail Options..."
msgstr ""

#, fuzzy, php-format
msgid "Any messages older than %s days are automatically deleted."
msgstr ""
"Помещать спам в папку Junk. Сообщения, старше чем %s дней, будут удалены "
"автоматически."

msgid "Test for Forged Header"
msgstr ""

msgid "Automatically"
msgstr "Автоматически"

msgid "Sender"
msgstr ""

msgid "From"
msgstr ""

msgid "To"
msgstr ""

msgid "Subject"
msgstr ""

msgid "Create Filter"
msgstr "Создать правило фильтрации"

msgid "Vacation Filter Reminder"
msgstr ""

msgid "(Creates a new server-side filtering rule, based on the above criteria)"
msgstr ""

msgid ""
"Notice: The following criteria cannot be expressed as server-side filtering "
"rules:"
msgstr ""

msgid "Reason:"
msgstr ""

msgid "The Body extension is not supported in this server."
msgstr ""

msgid ""
"Note that Only From:, To:, Cc: and Subject: headers will be checked in the "
"server filter."
msgstr ""

msgid "These search expressions are not applicable during message delivery."
msgstr ""

msgid ""
"All messages considered as <strong>SPAM</strong> (unsolicited commercial "
"messages)"
msgstr "Все сообщения, отмеченные как <strong>спам</strong>"

msgid "SPAM"
msgstr ""

msgid "unless"
msgstr ""

msgid "Whitelist:"
msgstr ""

msgid "or"
msgstr "или"

msgid "matching the Spam List(s):"
msgstr "соответствует чёрным спискам:"

#, fuzzy
msgid "Spam List(s):"
msgstr "соответствует чёрным спискам:"

#, php-format
msgid "and with score greater than %s"
msgstr "и с уровнем соответствия больше чем %s"

#, php-format
msgid "Score > %s"
msgstr ""

msgid "will be"
msgstr "будут"

msgid "stored in the Junk Folder."
msgstr "помещены в папку Junk"

msgid "stored in the Trash Folder."
msgstr "помещаны в папку Trash"

msgid "Trash"
msgstr ""

msgid "discarded."
msgstr "отменено"

msgid "Junk Mail Rule is Disabled"
msgstr ""

msgid "<s></s>"
msgstr ""

#, fuzzy
msgid "Junk Mail"
msgstr "Папка Junk"

#, fuzzy
msgid "matching any one of the Spam tests as follows:"
msgstr "соответствует чёрным спискам:"

#, fuzzy
msgid "Spam Tests:"
msgstr "соответствует чёрным спискам:"

msgid ""
"and where the sender does <em>not</em> match any of the addresses / "
"expressions in your <strong>Whitelist</strong>"
msgstr ""

msgid ""
"The messages that match the system's default <strong>SPAM</strong> checks"
msgstr ""

#, fuzzy
msgid "stored in the <strong>Junk</strong> Folder."
msgstr "помещены в папку Junk"

#, fuzzy
msgid "stored in the <strong>Trash</strong> Folder."
msgstr "помещаны в папку Trash"

msgid ""
"<strong>Whitelist</strong> - The following email addresses are whitelisted "
"and will not end up in Junk folders or considered as SPAM:"
msgstr ""

#, php-format
msgid "and %s more email addresses / expressions."
msgstr ""

#, php-format
msgid "%s more entries..."
msgstr ""

#, fuzzy
msgid "Custom Sieve Code"
msgstr "Имеющиеся правила фильтрации"

msgid "View Source"
msgstr ""

#, php-format
msgid "the header %s"
msgstr "заголовок %s"

#,  php-format
msgid "Header %s"
msgstr "Заголовок %s"

msgid "To or Cc"
msgstr ""

#, php-format
msgid "the envelope %s"
msgstr ""

#, php-format
msgid "Envelope %s"
msgstr ""

#, php-format
msgid "the address %s"
msgstr ""

#, php-format
msgid "Address %s"
msgstr ""

msgid "message body"
msgstr "тело сообщения"

#, php-format
msgid "index number %s"
msgstr ""

#, php-format
msgid "index #%s"
msgstr ""

msgid "(counting from last header)"
msgstr ""

msgid "(from end)"
msgstr ""

msgid "matches the regular expression"
msgstr "соответствует регулярному выражению"

msgid "does not match the regular expression"
msgstr "не соответствует регулярному выражению"

msgid "exists"
msgstr "существует"

msgid "does not exist"
msgstr "не существует"

msgid "This rule is currently <strong>DISABLED</strong>:"
msgstr "В данный момент это правило <strong>ОТКЛЮЧЕНО</strong>:"

msgid "DISABLED"
msgstr "ОТКЛЮЧЕНО"

msgid "If"
msgstr "если"

msgid "<em>any</em> of the following mail headers match: "
msgstr "<em>любой</em> из следующих почтовых заголовков соответствует: "

msgid "<em>all</em> of the following mail headers match: "
msgstr "<em>все</em> следующие почтовые заголовки соответствуют: "

msgid "the size of the message is"
msgstr "размер сообщения"

msgid " bigger"
msgstr " больше"

msgid " smaller"
msgstr " меньше"

msgid "For <strong>ALL</strong> incoming messages; "
msgstr "Для <strong>ВСЕХ<strong> входящих сообщений; "

msgid "ALL"
msgstr "ВСЕ"

msgid "always"
msgstr "всегда"

msgid "and"
msgstr "и"

msgid "then"
msgstr "то"

msgid "<em>keep</em> the message."
msgstr "<em>сохранить</em> сообщение."

msgid "Keep"
msgstr "Сохранить"

msgid "<em>discard</em> the message."
msgstr "<em>уничтожить</em> сообщение."

msgid "<em>reject</em> it, sending this excuse back to the sender:"
msgstr "<em>вернуть отправителю</em> с пояснением: "

msgid "Redirect to"
msgstr "Переслать на"

#, php-format
msgid "<em>redirect</em> it to the email addresses: %s."
msgstr "<em>переслать</em> на адрес: %s."

msgid "<em>redirect</em> it to the email address"
msgstr "<em>переслать</em> на адрес"

#, php-format
msgid "<em>file</em> it into the folder %s"
msgstr "<em>сохранить</em> в папке <strong>%s</strong>"

#, php-format
msgid "File into %s"
msgstr "Сохранить в %s"

msgid "(Warning: Folder not available)"
msgstr "(Предупреждение: Папка не существует)"

#, php-format
msgid "reply with a vacation / autoresponder message: "
msgstr "ответить автоматическим сообщением:"

msgid "Also keep a local copy."
msgstr "Также сохранить локальную копию."

msgid " Also keep a copy in INBOX, marked as deleted."
msgstr "Также сохранить копию во входящих, пометив как удалённое."

#, fuzzy
msgid "Keep Deleted"
msgstr "Удалить выбранное"

msgid " Also notify using the method"
msgstr "Также уведомить, используя следующий метод"

msgid "with"
msgstr "с"

msgid "priority and the message"
msgstr "приоритетом и сообщением"

#, php-format
msgid "Notify %s"
msgstr ""

msgid "Then <strong>STOP</strong> processing rules."
msgstr "Затем <strong>ОСТАНОВИТЬ<strong> обработку правил."

msgid "Stop"
msgstr "Закончить обработку"

msgid "You have not defined the name for the new folder."
msgstr "Вы не указали имя для новой папки."

msgid "Please try again."
msgstr "Пожалуйста, попробуйте ещё раз."

msgid "Illegal folder name.  Please select a different name"
msgstr "Недопустимое имя папки. Пожалуйста, выберите другое имя"

msgid "None"
msgstr "Выберите родительский каталог"

#~ msgid "Vacation"
#~ msgstr "Отпуск"

#~ msgid "Addresses: Only reply if sent to these addresses:"
#~ msgstr "Адреса: отвечать, если отправлено на эти адреса: "

#~ msgid "Days: Reply message will be resent after"
#~ msgstr "Периодичность: Ответное сообщение будет выслано повторно через"

#~ msgid "Use the following message:"
#~ msgstr "Использовать следующее сообщение:"

#~ msgid "Keep (Default action)"
#~ msgstr "Сохранить (по умолчанию)"

#~ msgid "Discard Silently"
#~ msgstr "Молча уничтожить"

#~ msgid "Reject, sending this excuse to the sender:"
#~ msgstr "Вернуть отправителю с пояснением:"

#~ msgid "Redirect to the following email address:"
#~ msgstr "Перенаправить на следующий адрес:"

#~ msgid "Move message into"
#~ msgstr "Переместить сообщение в"

#~ msgid "the existing folder"
#~ msgstr "существующую папку "

#~ msgid "a new folder, named"
#~ msgstr "новую папку "

#~ msgid "created as a subfolder of"
#~ msgstr " созданную в папке "

#~ msgid "Notify me, using the following method:"
#~ msgstr "Сообщить мне, используя следующий метод:"

#~ msgid "(Probably the script is size null)."
#~ msgstr "(Возможно, скрипт имеет нулевой размер)."

#~ msgid "Body Match"
#~ msgstr "Сравнение содержания"

#~ msgid "What kind of rule would you like to add?"
#~ msgstr "Правило какого типа Вы хотели бы добавить?"

#, fuzzy
#~ msgid "Change Type"
#~ msgstr "Тип правила"

#~ msgid ""
#~ "The rule will trigger if the following addresses appear anywhere in the "
#~ "message's headers:"
#~ msgstr ""
#~ "правило срабатывает, если следующие адреса имеются в каком-либо заголовке "
#~ "сообщения"

#~ msgid "The header "
#~ msgstr "Заголовок "

#~ msgid "This rule will trigger if message is"
#~ msgstr "Это правило сработает, если сообщение "

#~ msgid ""
#~ "This rule will trigger upon the occurrence of one or more strings in the "
#~ "body of an e-mail message. "
#~ msgstr ""
#~ "Это правило сработает в случае, если в теле сообщения будут найдены одна "
#~ "или более строк. "

#~ msgid "All your rules have been deleted"
#~ msgstr "Все Ваши правила были удалены"

#~ msgid "in order to save your rules."
#~ msgstr "для того, чтобы сохранить ваши правила."
1)
Речь идет о версии avelsieve-1.9.9.
2)
Если почтовый сервер это поддерживает.
freebsd/avelsieve.txt · Последние изменения: 08.10.2016 12:14:08 — Ладилова Анна
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0