Outgoing mail - правила за филтриране
Съдържание
Outgoing mail ни предоставя достъп до интерфейси за създаване на персонализирани правила за филтриране на входящи съобщения на базата на регулярни изрази (regular expressions, regex).
В статията ще покажем как може да създаваме и управляваме правилата за филтриране на входящи съобщения и как може да импортираме и експортираме правила в CSV формат.
Не препоръчваме използването на правила за филтриране без познания за работа с регулярни изрази (regular expressions, regex), тъй като неправилното им използване може да доведе до нежелано блокиране на легитимни съобщения и поток от фалшиви предупреждения (false positives).
Препоръчваме използването на онлайн инструменти (като https://regex101.com/
, https://www.regextester.com/
) за проверка на регулярни изрази (regex), за да се прилагат в Outgoing mail само правила с коректен синтаксис.
Правилата за филтриране се съдържат в два идентични интерфейса - Incoming Whitelist Filtering Rules (одобрени правила за филтриране на входяща поща) и Incoming Blacklist Filtering Rules (блокиращи правила за филтриране на входяща поща), но действат по напълно различни начини.
Incoming Whitelist Filtering Rules разрешават доставянето на съобщение, което съвпада с правило за филтриране, докато Incoming Blacklist Filtering Rules блокират получаването на съобщение, което отговаря на активирано regex правило. Затова трябва да внимаваме в кой интерфейс се намираме когато създаваме regex правила.
Достъп и настройки на Incoming filtering rules
За да достъпим посочените инструменти в контролния панел на ниво домейн избираме в главното меню Incoming - Protection Settings > Whitelist filtering rules или Incoming - Protection Settings > Blacklist filtering rules:
или кликаме една от маркираните икони в таблото:
Зарежда се интерфейсът Incoming (whitelist/blacklist) filtering rules:
Интерфейсите с правилата за филтриране на входящата поща съдържат следните раздели:
- Domain Rules (правила за домейна) - правила, които се прилагат за конкретен домейн. В този раздел може да добавяме нови правила за филтриране;
- Admin Rules (правила за администратор) - правила, които се прилагат за всички домейни, по преценка на системния администратор;
- Default Rules (правила по подразбиране) - правила по подразбиране, които се прилагат за всички домейни, използващи настройки по подразбиране;
- Global Rules (глобални правилa) - правила, които се прилагат за всички домейни, независимо от настройките по подразбиране;
Всички съществуващи правила се записват в таблица.
Следващото меню ни дава достъп до опции за добавяне на правило, импортиране и експортиране на правила в CSV формат:
При кликане на Export rules as CSV автоматично се генерира .csv
файл, който се записва на нашия компютър и съдържа следната информация (ако има записано поне едно правило):
При кликане на Import rules from CSV се зарежда прозорец, в който кликаме бутона Select file и навигираме до .csv
файла:
Ако имаме съмнение относно коректния синтаксис на информацията във файла може да кликнем бутона CSV file structure и да видим примерен синтаксис. Връщаме се в предишния прозорец през бутона Go back:
Кликаме бутона Import file за да качим файла на сървъра и получаваме потвърждение за успешно импортиране:
Информацията от файла се записва в таблицата:
Ако създадем голям брой правила имаме достъп до познатата функционалност Query Rules, чрез която може да сортираме резултатите в таблицата по различни признаци в полетата атрибути (Regular expression) и логически оператори (contains), както и ключови думи (safe) в третото поле.
Припомняме, че на различни атрибути съответстват различни логически оператори. За да видим резултата кликаме синия бутон със символ лупа:
Добавяне на regex правило за филтриране
Кликаме бутона +Add Rule за да се зареди панел с настройки:
В полето Rule name въвеждаме име на правилото за филтриране.
В полето Priority (приоритет) въвеждаме число, което представлява приоритета на правилото. Правилата се оценяват по приоритет в посока от най-малкото до най-голямото число, докато не се открие съвпадение или се проверят всички правила.
Важно: Всички whitelist правила се проверяват преди blacklist правилата.
Въвеждаме регулярния израз за правилото в полето Regular expression. Панелът Cheatsheet вдясно на страницата ни дава достъп до примери за това как да създадем нашето regex правило.
В менюто Match (съвпадение) избираме елемент от писмото, за който търсим съвпадение. Налични са следните опции (при избиране на някои опции се отварят допълнителни полета, които сме описали по-долу):
- Header - Header name;
- Raw message;
- Message body - Content type;
- HELO/EHLO;
- Recipient;
- Sender;
- Sender (verified);
- Sender IP;
- Sender Hostname;
- URL;
- Language - Automatic or specified;
- Location - Location type;
- Attachment Type;
- Attachment Name;
- Attachment Type (auto-detect);
- Message Type;
В допълнителните полета, записани срещу съответните опции въвеждаме:
- Header name (Header) - може да ограничим проверката до конкретен хедър, като може да ползваме регулярен израз;
- Content type (Message body) - може да ограничим проверката до конкретни части на съобщението, например
text/plain
илиtext/.*
, може да ползваме регулярен израз; - Automatic or specified (Language) - по подразбиране езиковите съвпадения ще се извършват срещу автоматично откриване на език и когато подателят посочи езика. За да се търси съвпадение само когато подателя посочи, използваме 'specified', а само за автоматично откриване - използваме 'automatic'.
- Location type (Location) - Може да определим кой тип местоположение да съответства; това може да е регулярен израз. Валидните стойности са
city, continent, country, country_iso (ISO 3166-1 alpha code), represented_country, registered country, latitude, or longitude
;
В полето Flags въвеждаме някой от следните налични флагове:
- i (ignore case) - игнориране регистъра на шрифта (не прави разлика между главни и малки букви);
- m (^ and $ match start and end of line) - символите съвпадат с началото и края на реда;
- s (. matches newline) - съвпада с нов ред;
- x (allow spaces and comments) - разрешава интервали и коментари;
Кликаме бутона Save за да запазим правилото. Съобщение ни потвърждава успешното създаване, след което правилото се записва в таблицата:
Управление на правилата за филтриране
При кликане на стрелката срещу всяко правило в таблицата се зарежда меню със следните опции:
Редактиране на правило за филтриране
При избиране на Edit от менюто се отваря прозорец Edit filtering rule, в който може да редактираме всяка настройка и да запазим новите настройки на правилото като кликнем бутона Save:
Съобщение ни потвърждава успешната редакция на правилото:
Копиране на правило за филтриране
При избиране на Copy rule в менюто се зарежда прозорец Copy filtering rule, в който може да променим всяка настройка (промяната на името на правилото е задължителна) и да запазим копираното правило с новото име като ново правило, което се записва в таблицата:
Ако опитаме да копираме правилото без да променим неговото име ще получим съобщение за грешка:
При успешно копиране на правило за филтриране получаваме съобщение за потвърждение:
и копираното правило се записва в таблицата:
Запазване на правило за филтриране в CSV формат
При избиране на опцията Export as .CSV автоматично се генерира файл в CSV формат, който се записва на нашия компютър и съдържа следната информация за правилото:
"priority","name","rule","check_type"
5,"new rule copy","(?i)^(safecharge\.com)$","s_addr"
Премахване на правило за филтриране
Последната опция в менюто Remove ни позволява да премахнем правило. При кликане се зарежда прозорец, който съдържа името на правилото и бутон Remove за потвърждение на премахването:
Съобщение ни потвърждава успешното премахване:
Ако поставим отметка пред няколко правила в таблицата се зарежда поле Apply to selected, в чието меню имаме достъп до опциите Export as .CSV и Remove:
При избиране на Export as .CSV автоматично се генерира .csv
файл с информацията за маркираните правила, която се записва на нашия компютър.
При избиране на Remove се зарежда прозорец, който съдържа имената на маркираните правила и бутон Remove за потвърждение на премахването:
Копиране на правило от друг раздел
Сега ще покажем как може да актуализираме съществуващи правила от различни раздели. В нашата инсталация на Outgoing mail в раздел Whitelist filtering rules > Global Rules администраторите са създали няколко примерни правила:
Кликаме стрелката срещу името на правилото и в менюто избираме Copy rule (в този раздел нямаме опция за редактиране Edit):
Отваря се прозорецът Copy filtering rule и само кликаме бутона Save. Сега отваряме разделът Domain Rules и виждаме, че правилото е копирано в таблицата и тук вече имаме достъп до опция за редактиране Edit, с помощта на която може да променим правилото:
Създаване на правило за блокиране (blacklist)
Отваряме интерфейсът Incoming blacklist filtering rules и създаваме по показания по-рано начин ново правило със следните настройки:
Правилото се записва в таблицата:
Припомняме, че в началото на статията създадохме whitelist правило (pdf attachments), което разрешава получаването на съобщения с прикачени PDF файлове.
От външна за сървъра публична поща изпратихме към поща в домейна две писма, които съдържаха съответно PDF и DOCX прикачен файл. Както се досещате, писмото с .pdf
файла се получи успешно:
докато писмото с .docx
файла беше отхвърлено със следната грешка (550 Съобщението е отхвърлено от правилата на потребителя):
Системата за създаване на правила за филтриране в Outgoing mail дава възможност за създаване на неограничен брой персонализирани правила в съответствие с нашите умения за работа с регулярни изрази.