Regex, чтобы иметь возможность фильтровать подделку имени контакта - PullRequest
0 голосов
/ 01 февраля 2019

Моя компания подверглась атаке со стороны некоторых фишеров, которые подделывают контактное имя наших руководителей в заголовке from, однако, поскольку у нас есть SPF и DKIM, они не могут подделать его фактический адрес электронной почты, в противном случае он будет заблокирован.Поэтому заголовок FROM, который они отправляют:

John Doe

Я бы хотел иметь возможность фильтровать электронные письма, содержащие имя John Doe, но не содержащие фактический адрес электронной почты моего генерального директора,johndoe@mycompany.com.Возможно ли это с помощью регулярных выражений?

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

John Doe <johndoe@mycompany.com>           <-- do not match this
John Doe <spoofer@validemailaddress.com>   <-- match this
John Doe <asdf@aasdf.com>                  <-- match this

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

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Что вы можете сделать, это сопоставить то, что вы не хотите, и записать в группу то, что вы хотите сохранить, используя чередование .

Действительный адрес электронной почты находится в первом группа захвата .

Это будет соответствовать:

John Doe <johndoe@mycompany\.com>|(John Doe <\S+@\S+>)
  • John Doe <johndoe@mycompany\.com> Совпадение
  • | Или
  • (John Doe <\S+\S+>) Захват в первой группе захвата John Doe, за которым следует шаблон, похожий на электронную почту, соответствующий 1+ непробельным символам \S+ и @ и снова 1+ непробельным символам

Regex demo

0 голосов
/ 01 февраля 2019

Это может работать для вас.

((John Doe\s?)(<john.?doe|<\w+)@(?!(mycompany.com)).*>)

Это позволяет использовать адреса электронной почты с потенциальным символом между именем и фамилией, например, john_doe@whwhatmail.com и т. Д.

Это будетисключить реальный адрес электронной почты вашего босса.Вы можете проверить здесь:
https://regex101.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...