3

Я использую фильтры для удаления нежелательных сообщений (в дополнение к встроенному фильтру спама).

Моя проблема в том, что с годами (так что с каждым выпуском Thunderbird, который у меня когда-либо был, даже с текущим, который актуален), он не может фильтровать ссылки.
Например, я хочу удалить все сообщения, содержащие ссылку на http://xxxxx.emv3.com/xxxxxx
Мне так и не удалось удалить эти письма. Я использую фильтр на теле, проверяя, содержит ли он emv3, но это никогда не совпадает. Эти электронные письма представлены в формате HTML, а ссылки отображаются в виде текста, например "Посетите наш сайт".

Если я пишу HTML-письмо со ссылкой, мой фильтр работает.
Когда это спам, это никогда не работает.

Когда я сохраняю письмо в текстовый файл, я открываю его с помощью блокнота и вижу несколько http://xxxxx.emv3.com/xxxx

Есть идеи, почему это не работает и как я могу это сделать?

3 ответа3

4

Вы можете использовать аддон Thunderbird FiltaQuilla.

После установки расширения вы можете активировать все необходимые действия фильтра и условия поиска в параметрах надстройки (Thunderbird → Инструменты → Надстройки → FiltaQuilla → Параметры). Это параметры, предоставляемые текущей версией на момент написания статьи.

Вы определенно захотите взглянуть на документацию на сайте авторов, чтобы изучить все возможности и узнать, как использовать фильтры регулярных выражений и все другие полезности.

Вот типичный пример (очень простого) универсального шаблона адреса электронной почты, который принимает только адреса, которые содержат хотя бы одну точку перед @. Вы также можете увидеть некоторые исключения из этих правил для отправителей, которые находятся в локальной адресной книге, и для устаревших адресов, которые не подчиняются секретному шаблону.

пример

Это удивительный аддон Thunderbird. Я надеюсь, что это поможет.

Если это не соответствует вашим потребностям, вы можете использовать SpamPal с плагином RegExFilter и обнаруживать нежелательные сообщения. Однако, чтобы обнаружение нежелательной почты было эффективным, его необходимо "обучить".

Контроль нежелательной почты

Фильтры сообщений

1

Это не работает, потому что фильтры (и текущая версия FiltaQuilla) видят только текстовое представление кода HTML при фильтрации, если таковые имеются, потому что для некоторых папок (автономные папки IMAP) они видят только заголовки сообщений.

Я действительно не знаю, почему фильтры по умолчанию в Thunderbird не позволяют пользователям фильтровать необработанное тело, я думаю, это потому, что никто не запрашивал его. Кроме того, я не знаю, почему сложные плагины, такие как FiltaQuilla, не предоставляют доступ к сырому телу "из коробки". Опять же, возможно, это отсутствие интереса пользователя.

Итак, я могу рассказать вам, как это сделать с FiltaQuilla, но вам это не понравится. Это грязный, хакерский, медленный, хрупкий и совсем не удобный для пользователя. Но это возможно. Это работает на моем компьютере. Это должно работать в вашем. Если, конечно, Thunderbird не выйдет из строя и не испортит ваш почтовый ящик (как это случилось однажды здесь, когда я тестировал это, он никогда больше не работал в этой папке). Удивительно, но он работал безупречно с моими папками IMAP. Так что думайте об этом как об эксперименте, а не как об окончательном решении.

Если у вас уже есть FiltaQuilla, включите Javascript на вкладке «Условия поиска» в окне «Настройки» (перезапустите Thunderbird).

Теперь создайте фильтр как обычно, в списке «что искать» ищите Javascript. В следующем списке выберите Matches. Там будет значок редактирования, выберите его и вставьте следующий код (Примечание: этот код основан на некоторых тестах, включенных в исходный код Thunderbird):

let mylist = ["emv3.com", "_blank", "tumblr.com", "xxxx"];
var matchfound = -1;
const MAX_MESSAGE_LENGTH = 10240;
let msgFolder = message.folder;
let msgUri = msgFolder.getUriForMsg(message);
let messenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
let streamListener = Cc["@mozilla.org/network/sync-stream-listener;1"].createInstance(Ci.nsISyncStreamListener);
messenger.messageServiceFromURI(msgUri).streamMessage(msgUri, streamListener, null, null, false, "", false);
let sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
sis.init(streamListener.inputStream);
let rawbody = sis.read(MAX_MESSAGE_LENGTH);
for (let listidx = 0; listidx < mylist.length; listidx++) {
  //Components.utils.reportError("Checking " + mylist[listidx] + " in " + message.subject); 
  matchfound = rawbody.search(mylist[listidx]);
  if (matchfound>0) {
    Components.utils.reportError("Matched " + matchfound + " " + mylist[listidx] + " in " + message.subject); 
    break;
  }
}
(matchfound>0)

Вы видите строку "let mylist ="? Это массив Javascript. Вы можете заполнить его текстовыми строками для поиска. Вы видите MAX_MESSAGE_LENGTH = 10240? вот как далеко от начала сообщения этот код будет искать. Обычно 10K достаточно, так как спам-сообщения больше, чем изображения или другие вложения.

Закройте окно редактирования с помощью OK.

Определите ваши действия (переместить, удалить, пометить и т.д.).

Попробуйте запустить его.

Если вы включили консоль отладки в Thunderbird, вы можете увидеть список совпадений (это не обычный журнал фильтра).

И последнее замечание: этот скрипт не декодирует кодировку Base64 (или любую другую). Сообщение в кодировке Base64 не будет ничего совпадать.

Другое замечание: кратко просматривая исходный код Thunderbird, я думаю, что байесовский фильтр имеет доступ к необработанному телу сообщения, однако я не знаю, означает ли это что-то для вас.

Итак, для лучшего ответа, ваши варианты:

  • Напишите плагин самостоятельно.
  • Попросите автора плагина добавить поддержку необработанного доступа к телу (автор FiltaQuilla кажется хорошим человеком, вы можете спросить об этом на форумах FiltaQuilla).
0

Любые электронные письма, которые вы получаете в формате HTML, будут содержать спецификацию Content-type:text/html в фактическом теле сообщения.

Поэтому измените ваш фильтр на следующее:

"Content-Type" "contains" "text/html"

Теперь это позволит вам фильтровать электронные письма, отправленные в HTML.

Чтобы отфильтровать сообщения для учетной записи imap, необходимо настроить учетную запись для автономного использования.

Чтобы настроить учетные записи для автономного использования:

  • Перейдите в настройки учетной записи> Автономно и дисковое пространство.
  • Установите флажок Сделать сообщения в моей папке входящих сообщений, когда я работаю в автономном режиме.
  • Затем выберите специальные папки после нажатия Выбрать папки для автономного использования.

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .