bgERP.com

Рутиране (разпределение) на имейлите


Едно от важните предимства на bgERP е подсистемата за разпределяне на входящите имейли в най-съответстващите им папки или нишки.

Моделът на рутиране се базира на 7 предварително дефинирани системни правила плюс опция за създаване на т.нар. потребителски правила.

Ръчно задаване на правила за рутиране на имейли (потребителски правила)

Всяко потребителско правило дефинира шаблон за входящо писмо и действие, което да бъде изпълнено когато входящо писмо отговаря на шаблона. Това филтриране на входящата поща се изпълнява точно след опита за рутиране на писмото по номер на нишка (зададен в събджекта на писмото).

Шаблоните се задават за полетата:
  • изпращач;
  • събджект; и
  • текст на писмото.

     
Допуска се използването на заместващи символи: % - произволна последователност от нула или повече символи, и _ - произволен символ. Шаблоните не зависят от големи и малки букви (case insensitive).

Действието, при разпознаване на шаблон може да е едно от:
  • по имейл - това действие подменя реалния изпращач на писмото с първия имейл адрес, намерен някъде вътре в събджекта или текста;
  • в папка - писмата, отговарящи на шаблона, попадат директно в папката, зададена в правилото;
  • спам - писмата, отговарящи на шаблона, се маркират като спам.

     
Три от системните, както и потребителските правила, са универсални - т.е. участват в рутирането на всяко едно получено писмо, докато останалите четири се прилагат в зависимост от това, дали имейл адреса (пощенската кутия) до който са адресирани писмата в bgERP е дефиниран като общ (екипен) или персонален:
  • общ (събирателен) - такива са кутиите, чиито имейл адреси съвпадат с имейл адреса на събирателните и корпоративната пощенски сметки в системата - т.е. на всяка събирателна или корпоративна сметка в една инсталация на bgERP отговаря точно една обща кутия (имейл адрес) - например team [аt] example.com или office [аt] firma.bg; или
  • персонален (конкретен, самостоятелен) - такива са всички останали пощенски кутии (имейл адреси) в конкретната инсталация на bgERP - а именно: всички кутии към самостоятелни пощенски сметки, както и всички кутии към събирателните и корпоративната пощенски сметки в системата, чиито имейл адреси обаче НЕ съвпадат с (т.е. са различни от) имейл адреса на сметката, към която са дефинирани - например user20 [аt] example.com, user25 [аt] example.com или пък vasheto.ime [аt] firma.bg, imeto.na.kolegata.vi [аt] firma.bg и т.н.

     
Системата анализира всяко новопостъпило писмо, като започвайки от правилото с най-висок приоритет (правило № 1) и потребителските правила, се опитва да приложи последователно съответната част (според вида на кутията) от правилата от 1 до 7. Ако съответното правило е неприложимо, се преминава към следващото. Когато дадено правило сработи, системата го изпълнява, приключва с рутирането на това писмо и продължава със следващото.

Заложените към момента в bgERP правила (включително опцията за потребителски такива), подредени според техния приоритет и възможните сценарии (потоци) на рутиране в зависимост от вида на кутията, до която са адресирани писмата, са следните:

1. tread № (номер на нишка) - ако в subject-а или съдържанието на писмото се съдържа номер на нишка в специфичния за bgERP формат (знак "#", следван от 1 до 3 латински букви (представляващи код на вида на първия документ в нишката), едно или повече числa (поредният номер на този документ) и още три букви (генерирани на случаен принцип и гарантиращи уникалността на полученият номер на нишка)), писмото се разпределя в тази нишка;
Потребителски правила - при съвпадение на писмото с дефиниран в потребителско правило Шаблон, писмото се обработва съгласно избраното в правилото Действие:
- по имейл - подменя се адреса на изпращача на писмото с имейл адрес, намерен в събджекта или текста му, след което рутирането на така промененото писмо продължава по стандартния ред;
- в папка - писмата, отговарящи на шаблона се разпределят в папката, зададена в правилото;
- спам - писмата, отговарящи на шаблона се маркират като спам.
!!! Ако никое от тези две общи и с най-голям приоритет правила не сработи, системата разделя процеса на рутиране на два потока:
А. Писмото е до персонален адрес - например писмо
от: contragent@example.com -
до: user@bgerp.com
Б. Писмото е до общ (екипен) адрес - например писмо
от: contragent@example.com -
до: team@bgerp.com
2. from->to (от: -> до:) - писмото се разпределя в папката, в която се намира последното (най-новото) писмо изпратено от същия изпращач и адресирано до същия получател; това дава възможност дадена кореспонденция да бъде пренасочена към нова папка само чрез прехвърляне на последното получено писмо в нея; 3. from (от: изпращач) - писмото се разпределя в папката, в която се намира последното (най-новото) писмо получено от същия изпращач; ако такова липсва - т.е. това е първото писмо от съответния изпращач, се прави проверка, и ако писмото е от адрес - включен във визитка на Фирма или Лице от модул ВИЗИТНИК, се форсира (създава) папка (ако такава все още не съществува) на фирмата / лицето (ако то не е представител на фирма, или адресът е личен) и писмото се разпределя в нея като начало на нишка;
4. spam (спам) - системата проверява, дали полученото писмо не е спам, прилагайки изключително строги правила за филтриране (за разлика от доста либералния и стандартен спам филтър още на входа), и ако писмото бъде обявено за спам, то не се рутира;
5. domain (от домейн) - писмото се разпределя в папката, в която се намира последното писмо, изпратено от домейна на изпращача на текущото писмо; ако такова липсва - т.е. това е първото писмо от този домейн, се прави проверка, и ако той се споменава в запис от Визитника, писмото се разпределя в папката на визитката, в която домейнът е бил цитиран за първи път (а не примерно в по-стара такава, в която домейна, е добавен по-скоро); от правилото се изключват всички писма, идващи от публични e-mail домейни (gmail.com, abv.bg, yahoo.com ...), списъкът на които се обогатява непрекъснато, в момента в който се обогатява и списъка на частните e-mail домейни;
6. country (от държава) - ако държавата, от която е изпратено писмото, може да бъде надеждно и еднозначно определена, писмото се разпределя в специална папка "Несортирани - име на държавата", предназначена за несортираната поща, пристигаща от тази държава;
7. to (до получател/пощенска кутия) - писмото се разпределя в папката на конкретния получател или на общата (екипна) пощенска кутия, до когото / която е адресирано;

Описан накратко, процесът на рутиране следва проста, дефинирана от описаните по-горе правила, логика:

А. Получено е писмо до персонален имейл адрес (т.е. писмо от: contragent [аt] example.com - до: user [аt] bgerp.com):

1. Проверява се дали писмото съдържа номер на нишка (tread №):
  • ако "да" - писмото се сортира в съответната нишка и процесът приключва;
  • ако "не":
2. Проверява се дали писмото отговаря на шаблон от дефинираните потребителски правила:
  • ако "да" и е избрано действие В папка - писмото се разпределя в папката, зададена в правилото и процесът приключва;
  • ако "да" и е избрано действие Спам - писмото се маркира като спам;
  • ако "да" и е избрано действие По имейл - адреса на изпращача на писмото се подменя с имейл адрес, намерен в събджекта или текста му, след което рутирането на така промененото писмо продължава по-нататък по стандартния ред;
  • ако "не":
3. Проверява се дали в системата има вече писмо от същия contragent (изпращач) и до същия user (получател) (from->to):
  • ако такова бъде намерено - писмото се сортира в папката, в която в момента се намира последното писмо, отговарящо на горното условие и процесът приключва;
  • ако такова НЕ бъде намерено:
4. Проверява се, дали писмото не е спам (spam):
  • ако е - писмото не се сортира и процесът приключва;
  • ако НЕ е:
5. Т.е. ако това е първото писмо от този contragent до този user (to) - писмото се записва в папката на съответния потребител, с което процесът приключва окончателно.

и вторият възможен сценарий:

Б. Получено е писмо до общ (екипен, групов) имейл адрес (т.е. писмо от: contragent [аt] example.com - до: team [аt] bgerp.com):
 
1. Проверява се дали писмото съдържа номер на нишка (tread №):
  • ако "да" - писмото се сортира в съответната нишка и процесът приключва;
  • ако "не":
2. Проверява се дали писмото отговаря на шаблон от дефинираните потребителски правила:
  • ако "да" и е избрано действие В папка - писмото се разпределя в папката, зададена в правилото и процесът приключва;
  • ако "да" и е избрано действие Спам - писмото се маркира като спам;
  • ако "да" и е избрано действие По имейл - адреса на изпращача на писмото се подменя с имейл адрес, намерен в събджекта или текста му, след което рутирането на така промененото писмо продължава по-нататък по стандартния ред;
  • ако "не":
3. Проверява се дали в системата има вече писмо от същия contragent (изпращач) (from):
  • ако бъде намерено такова - писмото се сортира в папката, в която в момента се намира последното писмо, отговарящо на горното условие и процесът приключва;
  • ако НЕ бъде намерено такова - т.е. това е първото писмо от съответния contragent, то се прави проверка, и ако писмото е от адрес, който е включен във визитка на Фирма или Лице от модул ВИЗИТНИК на bgERP, се форсира (създава) папка (ако такава все още не съществува) на фирмата/лицето (ако то не е представител на фирма, или адресът е личен) и писмото се записва в нея като начало на нишка, с което процесът приключва;
  • ако НЕ бъдат намерени такова писмо и такава визитка:
4. Проверява се, дали писмото не е спам (spam):
  • ако е - писмото не се сортира и процесът приключва;
  • ако НЕ е:
5. Проверява се дали в системата има вече писмо, изпратено от същия домейн (правилото не се прилага за писма, идващи от публични e-mail домейни (gmail.com, abv.bg, yahoo.com ...), списъка на които се обогатява непрекъснато, в момента в който се обогатява и списъка на частните e-mail домейни) (domain):
  • ако бъде намерено писмо от същия домейн - писмото се сортира в папката, в която в момента се намира последното писмо от този домейн и процесът приключва;
  • ако НЕ бъде намерено такова - т.е. това е първото писмо от този домейн, се прави проверка, и ако той се споменава в запис от Визитника, писмото се разпределя в папката на визитката, в която домейнът е бил цитиран за първи път (а не примерно в по-стара такава, в която домейна, е добавен по-скоро), с което процесът приключва;
  • ако НЕ бъдат намерени такова писмо и такава визитка:
6. Проверява се, дали може надеждно и еднозначно да се определи държавата, от която е изпратено писмото (country):
  • ако може - писмото се разпределя в специална папка: "Несортирани - _име на държавата_", предназначена за несортираната поща, пристигаща от тази държава, и процесът приключва;
  • ако НЕ може:
7. Т.е. не се задейства нито едно от горните правила (to) - писмото се записва в папката на съответната входяща обща (екипна) пощенска кутия, с което процесът приключва окончателно.